| #include <cstring> | |
| #include <webgpu/webgpu.h> | |
| namespace { | |
| // Make a runtime-constructed value of T in a way that can't be optimized away. | |
| template<typename T> | |
| T val() { | |
| T value{}; | |
| static volatile bool x; | |
| if (x) { | |
| char nonzero = 123; | |
| memcpy(&value, &nonzero, 1); | |
| } | |
| return value; | |
| } | |
| } | |
| {% macro render_dummy_args(this, args) %} | |
| {%- if this %} | |
| val<{{ as_cType(this.name) }}>() | |
| {{- ", " if args }} | |
| {%- endif %} | |
| {%- for arg in args -%} | |
| val<{{ decorate(as_cType(arg.type.name), arg) }}>() | |
| {{- ", " if not loop.last }} | |
| {%- endfor %} | |
| {%- endmacro -%} | |
| int main() { | |
| {% for function in by_category["function"] %} | |
| {{as_cMethod(None, function.name)}}( | |
| {{- render_dummy_args(None, function.arguments) -}} | |
| ); | |
| {% endfor %} | |
| {% for type in by_category["object"] if len(c_methods(type)) > 0 %} | |
| {% for method in c_methods(type) %} | |
| {{as_cMethod(type.name, method.name)}}( | |
| {{- render_dummy_args(type, method.arguments) -}} | |
| ); | |
| {% endfor %} | |
| {% endfor %} | |
| } |