webgpu.h: Add overridable (default empty) attributes to all types
See https://github.com/webgpu-native/webgpu-headers/issues/179 Also changes WGPU_NULLABLE instead of /* nullable */ and make a couple formatting fixes. Bug: None Change-Id: Ieb4315cddd3c806144892221fba11888171f072f Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/133102 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
parent
47245bc33f
commit
8d45d44905
|
@ -32,37 +32,53 @@
|
|||
#ifndef {{metadata.api.upper()}}_H_
|
||||
#define {{metadata.api.upper()}}_H_
|
||||
|
||||
{% set c_prefix = metadata.c_prefix %}
|
||||
#if defined({{c_prefix}}_SHARED_LIBRARY)
|
||||
{% set API = metadata.c_prefix %}
|
||||
#if defined({{API}}_SHARED_LIBRARY)
|
||||
# if defined(_WIN32)
|
||||
# if defined({{c_prefix}}_IMPLEMENTATION)
|
||||
# define {{c_prefix}}_EXPORT __declspec(dllexport)
|
||||
# if defined({{API}}_IMPLEMENTATION)
|
||||
# define {{API}}_EXPORT __declspec(dllexport)
|
||||
# else
|
||||
# define {{c_prefix}}_EXPORT __declspec(dllimport)
|
||||
# define {{API}}_EXPORT __declspec(dllimport)
|
||||
# endif
|
||||
# else // defined(_WIN32)
|
||||
# if defined({{c_prefix}}_IMPLEMENTATION)
|
||||
# define {{c_prefix}}_EXPORT __attribute__((visibility("default")))
|
||||
# if defined({{API}}_IMPLEMENTATION)
|
||||
# define {{API}}_EXPORT __attribute__((visibility("default")))
|
||||
# else
|
||||
# define {{c_prefix}}_EXPORT
|
||||
# define {{API}}_EXPORT
|
||||
# endif
|
||||
# endif // defined(_WIN32)
|
||||
#else // defined({{c_prefix}}_SHARED_LIBRARY)
|
||||
# define {{c_prefix}}_EXPORT
|
||||
#endif // defined({{c_prefix}}_SHARED_LIBRARY)
|
||||
#else // defined({{API}}_SHARED_LIBRARY)
|
||||
# define {{API}}_EXPORT
|
||||
#endif // defined({{API}}_SHARED_LIBRARY)
|
||||
|
||||
#if !defined({{API}}_OBJECT_ATTRIBUTE)
|
||||
#define {{API}}_OBJECT_ATTRIBUTE
|
||||
#endif
|
||||
#if !defined({{API}}_ENUM_ATTRIBUTE)
|
||||
#define {{API}}_ENUM_ATTRIBUTE
|
||||
#endif
|
||||
#if !defined({{API}}_STRUCTURE_ATTRIBUTE)
|
||||
#define {{API}}_STRUCTURE_ATTRIBUTE
|
||||
#endif
|
||||
#if !defined({{API}}_FUNCTION_ATTRIBUTE)
|
||||
#define {{API}}_FUNCTION_ATTRIBUTE
|
||||
#endif
|
||||
#if !defined({{API}}_NULLABLE)
|
||||
#define {{API}}_NULLABLE
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
{% for constant in by_category["constant"] %}
|
||||
#define {{c_prefix}}_{{constant.name.SNAKE_CASE()}} {{constant.value}}
|
||||
#define {{API}}_{{constant.name.SNAKE_CASE()}} {{constant.value}}
|
||||
{% endfor %}
|
||||
|
||||
typedef uint32_t {{c_prefix}}Flags;
|
||||
typedef uint32_t {{API}}Flags;
|
||||
|
||||
{% for type in by_category["object"] %}
|
||||
typedef struct {{as_cType(type.name)}}Impl* {{as_cType(type.name)}};
|
||||
typedef struct {{as_cType(type.name)}}Impl* {{as_cType(type.name)}} {{API}}_OBJECT_ATTRIBUTE;
|
||||
{% endfor %}
|
||||
|
||||
// Structure forward declarations
|
||||
|
@ -76,34 +92,34 @@ typedef uint32_t {{c_prefix}}Flags;
|
|||
{{as_cEnum(type.name, value.name)}} = 0x{{format(value.value, "08X")}},
|
||||
{% endfor %}
|
||||
{{as_cEnum(type.name, Name("force32"))}} = 0x7FFFFFFF
|
||||
} {{as_cType(type.name)}};
|
||||
} {{as_cType(type.name)}} {{API}}_ENUM_ATTRIBUTE;
|
||||
{% if type.category == "bitmask" %}
|
||||
typedef {{c_prefix}}Flags {{as_cType(type.name)}}Flags;
|
||||
typedef {{API}}Flags {{as_cType(type.name)}}Flags {{API}}_ENUM_ATTRIBUTE;
|
||||
{% endif %}
|
||||
|
||||
{% endfor -%}
|
||||
|
||||
{% for type in by_category["function pointer"] %}
|
||||
typedef {{as_cType(type.return_type.name)}} (*{{as_cType(type.name)}})(
|
||||
{%- if type.arguments == [] -%}
|
||||
void
|
||||
{%- else -%}
|
||||
{%- for arg in type.arguments -%}
|
||||
{% if not loop.first %}, {% endif %}{% if arg.type.category == "structure" %}struct {% endif %}{{as_annotated_cType(arg)}}
|
||||
{% if not loop.first %}, {% endif %}
|
||||
{% if arg.type.category == "structure" %}struct {% endif %}{{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
);
|
||||
) {{API}}_FUNCTION_ATTRIBUTE;
|
||||
{% endfor %}
|
||||
|
||||
typedef struct {{c_prefix}}ChainedStruct {
|
||||
struct {{c_prefix}}ChainedStruct const * next;
|
||||
{{c_prefix}}SType sType;
|
||||
} {{c_prefix}}ChainedStruct;
|
||||
typedef struct {{API}}ChainedStruct {
|
||||
struct {{API}}ChainedStruct const * next;
|
||||
{{API}}SType sType;
|
||||
} {{API}}ChainedStruct {{API}}_STRUCTURE_ATTRIBUTE;
|
||||
|
||||
typedef struct {{c_prefix}}ChainedStructOut {
|
||||
struct {{c_prefix}}ChainedStructOut * next;
|
||||
{{c_prefix}}SType sType;
|
||||
} {{c_prefix}}ChainedStructOut;
|
||||
typedef struct {{API}}ChainedStructOut {
|
||||
struct {{API}}ChainedStructOut * next;
|
||||
{{API}}SType sType;
|
||||
} {{API}}ChainedStructOut {{API}}_STRUCTURE_ATTRIBUTE;
|
||||
|
||||
{% for type in by_category["structure"] %}
|
||||
{% for root in type.chain_roots %}
|
||||
|
@ -113,16 +129,19 @@ typedef struct {{c_prefix}}ChainedStructOut {
|
|||
{% set Out = "Out" if type.output else "" %}
|
||||
{% set const = "const " if not type.output else "" %}
|
||||
{% if type.extensible %}
|
||||
{{c_prefix}}ChainedStruct{{Out}} {{const}}* nextInChain;
|
||||
{{API}}ChainedStruct{{Out}} {{const}}* nextInChain;
|
||||
{% endif %}
|
||||
{% if type.chained %}
|
||||
{{c_prefix}}ChainedStruct{{Out}} chain;
|
||||
{{API}}ChainedStruct{{Out}} chain;
|
||||
{% endif %}
|
||||
{% for member in type.members %}
|
||||
{% if member.optional %}
|
||||
{{API}}_NULLABLE {{as_annotated_cType(member)}};
|
||||
{% else %}
|
||||
{{as_annotated_cType(member)}};
|
||||
{%- if member.optional %} // nullable{% endif %}{{""}}
|
||||
{% endif-%}
|
||||
{% endfor %}
|
||||
} {{as_cType(type.name)}};
|
||||
} {{as_cType(type.name)}} {{API}}_STRUCTURE_ATTRIBUTE;
|
||||
|
||||
{% endfor %}
|
||||
{% for typeDef in by_category["typedef"] %}
|
||||
|
@ -135,26 +154,14 @@ typedef struct {{c_prefix}}ChainedStructOut {
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
{% for type in by_category["function pointer"] %}
|
||||
typedef {{as_cType(type.return_type.name)}} (*{{as_cType(type.name)}})(
|
||||
{%- if type.arguments == [] -%}
|
||||
void
|
||||
{%- else -%}
|
||||
{%- for arg in type.arguments -%}
|
||||
{% if not loop.first %}, {% endif %}{{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
);
|
||||
{% endfor %}
|
||||
|
||||
#if !defined({{c_prefix}}_SKIP_PROCS)
|
||||
#if !defined({{API}}_SKIP_PROCS)
|
||||
|
||||
{% for function in by_category["function"] %}
|
||||
typedef {{as_cType(function.return_type.name)}} (*{{as_cProc(None, function.name)}})(
|
||||
{%- for arg in function.arguments -%}
|
||||
{% if not loop.first %}, {% endif %}{{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
);
|
||||
) {{API}}_FUNCTION_ATTRIBUTE;
|
||||
{% endfor %}
|
||||
|
||||
{% for type in by_category["object"] if len(c_methods(type)) > 0 %}
|
||||
|
@ -163,39 +170,41 @@ extern "C" {
|
|||
typedef {{as_cType(method.return_type.name)}} (*{{as_cProc(type.name, method.name)}})(
|
||||
{{-as_cType(type.name)}} {{as_varName(type.name)}}
|
||||
{%- for arg in method.arguments -%}
|
||||
, {{as_annotated_cType(arg)}}
|
||||
{%- if arg.optional %} /* nullable */{% endif %}
|
||||
,{{" "}}
|
||||
{%- if arg.optional %}{{API}}_NULLABLE {% endif -%}
|
||||
{{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
);
|
||||
) {{API}}_FUNCTION_ATTRIBUTE;
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
#endif // !defined({{c_prefix}}_SKIP_PROCS)
|
||||
#endif // !defined({{API}}_SKIP_PROCS)
|
||||
|
||||
#if !defined({{c_prefix}}_SKIP_DECLARATIONS)
|
||||
#if !defined({{API}}_SKIP_DECLARATIONS)
|
||||
|
||||
{% for function in by_category["function"] %}
|
||||
{{c_prefix}}_EXPORT {{as_cType(function.return_type.name)}} {{as_cMethod(None, function.name)}}(
|
||||
{{API}}_EXPORT {{as_cType(function.return_type.name)}} {{as_cMethod(None, function.name)}}(
|
||||
{%- for arg in function.arguments -%}
|
||||
{% if not loop.first %}, {% endif %}{{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
);
|
||||
) {{API}}_FUNCTION_ATTRIBUTE;
|
||||
{% endfor %}
|
||||
|
||||
{% for type in by_category["object"] if len(c_methods(type)) > 0 %}
|
||||
// Methods of {{type.name.CamelCase()}}
|
||||
{% for method in c_methods(type) %}
|
||||
{{c_prefix}}_EXPORT {{as_cType(method.return_type.name)}} {{as_cMethod(type.name, method.name)}}(
|
||||
{{API}}_EXPORT {{as_cType(method.return_type.name)}} {{as_cMethod(type.name, method.name)}}(
|
||||
{{-as_cType(type.name)}} {{as_varName(type.name)}}
|
||||
{%- for arg in method.arguments -%}
|
||||
, {{as_annotated_cType(arg)}}
|
||||
{%- if arg.optional %} /* nullable */{% endif %}
|
||||
,{{" "}}
|
||||
{%- if arg.optional %}{{API}}_NULLABLE {% endif -%}
|
||||
{{as_annotated_cType(arg)}}
|
||||
{%- endfor -%}
|
||||
);
|
||||
) {{API}}_FUNCTION_ATTRIBUTE;
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
#endif // !defined({{c_prefix}}_SKIP_DECLARATIONS)
|
||||
#endif // !defined({{API}}_SKIP_DECLARATIONS)
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
|
Loading…
Reference in New Issue