diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py index 7e37717f07..36c3f585da 100644 --- a/generator/dawn_json_generator.py +++ b/generator/dawn_json_generator.py @@ -195,6 +195,7 @@ def link_object(obj, types): methods = [make_method(m) for m in obj.json_data.get('methods', [])] obj.methods = [method for method in methods if not is_native_method(method)] + obj.methods.sort(key=lambda method: method.name.canonical_case()) obj.native_methods = [method for method in methods if is_native_method(method)] def link_structure(struct, types): @@ -439,7 +440,7 @@ def as_wireType(typ): return as_cppType(typ.name) def cpp_native_methods(types, typ): - return typ.methods + typ.native_methods + return sorted(typ.methods + typ.native_methods, key=lambda method: method.name.canonical_case()) def c_native_methods(types, typ): return cpp_native_methods(types, typ) + [ diff --git a/generator/templates/api.h b/generator/templates/api.h index 4a80cb4bec..1b0e9cd8be 100644 --- a/generator/templates/api.h +++ b/generator/templates/api.h @@ -28,7 +28,7 @@ const uint64_t DAWN_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX {% endfor %} {% for type in by_category["enum"] + by_category["bitmask"] %} - typedef enum { + typedef enum {{as_cType(type.name)}} { {% for value in type.values %} {{as_cEnum(type.name, value.name)}} = 0x{{format(value.value, "08X")}}, {% endfor %} @@ -40,7 +40,7 @@ const uint64_t DAWN_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX {% for type in by_category["structure"] %} typedef struct {{as_cType(type.name)}} { {% if type.extensible %} - const void* nextInChain; + void const * nextInChain; {% endif %} {% for member in type.members %} {{as_annotated_cType(member)}}; @@ -49,6 +49,10 @@ const uint64_t DAWN_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX {% endfor %} +#ifdef __cplusplus +extern "C" { +#endif + // Custom types depending on the target language typedef void (*DawnErrorCallback)(DawnErrorType type, const char* message, void* userdata); typedef void (*DawnBufferCreateMappedCallback)(DawnBufferMapAsyncStatus status, @@ -64,9 +68,7 @@ typedef void (*DawnBufferMapWriteCallback)(DawnBufferMapAsyncStatus status, void* userdata); typedef void (*DawnFenceOnCompletionCallback)(DawnFenceCompletionStatus status, void* userdata); -#ifdef __cplusplus -extern "C" { -#endif +#if !defined(DAWN_SKIP_PROCS) {% for type in by_category["object"] %} // Procs of {{type.name.CamelCase()}} @@ -80,6 +82,7 @@ extern "C" { {% endfor %} {% endfor %} +#endif // !defined(DAWN_SKIP_PROCS) struct DawnProcTable_s { {% for type in by_category["object"] %} @@ -93,6 +96,8 @@ typedef struct DawnProcTable_s DawnProcTable; // Stuff below is for convenience and will forward calls to a static DawnProcTable. +#if !defined(DAWN_SKIP_DECLARATIONS) + // Set which DawnProcTable will be used DAWN_EXPORT void dawnSetProcs(const DawnProcTable* procs); @@ -108,6 +113,7 @@ DAWN_EXPORT void dawnSetProcs(const DawnProcTable* procs); {% endfor %} {% endfor %} +#endif // !defined(DAWN_SKIP_DECLARATIONS) #ifdef __cplusplus } // extern "C" diff --git a/generator/templates/apicpp.cpp b/generator/templates/apicpp.cpp index 5b61b2fd4c..ad468d175c 100644 --- a/generator/templates/apicpp.cpp +++ b/generator/templates/apicpp.cpp @@ -29,7 +29,6 @@ namespace dawn { {% endfor %} - {% for type in by_category["structure"] %} {% set CppType = as_cppType(type.name) %} {% set CType = as_cType(type.name) %}