Skip to content

Commit f5a545b

Browse files
committed
Render constants&enums for builtins and global in gdapi.pxd
1 parent 897a37f commit f5a545b

File tree

3 files changed

+58
-21
lines changed

3 files changed

+58
-21
lines changed

scripts/extension_api_parser/builtins.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ class BuiltinEnumSpec:
261261
name: str
262262
original_name: str
263263
is_bitfield: bool
264-
values: List[Dict[str, int]]
264+
values: Dict[str, int]
265265

266266
@classmethod
267267
def parse(cls, item: dict) -> "BuiltinEnumSpec":
@@ -272,7 +272,7 @@ def parse(cls, item: dict) -> "BuiltinEnumSpec":
272272
name=item["name"],
273273
original_name=item["original_name"],
274274
is_bitfield=item["is_bitfield"],
275-
values=[{x["name"]: x["value"]} for x in item["values"]],
275+
values={x["name"]: x["value"] for x in item["values"]},
276276
)
277277

278278

@@ -301,6 +301,10 @@ class BuiltinSpec:
301301
def __repr__(self):
302302
return f"{type(self).__name__}({self.name})"
303303

304+
@property
305+
def c_name_prefix(self) -> str:
306+
return f"gd_{self.snake_name}"
307+
304308
@property
305309
def c_destructor_name(self) -> str:
306310
assert self.has_destructor

src/godot/hazmat/gdapi.macros.pxd.j2

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
{#########################################################################
2-
# Render arguments body & signature
3-
#########################################################################}
1+
#########################################################################
2+
# Render arguments body & signature
3+
#########################################################################
44

55

66
{% macro render_args_signature(args) -%}
@@ -19,9 +19,9 @@
1919
{% endmacro %}
2020

2121

22-
{#########################################################################
23-
# Utility function
24-
#########################################################################}
22+
#########################################################################
23+
# Utility function
24+
#########################################################################
2525

2626

2727
{% macro render_utility_function_signature(spec) -%}
@@ -57,9 +57,9 @@ cdef inline {{ render_utility_function_signature(spec) }}:
5757
{% endmacro %}
5858

5959

60-
{#########################################################################
61-
# Builtin type
62-
#########################################################################}
60+
#########################################################################
61+
# Builtin type
62+
#########################################################################
6363

6464

6565
{% macro render_builtin_type_cy_struct(spec) %}
@@ -93,9 +93,9 @@ cdef extern from * nogil:
9393
{% endmacro %}
9494

9595

96-
{#########################################################################
97-
# Builtin function pointers
98-
#########################################################################}
96+
#########################################################################
97+
# Builtin function pointers
98+
#########################################################################
9999

100100

101101
{% macro render_builtin_functions_ptrs(spec) %}
@@ -120,9 +120,9 @@ cdef GDNativePtrGetter __{{ spec.name }}_set_{{ m.name }}
120120
{% endmacro %}
121121

122122

123-
{#########################################################################
124-
# Builtin constructors/destructor
125-
#########################################################################}
123+
#########################################################################
124+
# Builtin constructors/destructor
125+
#########################################################################
126126

127127
{% macro render_builtin_constructor_signature(spec, constructor) -%}
128128
{{ spec.c_struct_name }} {{ constructor.c_name }}({{ render_args_signature(constructor.arguments) }})
@@ -156,9 +156,9 @@ cdef inline {{ render_builtin_destructor_signature(spec) }}:
156156
{% endmacro %}
157157

158158

159-
{#########################################################################
160-
# Builtin methods
161-
#########################################################################}
159+
#########################################################################
160+
# Builtin methods
161+
#########################################################################
162162

163163

164164
{% macro render_builtin_method_signature(spec, meth) -%}

src/godot/hazmat/gdapi.pxd.j2

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,21 @@ cdef extern from *:
9191
{% endfor %}
9292

9393

94+
##############################################################################
95+
# Global Constants & Enums #
96+
##############################################################################
97+
98+
{% for spec in api["global_constants"] %}
99+
DEF {{ spec.name }} = {{ spec.value }}
100+
{% endfor %}
101+
102+
{% for spec in api["global_enums"] %}
103+
{% for key, value in spec.values.items() %}
104+
DEF {{ key }} = {{ value }}
105+
{% endfor %}
106+
{% endfor %}
107+
108+
94109
#
95110
# ,; : L. ,;
96111
# . . f#i ittttttttEf EW: ,ft .Gt i f#i
@@ -143,7 +158,25 @@ cdef extern from * nogil:
143158
char _gd_opaque[{{ api.variant_size }}]
144159
{% for spec in api["builtins"] if not spec.is_scalar %}
145160

146-
161+
{# Constants #}
162+
{% for c in spec.constants %}
163+
{% if c.type.is_scalar %}
164+
DEF {{ spec.c_name_prefix.upper() }}_{{ c.name }} = {{ c.value }}
165+
{% else %}
166+
cdef inline {{ c.type.c_type }} {{ spec.c_name_prefix }}_make_constant_{{ c.name }}():
167+
# TODO: Initialize as {{ c.value }}
168+
return {{ c.type.builtin_spec.c_name_prefix }}_new()
169+
{% endif %}
170+
{% endfor %}
171+
172+
{# Enums #}
173+
{% for e in spec.enums %}
174+
{% for key, value in e.values.items() %}
175+
DEF {{ spec.c_name_prefix.upper() }}_{{ key }} = {{ value }}
176+
{% endfor %}
177+
{% endfor %}
178+
179+
{# Struct #}
147180
{{ render_builtin_type_c_extern(spec, not spec.is_transparent_c_struct) }}
148181
{% endfor %}
149182
{% for spec in api["builtins"] if not spec.is_scalar %}

0 commit comments

Comments
 (0)