Skip to content

Commit 14e1f36

Browse files
committed
Merge pull request #66492 from bruvzg/gde_ts_underscr
[GDExtension] Use function names with underscore for TextServer extension, add macros to generate wrappers for module functions.
2 parents ff8e240 + 8f5d56e commit 14e1f36

File tree

12 files changed

+1677
-1790
lines changed

12 files changed

+1677
-1790
lines changed

core/extension/make_wrappers.py

Lines changed: 71 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,60 @@
1-
proto = """
1+
proto_mod = """
2+
#define MODBIND$VER($RETTYPE m_name$ARG) \\
3+
virtual $RETVAL _##m_name($FUNCARGS) $CONST; \\
4+
_FORCE_INLINE_ virtual $RETVAL m_name($FUNCARGS) $CONST override { \\
5+
$RETX _##m_name($CALLARGS);\\
6+
}
7+
"""
8+
9+
10+
def generate_mod_version(argcount, const=False, returns=False):
11+
s = proto_mod
12+
sproto = str(argcount)
13+
method_info = ""
14+
if returns:
15+
sproto += "R"
16+
s = s.replace("$RETTYPE", "m_ret, ")
17+
s = s.replace("$RETVAL", "m_ret")
18+
s = s.replace("$RETX", "return")
19+
20+
else:
21+
s = s.replace("$RETTYPE", "")
22+
s = s.replace("$RETVAL", "void")
23+
s = s.replace("$RETX", "")
24+
25+
if const:
26+
sproto += "C"
27+
s = s.replace("$CONST", "const")
28+
else:
29+
s = s.replace("$CONST", "")
30+
31+
s = s.replace("$VER", sproto)
32+
argtext = ""
33+
funcargs = ""
34+
callargs = ""
35+
36+
for i in range(argcount):
37+
if i > 0:
38+
funcargs += ", "
39+
callargs += ", "
40+
41+
argtext += ", m_type" + str(i + 1)
42+
funcargs += "m_type" + str(i + 1) + " arg" + str(i + 1)
43+
callargs += "arg" + str(i + 1)
44+
45+
if argcount:
46+
s = s.replace("$ARG", argtext)
47+
s = s.replace("$FUNCARGS", funcargs)
48+
s = s.replace("$CALLARGS", callargs)
49+
else:
50+
s = s.replace("$ARG", "")
51+
s = s.replace("$FUNCARGS", funcargs)
52+
s = s.replace("$CALLARGS", callargs)
53+
54+
return s
55+
56+
57+
proto_ex = """
258
#define EXBIND$VER($RETTYPE m_name$ARG) \\
359
GDVIRTUAL$VER($RETTYPE_##m_name$ARG)\\
460
virtual $RETVAL m_name($FUNCARGS) $CONST override { \\
@@ -9,8 +65,8 @@
965
"""
1066

1167

12-
def generate_version(argcount, const=False, returns=False):
13-
s = proto
68+
def generate_ex_version(argcount, const=False, returns=False):
69+
s = proto_ex
1470
sproto = str(argcount)
1571
method_info = ""
1672
if returns:
@@ -63,25 +119,28 @@ def generate_version(argcount, const=False, returns=False):
63119

64120

65121
def run(target, source, env):
66-
67122
max_versions = 12
68123

69124
txt = """
70125
#ifndef GDEXTENSION_WRAPPERS_GEN_H
71126
#define GDEXTENSION_WRAPPERS_GEN_H
72-
73-
74127
"""
75128

76129
for i in range(max_versions + 1):
130+
txt += "\n/* Extension Wrapper " + str(i) + " Arguments */\n"
131+
txt += generate_ex_version(i, False, False)
132+
txt += generate_ex_version(i, False, True)
133+
txt += generate_ex_version(i, True, False)
134+
txt += generate_ex_version(i, True, True)
77135

78-
txt += "/* " + str(i) + " Arguments */\n\n"
79-
txt += generate_version(i, False, False)
80-
txt += generate_version(i, False, True)
81-
txt += generate_version(i, True, False)
82-
txt += generate_version(i, True, True)
136+
for i in range(max_versions + 1):
137+
txt += "\n/* Module Wrapper " + str(i) + " Arguments */\n"
138+
txt += generate_mod_version(i, False, False)
139+
txt += generate_mod_version(i, False, True)
140+
txt += generate_mod_version(i, True, False)
141+
txt += generate_mod_version(i, True, True)
83142

84-
txt += "#endif"
143+
txt += "\n#endif\n"
85144

86145
with open(target[0], "w") as f:
87146
f.write(txt)

doc/classes/TextServer.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1565,6 +1565,8 @@
15651565
<constant name="FONT_LCD_SUBPIXEL_LAYOUT_VBGR" value="4" enum="FontLCDSubpixelLayout">
15661566
Vertical BGR sub-pixel layout.
15671567
</constant>
1568+
<constant name="FONT_LCD_SUBPIXEL_LAYOUT_MAX" value="5" enum="FontLCDSubpixelLayout">
1569+
</constant>
15681570
<constant name="DIRECTION_AUTO" value="0" enum="Direction">
15691571
Text direction is determined based on contents and current locale.
15701572
</constant>

0 commit comments

Comments
 (0)