[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/20] qapi: qapi_visit.py, make code useable as mod
From: |
Michael Roth |
Subject: |
[Qemu-devel] [PATCH 04/20] qapi: qapi_visit.py, make code useable as module |
Date: |
Tue, 14 Aug 2012 11:27:10 -0500 |
Reviewed-by: Anthony Liguori <address@hidden>
Signed-off-by: Michael Roth <address@hidden>
---
scripts/qapi_visit.py | 143 +++++++++++++++++++++++++------------------------
1 file changed, 74 insertions(+), 69 deletions(-)
diff --git a/scripts/qapi_visit.py b/scripts/qapi_visit.py
index 04ef7c4..25707f5 100644
--- a/scripts/qapi_visit.py
+++ b/scripts/qapi_visit.py
@@ -224,55 +224,57 @@ void visit_type_%(name)s(Visitor *m, %(name)s * obj,
const char *name, Error **e
''',
name=name)
-try:
- opts, args = getopt.gnu_getopt(sys.argv[1:], "chp:o:",
- ["source", "header", "prefix=",
"output-dir="])
-except getopt.GetoptError, err:
- print str(err)
- sys.exit(1)
-
-output_dir = ""
-prefix = ""
-c_file = 'qapi-visit.c'
-h_file = 'qapi-visit.h'
-
-do_c = False
-do_h = False
-
-for o, a in opts:
- if o in ("-p", "--prefix"):
- prefix = a
- elif o in ("-o", "--output-dir"):
- output_dir = a + "/"
- elif o in ("-c", "--source"):
+def main(argv=[]):
+ try:
+ opts, args = getopt.gnu_getopt(sys.argv[1:], "chp:o:",
+ ["source", "header", "prefix=",
+ "output-dir="])
+ except getopt.GetoptError, err:
+ print str(err)
+ sys.exit(1)
+
+ output_dir = ""
+ prefix = ""
+ c_file = 'qapi-visit.c'
+ h_file = 'qapi-visit.h'
+
+ do_c = False
+ do_h = False
+
+ for o, a in opts:
+ if o in ("-p", "--prefix"):
+ prefix = a
+ elif o in ("-o", "--output-dir"):
+ output_dir = a + "/"
+ elif o in ("-c", "--source"):
+ do_c = True
+ elif o in ("-h", "--header"):
+ do_h = True
+
+ if not do_c and not do_h:
do_c = True
- elif o in ("-h", "--header"):
do_h = True
-if not do_c and not do_h:
- do_c = True
- do_h = True
+ c_file = output_dir + prefix + c_file
+ h_file = output_dir + prefix + h_file
-c_file = output_dir + prefix + c_file
-h_file = output_dir + prefix + h_file
+ try:
+ os.makedirs(output_dir)
+ except os.error, e:
+ if e.errno != errno.EEXIST:
+ raise
-try:
- os.makedirs(output_dir)
-except os.error, e:
- if e.errno != errno.EEXIST:
- raise
-
-def maybe_open(really, name, opt):
- if really:
- return open(name, opt)
- else:
- import StringIO
- return StringIO.StringIO()
+ def maybe_open(really, name, opt):
+ if really:
+ return open(name, opt)
+ else:
+ import StringIO
+ return StringIO.StringIO()
-fdef = maybe_open(do_c, c_file, 'w')
-fdecl = maybe_open(do_h, h_file, 'w')
+ fdef = maybe_open(do_c, c_file, 'w')
+ fdecl = maybe_open(do_h, h_file, 'w')
-fdef.write(mcgen('''
+ fdef.write(mcgen('''
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */
/*
@@ -292,7 +294,7 @@ fdef.write(mcgen('''
''',
header=basename(h_file)))
-fdecl.write(mcgen('''
+ fdecl.write(mcgen('''
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */
/*
@@ -316,37 +318,40 @@ fdecl.write(mcgen('''
''',
prefix=prefix, guard=guardname(h_file)))
-exprs = parse_schema(sys.stdin)
+ exprs = parse_schema(sys.stdin)
-for expr in exprs:
- if expr.has_key('type'):
- ret = generate_visit_struct(expr['type'], expr['data'])
- ret += generate_visit_list(expr['type'], expr['data'])
- fdef.write(ret)
+ for expr in exprs:
+ if expr.has_key('type'):
+ ret = generate_visit_struct(expr['type'], expr['data'])
+ ret += generate_visit_list(expr['type'], expr['data'])
+ fdef.write(ret)
- ret = generate_declaration(expr['type'], expr['data'])
- fdecl.write(ret)
- elif expr.has_key('union'):
- ret = generate_visit_union(expr['union'], expr['data'])
- ret += generate_visit_list(expr['union'], expr['data'])
- fdef.write(ret)
+ ret = generate_declaration(expr['type'], expr['data'])
+ fdecl.write(ret)
+ elif expr.has_key('union'):
+ ret = generate_visit_union(expr['union'], expr['data'])
+ ret += generate_visit_list(expr['union'], expr['data'])
+ fdef.write(ret)
- ret = generate_decl_enum('%sKind' % expr['union'], expr['data'].keys())
- ret += generate_declaration(expr['union'], expr['data'])
- fdecl.write(ret)
- elif expr.has_key('enum'):
- ret = generate_visit_enum(expr['enum'], expr['data'])
- fdef.write(ret)
+ ret = generate_decl_enum('%sKind' % expr['union'],
expr['data'].keys())
+ ret += generate_declaration(expr['union'], expr['data'])
+ fdecl.write(ret)
+ elif expr.has_key('enum'):
+ ret = generate_visit_enum(expr['enum'], expr['data'])
+ fdef.write(ret)
- ret = generate_decl_enum(expr['enum'], expr['data'])
- fdecl.write(ret)
+ ret = generate_decl_enum(expr['enum'], expr['data'])
+ fdecl.write(ret)
-fdecl.write('''
+ fdecl.write('''
#endif
-''')
+ ''')
+
+ fdecl.flush()
+ fdecl.close()
-fdecl.flush()
-fdecl.close()
+ fdef.flush()
+ fdef.close()
-fdef.flush()
-fdef.close()
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
--
1.7.9.5
- [Qemu-devel] Add infrastructure for supporting QIDL annotations, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 01/20] qapi: qapi-visit.py -> qapi_visit.py so we can import, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 02/20] qapi: qapi-types.py -> qapi_types.py, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 03/20] qapi: qapi-commands.py -> qapi_commands.py, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 04/20] qapi: qapi_visit.py, make code useable as module,
Michael Roth <=
- [Qemu-devel] [PATCH 06/20] qapi: add visitor interfaces for C arrays, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 05/20] qapi: qapi_visit.py, support arrays and complex qapi definitions, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 07/20] qapi: qapi_visit.py, support generating static functions, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 08/20] qapi: qapi_visit.py, support for visiting non-pointer/embedded structs, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 09/20] qapi: QmpOutputVisitor, implement array handling, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 11/20] qapi: qapi.py, make json parser more robust, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 10/20] qapi: QmpInputVisitor, implement array handling, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 12/20] qapi: add open-coded visitor for struct tm types, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 13/20] qom-fuse: workaround for truncated properties > 4096, Michael Roth, 2012/08/14
- [Qemu-devel] [PATCH 15/20] qdev: move Property-related declarations to qdev-properties.h, Michael Roth, 2012/08/14