|
@@ -28,6 +28,16 @@ def generate_fwd_struct(name, members):
|
|
''',
|
|
''',
|
|
name=name)
|
|
name=name)
|
|
|
|
|
|
|
|
+def generate_fwd_enum_struct(name, members):
|
|
|
|
+ return mcgen('''
|
|
|
|
+typedef struct %(name)sList
|
|
|
|
+{
|
|
|
|
+ %(name)s value;
|
|
|
|
+ struct %(name)sList *next;
|
|
|
|
+} %(name)sList;
|
|
|
|
+''',
|
|
|
|
+ name=name)
|
|
|
|
+
|
|
def generate_struct(structname, fieldname, members):
|
|
def generate_struct(structname, fieldname, members):
|
|
ret = mcgen('''
|
|
ret = mcgen('''
|
|
struct %(name)s
|
|
struct %(name)s
|
|
@@ -276,7 +286,8 @@ def maybe_open(really, name, opt):
|
|
if expr.has_key('type'):
|
|
if expr.has_key('type'):
|
|
ret += generate_fwd_struct(expr['type'], expr['data'])
|
|
ret += generate_fwd_struct(expr['type'], expr['data'])
|
|
elif expr.has_key('enum'):
|
|
elif expr.has_key('enum'):
|
|
- ret += generate_enum(expr['enum'], expr['data'])
|
|
|
|
|
|
+ ret += generate_enum(expr['enum'], expr['data']) + "\n"
|
|
|
|
+ ret += generate_fwd_enum_struct(expr['enum'], expr['data'])
|
|
fdef.write(generate_enum_lookup(expr['enum'], expr['data']))
|
|
fdef.write(generate_enum_lookup(expr['enum'], expr['data']))
|
|
elif expr.has_key('union'):
|
|
elif expr.has_key('union'):
|
|
ret += generate_fwd_struct(expr['union'], expr['data']) + "\n"
|
|
ret += generate_fwd_struct(expr['union'], expr['data']) + "\n"
|
|
@@ -300,6 +311,9 @@ def maybe_open(really, name, opt):
|
|
fdef.write(generate_type_cleanup(expr['union'] + "List") + "\n")
|
|
fdef.write(generate_type_cleanup(expr['union'] + "List") + "\n")
|
|
ret += generate_type_cleanup_decl(expr['union'])
|
|
ret += generate_type_cleanup_decl(expr['union'])
|
|
fdef.write(generate_type_cleanup(expr['union']) + "\n")
|
|
fdef.write(generate_type_cleanup(expr['union']) + "\n")
|
|
|
|
+ elif expr.has_key('enum'):
|
|
|
|
+ ret += generate_type_cleanup_decl(expr['enum'] + "List")
|
|
|
|
+ fdef.write(generate_type_cleanup(expr['enum'] + "List") + "\n")
|
|
else:
|
|
else:
|
|
continue
|
|
continue
|
|
fdecl.write(ret)
|
|
fdecl.write(ret)
|