Store GDNative API in array instead of dictionary

This commit is contained in:
sheepandshepherd 2017-10-07 20:17:12 +02:00
parent bd10a00240
commit 39584f3312
2 changed files with 1334 additions and 672 deletions

View file

@ -35,9 +35,9 @@ def _build_gdnative_api_struct_header(api):
'\tconst char *version;',
]
for funcname, funcdef in api['api'].items():
for funcdef in api['api']:
args = ', '.join(['%s%s' % (_spaced(t), n) for t, n in funcdef['arguments']])
out.append('\t%s(*%s)(%s);' % (_spaced(funcdef['return_type']), funcname, args))
out.append('\t%s(*%s)(%s);' % (_spaced(funcdef['return_type']), funcdef['name'], args))
out += [
'} godot_gdnative_api_struct;',
@ -63,8 +63,8 @@ def _build_gdnative_api_struct_source(api):
'\t_gdnative_api_version,',
]
for funcname in api['api'].keys():
out.append('\t%s,' % funcname)
for funcdef in api['api']:
out.append('\t%s,' % funcdef['name'])
out.append('};\n')
return '\n'.join(out)
@ -75,7 +75,7 @@ def build_gdnative_api_struct(target, source, env):
with open(source[0].path, 'r') as fd:
# Keep the json ordered
api = json.load(fd, object_pairs_hook=OrderedDict)
api = json.load(fd)
header, source = target
with open(header.path, 'w') as fd:
@ -107,14 +107,14 @@ def _build_gdnative_wrapper_code(api):
''
]
for funcname, funcdef in api['api'].items():
for funcdef in api['api']:
args = ', '.join(['%s%s' % (_spaced(t), n) for t, n in funcdef['arguments']])
out.append('%s %s(%s) {' % (_spaced(funcdef['return_type']), funcname, args))
out.append('%s %s(%s) {' % (_spaced(funcdef['return_type']), funcdef['name'], args))
args = ', '.join(['%s' % n for t, n in funcdef['arguments']])
return_line = '\treturn ' if funcdef['return_type'] != 'void' else '\t'
return_line += '_gdnative_wrapper_api_struct->' + funcname + '(' + args + ');'
return_line += '_gdnative_wrapper_api_struct->' + funcdef['name'] + '(' + args + ');'
out.append(return_line)
out.append('}')

File diff suppressed because it is too large Load diff