浏览代码

Merge pull request #11923 from sheepandshepherd/gdnative_api_json_array

Store GDNative API in array instead of dictionary
Thomas Herzog 8 年之前
父节点
当前提交
7a58c0f9fb
共有 2 个文件被更改,包括 247 次插入128 次删除
  1. 8 8
      modules/gdnative/SCsub
  2. 239 120
      modules/gdnative/gdnative_api.json

+ 8 - 8
modules/gdnative/SCsub

@@ -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('}')

文件差异内容过多而无法显示
+ 239 - 120
modules/gdnative/gdnative_api.json


部分文件因为文件数量过多而无法显示