mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-20 10:25:28 +00:00
Autogenerate all of the wire callback mocks
This makes it less manual code and less error prone to add new callbacks to the wire. Bug: dawn:384 Change-Id: I8547af2dba8289d1badd41e53dd732c776fb5d06 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35600 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
5ca12a825c
commit
8d38c0164c
@@ -18,7 +18,7 @@ using namespace testing;
|
||||
|
||||
namespace {
|
||||
{% for type in by_category["object"] %}
|
||||
{% for method in c_methods(type) if len(method.arguments) < 10 %}
|
||||
{% for method in c_methods(type) %}
|
||||
{{as_cType(method.return_type.name)}} Forward{{as_MethodSuffix(type.name, method.name)}}(
|
||||
{{-as_cType(type.name)}} self
|
||||
{%- for arg in method.arguments -%}
|
||||
@@ -44,124 +44,52 @@ void ProcTableAsClass::GetProcTableAndDevice(DawnProcTable* table, WGPUDevice* d
|
||||
*device = GetNewDevice();
|
||||
|
||||
{% for type in by_category["object"] %}
|
||||
{% for method in c_methods(type) if len(method.arguments) < 10 %}
|
||||
{% for method in c_methods(type) %}
|
||||
table->{{as_varName(type.name, method.name)}} = reinterpret_cast<{{as_cProc(type.name, method.name)}}>(Forward{{as_MethodSuffix(type.name, method.name)}});
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
void ProcTableAsClass::DeviceSetUncapturedErrorCallback(WGPUDevice self,
|
||||
WGPUErrorCallback callback,
|
||||
void* userdata) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(self);
|
||||
object->deviceErrorCallback = callback;
|
||||
object->userdata = userdata;
|
||||
{% for type in by_category["object"] %}
|
||||
{% for method in type.methods if has_callback_arguments(method) %}
|
||||
{% set Suffix = as_MethodSuffix(type.name, method.name) %}
|
||||
|
||||
OnDeviceSetUncapturedErrorCallback(self, callback, userdata);
|
||||
}
|
||||
{{as_cType(method.return_type.name)}} ProcTableAsClass::{{Suffix}}(
|
||||
{{-as_cType(type.name)}} {{as_varName(type.name)}}
|
||||
{%- for arg in method.arguments -%}
|
||||
, {{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
) {
|
||||
ProcTableAsClass::Object* object = reinterpret_cast<ProcTableAsClass::Object*>({{as_varName(type.name)}});
|
||||
{% for callback_arg in method.arguments if callback_arg.type.category == 'callback' %}
|
||||
object->m{{as_MethodSuffix(type.name, method.name)}}Callback = {{as_varName(callback_arg.name)}};
|
||||
{% endfor %}
|
||||
object->userdata = userdata;
|
||||
return On{{as_MethodSuffix(type.name, method.name)}}(
|
||||
{{-as_varName(type.name)}}
|
||||
{%- for arg in method.arguments -%}
|
||||
, {{as_varName(arg.name)}}
|
||||
{%- endfor -%}
|
||||
);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::DeviceSetDeviceLostCallback(WGPUDevice self,
|
||||
WGPUDeviceLostCallback callback,
|
||||
void* userdata) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(self);
|
||||
object->deviceLostCallback = callback;
|
||||
object->userdata = userdata;
|
||||
|
||||
OnDeviceSetDeviceLostCallback(self, callback, userdata);
|
||||
}
|
||||
|
||||
bool ProcTableAsClass::DevicePopErrorScope(WGPUDevice self,
|
||||
WGPUErrorCallback callback,
|
||||
void* userdata) {
|
||||
return OnDevicePopErrorScopeCallback(self, callback, userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::BufferMapAsync(WGPUBuffer self,
|
||||
WGPUMapModeFlags mode,
|
||||
size_t offset,
|
||||
size_t size,
|
||||
WGPUBufferMapCallback callback,
|
||||
void* userdata) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(self);
|
||||
object->mapAsyncCallback = callback;
|
||||
object->userdata = userdata;
|
||||
|
||||
OnBufferMapAsyncCallback(self, callback, userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::FenceOnCompletion(WGPUFence self,
|
||||
uint64_t value,
|
||||
WGPUFenceOnCompletionCallback callback,
|
||||
void* userdata) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(self);
|
||||
object->fenceOnCompletionCallback = callback;
|
||||
object->userdata = userdata;
|
||||
|
||||
OnFenceOnCompletionCallback(self, value, callback, userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::DeviceCreateReadyComputePipeline(
|
||||
WGPUDevice self,
|
||||
WGPUComputePipelineDescriptor const * descriptor,
|
||||
WGPUCreateReadyComputePipelineCallback callback,
|
||||
void* userdata) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(self);
|
||||
object->createReadyComputePipelineCallback = callback;
|
||||
object->userdata = userdata;
|
||||
|
||||
OnDeviceCreateReadyComputePipelineCallback(self, descriptor, callback, userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::DeviceCreateReadyRenderPipeline(
|
||||
WGPUDevice self,
|
||||
WGPURenderPipelineDescriptor const * descriptor,
|
||||
WGPUCreateReadyRenderPipelineCallback callback,
|
||||
void* userdata) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(self);
|
||||
object->createReadyRenderPipelineCallback = callback;
|
||||
object->userdata = userdata;
|
||||
|
||||
OnDeviceCreateReadyRenderPipelineCallback(self, descriptor, callback, userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::CallDeviceErrorCallback(WGPUDevice device,
|
||||
WGPUErrorType type,
|
||||
const char* message) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(device);
|
||||
object->deviceErrorCallback(type, message, object->userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::CallDeviceLostCallback(WGPUDevice device, const char* message) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(device);
|
||||
object->deviceLostCallback(message, object->userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::CallMapAsyncCallback(WGPUBuffer buffer, WGPUBufferMapAsyncStatus status) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(buffer);
|
||||
object->mapAsyncCallback(status, object->userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::CallFenceOnCompletionCallback(WGPUFence fence,
|
||||
WGPUFenceCompletionStatus status) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(fence);
|
||||
object->fenceOnCompletionCallback(status, object->userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::CallDeviceCreateReadyComputePipelineCallback(WGPUDevice device,
|
||||
WGPUCreateReadyPipelineStatus status,
|
||||
WGPUComputePipeline pipeline,
|
||||
const char* message) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(device);
|
||||
object->createReadyComputePipelineCallback(status, pipeline, message, object->userdata);
|
||||
}
|
||||
|
||||
void ProcTableAsClass::CallDeviceCreateReadyRenderPipelineCallback(WGPUDevice device,
|
||||
WGPUCreateReadyPipelineStatus status,
|
||||
WGPURenderPipeline pipeline,
|
||||
const char* message) {
|
||||
auto object = reinterpret_cast<ProcTableAsClass::Object*>(device);
|
||||
object->createReadyRenderPipelineCallback(status, pipeline, message, object->userdata);
|
||||
}
|
||||
{% for callback_arg in method.arguments if callback_arg.type.category == 'callback' %}
|
||||
void ProcTableAsClass::Call{{Suffix}}Callback(
|
||||
{{-as_cType(type.name)}} {{as_varName(type.name)}}
|
||||
{%- for arg in callback_arg.type.arguments -%}
|
||||
{%- if not loop.last -%}, {{as_annotated_cType(arg)}}{%- endif -%}
|
||||
{%- endfor -%}
|
||||
) {
|
||||
ProcTableAsClass::Object* object = reinterpret_cast<ProcTableAsClass::Object*>({{as_varName(type.name)}});
|
||||
object->m{{Suffix}}Callback(
|
||||
{%- for arg in callback_arg.type.arguments -%}
|
||||
{%- if not loop.last -%}{{as_varName(arg.name)}}, {% endif -%}
|
||||
{%- endfor -%}
|
||||
object->userdata);
|
||||
}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% for type in by_category["object"] %}
|
||||
{{as_cType(type.name)}} ProcTableAsClass::GetNew{{type.name.CamelCase()}}() {
|
||||
|
||||
Reference in New Issue
Block a user