1
1
{{- MCommentN .Copyright 0}}
2
2
3
- #ifndef {{.Name | ConstantCase}}_H_
4
- #define {{.Name | ConstantCase}}_H_
3
+ #ifndef {{.HeaderName | ConstantCase}}_H_
4
+ #define {{.HeaderName | ConstantCase}}_H_
5
5
6
6
#if defined(WGPU_SHARED_LIBRARY)
7
7
# if defined(_WIN32)
37
37
#define WGPU_NULLABLE
38
38
#endif{{"\n" -}}
39
39
40
- {{if eq .Name "webgpu"}}
40
+ {{- if ne .Name "webgpu"}}
41
+ #if !defined(__WGPU_EXTEND_ENUM)
42
+ #ifdef __cplusplus
43
+ #define __WGPU_EXTEND_ENUM(E, N, V) static const E N = E(V)
44
+ #else
45
+ #define __WGPU_EXTEND_ENUM(E, N, V) static const E N = (E)(V)
46
+ #endif
47
+ #endif // !defined(__WGPU_EXTEND_ENUM)
48
+ {{ end}}
49
+
50
+ {{- if eq .Name "webgpu"}}
41
51
#include <stdint.h>
42
52
#include <stddef.h>
43
53
{{else}}
46
56
47
57
{{- if .Constants}}
48
58
{{- range .Constants}}
49
- {{- MComment .Doc 0}}
50
- #define WGPU_{{.Name | ConstantCase}} ({{.Value | CValue}})
59
+ {{- MComment .Doc 0}}
60
+ #define WGPU_{{.Name | ConstantCase}}{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}} ({{.Value | CValue}})
51
61
{{- end}}
52
62
{{ end}}
53
63
@@ -59,61 +69,51 @@ typedef uint32_t WGPUBool;
59
69
{{- if .Objects}}
60
70
{{- range .Objects}}
61
71
{{- if not .IsStruct}}
62
- typedef struct WGPU{{.Name | PascalCase}}Impl* WGPU{{.Name | PascalCase}} WGPU_OBJECT_ATTRIBUTE;
72
+ typedef struct WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} Impl* WGPU{{.Name | PascalCase}}{{$.ExtSuffix }} WGPU_OBJECT_ATTRIBUTE;
63
73
{{- end}}
64
74
{{- end}}
65
75
{{ end}}
66
76
67
77
{{- if .Structs}}
68
78
// Structure forward declarations
69
79
{{- range .Structs}}
70
- struct WGPU{{.Name | PascalCase}};
80
+ struct WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} ;
71
81
{{- end}}
72
82
{{ end}}
73
83
74
- {{- range $entry := .Enums}}
75
- {{- MComment .Doc 0}}
76
- typedef enum WGPU{{.Name | PascalCase}} {
77
- {{- range $entryIndex, $_ := .Entries}}
78
- {{- MComment .Doc 4}}
79
- {{- $entryValue := 0}}
80
- {{- if eq .Value ""}}
81
- {{- $entryValue = $entryIndex}}
82
- {{- else}}
83
- {{- $entryValue = ParseUint .Value 16}}
84
+ {{- range $enum := .Enums}}
85
+ {{- if .Extended}}
86
+ {{- range $entryIndex, $_ := .Entries}}
87
+ __WGPU_EXTEND_ENUM(WGPU{{$enum.Name | PascalCase}}, WGPU{{$enum.Name | PascalCase}}_{{.Name | PascalCase}}{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}}, {{EnumValue $.EnumPrefix $enum $entryIndex}});
88
+ {{- end}}
89
+ {{- else}}
90
+ {{- MComment .Doc 0}}
91
+ typedef enum WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} {
92
+ {{- range $entryIndex, $_ := .Entries}}
93
+ {{- MComment .Doc 4}}
94
+ WGPU{{$enum.Name | PascalCase}}_{{.Name | PascalCase}}{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}} = {{EnumValue $.EnumPrefix $enum $entryIndex}},
84
95
{{- end}}
85
- WGPU{{$entry.Name | PascalCase}}_{{.Name | PascalCase}} = {{printf "%s%.4X," $.EnumPrefix $entryValue}}
96
+ WGPU{{$enum.Name | PascalCase}}_Force32{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}} = 0x7FFFFFFF
97
+ } WGPU{{$enum.Name | PascalCase}}{{$.ExtSuffix}} WGPU_ENUM_ATTRIBUTE;
86
98
{{- end}}
87
- WGPU{{.Name | PascalCase}}_Force32 = 0x7FFFFFFF
88
- } WGPU{{.Name | PascalCase}} WGPU_ENUM_ATTRIBUTE;
89
99
{{ end}}
90
100
91
- {{- range $entry := .Bitflags}}
92
- {{- MComment .Doc 0}}
93
- typedef enum WGPU{{.Name | PascalCase}} {
94
- {{- range $entryIndex, $_ := .Entries}}
95
- {{- MComment .Doc 4}}
96
- {{- $entryValue := ""}}
97
- {{- $valueCombination := .ValueCombination}}
98
- {{- range $valueIndex, $v := .ValueCombination}}
99
- {{- $v = printf "WGPU%s_%s" ($entry.Name | PascalCase) ($v | PascalCase)}}
100
- {{- if IsLast $valueIndex $valueCombination}}
101
- {{- $entryValue = print $entryValue $v}}
102
- {{- else}}
103
- {{- $entryValue = print $entryValue $v " | "}}
104
- {{- end}}
105
- {{- else}}
106
- {{- if eq .Value ""}}
107
- {{- $entryValue = printf "0x%.8X" (BitFlagValue $entryIndex)}}
108
- {{- else}}
109
- {{- $entryValue = printf "0x%.8X" (ParseUint .Value 64)}}
110
- {{- end}}
101
+ {{- range $bitflag := .Bitflags}}
102
+ {{- if .Extended}}
103
+ {{- range $entryIndex, $_ := .Entries}}
104
+ __WGPU_EXTEND_ENUM(WGPU{{$bitflag.Name | PascalCase}}, WGPU{{$bitflag.Name | PascalCase}}_{{.Name | PascalCase}}{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}}, {{BitflagValue $bitflag $entryIndex}});
111
105
{{- end}}
112
- WGPU{{$entry.Name | PascalCase}}_{{.Name | PascalCase}} = {{$entryValue}},
106
+ {{- else}}
107
+ {{- MComment .Doc 0}}
108
+ typedef enum WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} {
109
+ {{- range $entryIndex, $_ := .Entries}}
110
+ {{- MComment .Doc 4}}
111
+ WGPU{{$bitflag.Name | PascalCase}}_{{.Name | PascalCase}}{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}} = {{BitflagValue $bitflag $entryIndex}},
112
+ {{- end}}
113
+ WGPU{{$bitflag.Name | PascalCase}}_Force32{{if $.ExtSuffix}}_{{$.ExtSuffix}}{{end}} = 0x7FFFFFFF
114
+ } WGPU{{$bitflag.Name | PascalCase}}{{$.ExtSuffix}} WGPU_ENUM_ATTRIBUTE;
115
+ typedef WGPUFlags WGPU{{$bitflag.Name | PascalCase}}Flags{{$.ExtSuffix}} WGPU_ENUM_ATTRIBUTE;
113
116
{{- end}}
114
- WGPU{{.Name | PascalCase}}_Force32 = 0x7FFFFFFF
115
- } WGPU{{.Name | PascalCase}} WGPU_ENUM_ATTRIBUTE;
116
- typedef WGPUFlags WGPU{{.Name | PascalCase}}Flags WGPU_ENUM_ATTRIBUTE;
117
117
{{ end}}
118
118
119
119
{{- if eq .Name "webgpu"}}
@@ -122,15 +122,15 @@ typedef void (*WGPUProc)(void) WGPU_FUNCTION_ATTRIBUTE;
122
122
123
123
{{- range .FunctionTypes}}
124
124
{{- MComment .Doc 0}}
125
- typedef {{FunctionReturns .}} (*WGPU{{.Name | PascalCase}})({{FunctionArgs . nil}}) WGPU_FUNCTION_ATTRIBUTE;
125
+ typedef {{FunctionReturns .}} (*WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} )({{FunctionArgs . nil}}) WGPU_FUNCTION_ATTRIBUTE;
126
126
{{- end}}
127
127
128
128
{{- if .Objects}}
129
129
{{ range $object := .Objects}}
130
130
{{- range $method := .Methods}}
131
131
{{- if .ReturnsAsync}}
132
132
{{- MComment .Doc 0}}
133
- typedef void (*WGPU{{$object.Name | PascalCase}}{{$method.Name | PascalCase}}Callback)({{CallbackArgs .}}) WGPU_FUNCTION_ATTRIBUTE;
133
+ typedef void (*WGPU{{$object.Name | PascalCase}}{{$method.Name | PascalCase}}Callback{{$.ExtSuffix}} )({{CallbackArgs .}}) WGPU_FUNCTION_ATTRIBUTE;
134
134
{{- end}}
135
135
{{- end}}
136
136
{{- end}}
@@ -148,9 +148,9 @@ typedef struct WGPUChainedStructOut {
148
148
} WGPUChainedStructOut WGPU_STRUCTURE_ATTRIBUTE;
149
149
{{ end}}
150
150
151
- {{- range .Structs}}
151
+ {{- range $struct := .Structs}}
152
152
{{- MComment .Doc 0}}
153
- typedef struct WGPU{{.Name | PascalCase}} {
153
+ typedef struct WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} {
154
154
{{- if eq .Type "base_in" }}
155
155
WGPUChainedStruct const * nextInChain;
156
156
{{- else if eq .Type "base_out" }}
@@ -160,17 +160,10 @@ typedef struct WGPU{{.Name | PascalCase}} {
160
160
{{- else if eq .Type "extension_out"}}
161
161
WGPUChainedStructOut chain;
162
162
{{- end}}
163
- {{- range .Members}}
164
- {{- if IsArray .Type}}
165
- size_t {{.Name | CamelCase | Singularize}}Count;
166
- {{- MComment .Doc 4}}
167
- {{ArrayType .Type .Pointer}} {{.Name | CamelCase}};
168
- {{- else}}
169
- {{- MComment .Doc 4}}
170
- {{if .Optional}}WGPU_NULLABLE {{end}}{{CType .Type .Pointer}} {{.Name | CamelCase}};
171
- {{- end}}
163
+ {{- range $memberIndex, $_ := .Members}}
164
+ {{ StructMember $struct $memberIndex}}
172
165
{{- end}}
173
- } WGPU{{.Name | PascalCase}} WGPU_STRUCTURE_ATTRIBUTE;
166
+ } WGPU{{.Name | PascalCase}}{{$.ExtSuffix}} WGPU_STRUCTURE_ATTRIBUTE;
174
167
{{ end}}{{"\n" -}}
175
168
176
169
#ifdef __cplusplus
@@ -181,7 +174,7 @@ extern "C" {
181
174
182
175
{{- range .Functions}}
183
176
{{- MComment .Doc 0}}
184
- typedef {{FunctionReturns .}} (*WGPUProc{{.Name | PascalCase}})({{FunctionArgs . nil}}) WGPU_FUNCTION_ATTRIBUTE;
177
+ typedef {{FunctionReturns .}} (*WGPUProc{{.Name | PascalCase}}{{$.ExtSuffix}} )({{FunctionArgs . nil}}) WGPU_FUNCTION_ATTRIBUTE;
185
178
{{- end}}
186
179
{{- if eq .Name "webgpu"}}
187
180
typedef WGPUProc (*WGPUProcGetProcAddress)(WGPUDevice device, char const * procName) WGPU_FUNCTION_ATTRIBUTE;
@@ -191,11 +184,11 @@ typedef WGPUProc (*WGPUProcGetProcAddress)(WGPUDevice device, char const * procN
191
184
// Procs of {{$object.Name | PascalCase}}
192
185
{{- range $object.Methods}}
193
186
{{- MComment .Doc 0}}
194
- typedef {{FunctionReturns .}} (*WGPUProc{{$object.Name | PascalCase}}{{.Name | PascalCase}})({{FunctionArgs . $object}}) WGPU_FUNCTION_ATTRIBUTE;
187
+ typedef {{FunctionReturns .}} (*WGPUProc{{$object.Name | PascalCase}}{{.Name | PascalCase}}{{$.ExtSuffix}} )({{FunctionArgs . $object}}) WGPU_FUNCTION_ATTRIBUTE;
195
188
{{- end}}
196
- {{- if not .IsStruct}}
197
- typedef void (*WGPUProc{{.Name | PascalCase}}Reference)(WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
198
- typedef void (*WGPUProc{{.Name | PascalCase}}Release)(WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
189
+ {{- if not (or .IsStruct .Extended) }}
190
+ typedef void (*WGPUProc{{.Name | PascalCase}}Reference{{$.ExtSuffix}} )(WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
191
+ typedef void (*WGPUProc{{.Name | PascalCase}}Release{{$.ExtSuffix}} )(WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
199
192
{{- end}}
200
193
{{ end}}{{"\n" -}}
201
194
@@ -205,7 +198,7 @@ typedef void (*WGPUProc{{.Name | PascalCase}}Release)(WGPU{{.Name | PascalCase}}
205
198
206
199
{{- range .Functions}}
207
200
{{- MComment .Doc 0}}
208
- WGPU_EXPORT {{FunctionReturns .}} wgpu{{.Name | PascalCase}}({{FunctionArgs . nil}}) WGPU_FUNCTION_ATTRIBUTE;
201
+ WGPU_EXPORT {{FunctionReturns .}} wgpu{{.Name | PascalCase}}{{$.ExtSuffix}} ({{FunctionArgs . nil}}) WGPU_FUNCTION_ATTRIBUTE;
209
202
{{- end}}
210
203
{{- if eq .Name "webgpu"}}
211
204
WGPU_EXPORT WGPUProc wgpuGetProcAddress(WGPUDevice device, char const * procName) WGPU_FUNCTION_ATTRIBUTE;
@@ -215,11 +208,11 @@ WGPU_EXPORT WGPUProc wgpuGetProcAddress(WGPUDevice device, char const * procName
215
208
// Methods of {{$object.Name | PascalCase}}
216
209
{{- range $object.Methods}}
217
210
{{- MComment .Doc 0}}
218
- WGPU_EXPORT {{FunctionReturns .}} wgpu{{$object.Name | PascalCase}}{{.Name | PascalCase}}({{FunctionArgs . $object}}) WGPU_FUNCTION_ATTRIBUTE;
211
+ WGPU_EXPORT {{FunctionReturns .}} wgpu{{$object.Name | PascalCase}}{{.Name | PascalCase}}{{$.ExtSuffix}} ({{FunctionArgs . $object}}) WGPU_FUNCTION_ATTRIBUTE;
219
212
{{- end}}
220
- {{- if not .IsStruct}}
221
- WGPU_EXPORT void wgpu{{.Name | PascalCase}}Reference(WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
222
- WGPU_EXPORT void wgpu{{.Name | PascalCase}}Release(WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
213
+ {{- if not (or .IsStruct .Extended) }}
214
+ WGPU_EXPORT void wgpu{{.Name | PascalCase}}Reference{{$.ExtSuffix}} (WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
215
+ WGPU_EXPORT void wgpu{{.Name | PascalCase}}Release{{$.ExtSuffix}} (WGPU{{.Name | PascalCase}} {{.Name | CamelCase}}) WGPU_FUNCTION_ATTRIBUTE;
223
216
{{- end}}
224
217
{{ end}}{{"\n" -}}
225
218
@@ -229,4 +222,4 @@ WGPU_EXPORT void wgpu{{.Name | PascalCase}}Release(WGPU{{.Name | PascalCase}} {{
229
222
} // extern "C"
230
223
#endif
231
224
232
- #endif // {{.Name | ConstantCase}}_H_
225
+ #endif // {{.HeaderName | ConstantCase}}_H_
0 commit comments