|
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 = """ |
2 | 58 | #define EXBIND$VER($RETTYPE m_name$ARG) \\
|
3 | 59 | GDVIRTUAL$VER($RETTYPE_##m_name$ARG)\\
|
4 | 60 | virtual $RETVAL m_name($FUNCARGS) $CONST override { \\
|
|
9 | 65 | """
|
10 | 66 |
|
11 | 67 |
|
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 |
14 | 70 | sproto = str(argcount)
|
15 | 71 | method_info = ""
|
16 | 72 | if returns:
|
@@ -63,25 +119,28 @@ def generate_version(argcount, const=False, returns=False):
|
63 | 119 |
|
64 | 120 |
|
65 | 121 | def run(target, source, env):
|
66 |
| - |
67 | 122 | max_versions = 12
|
68 | 123 |
|
69 | 124 | txt = """
|
70 | 125 | #ifndef GDEXTENSION_WRAPPERS_GEN_H
|
71 | 126 | #define GDEXTENSION_WRAPPERS_GEN_H
|
72 |
| -
|
73 |
| -
|
74 | 127 | """
|
75 | 128 |
|
76 | 129 | 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) |
77 | 135 |
|
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) |
83 | 142 |
|
84 |
| - txt += "#endif" |
| 143 | + txt += "\n#endif\n" |
85 | 144 |
|
86 | 145 | with open(target[0], "w") as f:
|
87 | 146 | f.write(txt)
|
|
0 commit comments