]>
Commit | Line | Data |
---|---|---|
98626572 MA |
1 | # |
2 | # QAPI parser test harness | |
3 | # | |
4 | # Copyright (c) 2013 Red Hat Inc. | |
5 | # | |
6 | # Authors: | |
7 | # Markus Armbruster <[email protected]> | |
8 | # | |
9 | # This work is licensed under the terms of the GNU GPL, version 2 or later. | |
10 | # See the COPYING file in the top-level directory. | |
11 | # | |
12 | ||
13 | from qapi import * | |
14 | from pprint import pprint | |
33aaad52 | 15 | import os |
98626572 MA |
16 | import sys |
17 | ||
156402e5 MA |
18 | |
19 | class QAPISchemaTestVisitor(QAPISchemaVisitor): | |
20 | def visit_enum_type(self, name, info, values, prefix): | |
21 | print 'enum %s %s' % (name, values) | |
22 | if prefix: | |
23 | print ' prefix %s' % prefix | |
24 | ||
25 | def visit_object_type(self, name, info, base, members, variants): | |
26 | print 'object %s' % name | |
27 | if base: | |
28 | print ' base %s' % base.name | |
29 | for m in members: | |
30 | print ' member %s: %s optional=%s' % \ | |
31 | (m.name, m.type.name, m.optional) | |
32 | self._print_variants(variants) | |
33 | ||
34 | def visit_alternate_type(self, name, info, variants): | |
35 | print 'alternate %s' % name | |
36 | self._print_variants(variants) | |
37 | ||
38 | def visit_command(self, name, info, arg_type, ret_type, | |
48825ca4 | 39 | gen, success_response, boxed): |
156402e5 MA |
40 | print 'command %s %s -> %s' % \ |
41 | (name, arg_type and arg_type.name, ret_type and ret_type.name) | |
48825ca4 EB |
42 | print ' gen=%s success_response=%s boxed=%s' % \ |
43 | (gen, success_response, boxed) | |
156402e5 | 44 | |
48825ca4 | 45 | def visit_event(self, name, info, arg_type, boxed): |
156402e5 | 46 | print 'event %s %s' % (name, arg_type and arg_type.name) |
48825ca4 | 47 | print ' boxed=%s' % boxed |
156402e5 MA |
48 | |
49 | @staticmethod | |
50 | def _print_variants(variants): | |
51 | if variants: | |
da9cb193 | 52 | print ' tag %s' % variants.tag_member.name |
156402e5 MA |
53 | for v in variants.variants: |
54 | print ' case %s: %s' % (v.name, v.type.name) | |
55 | ||
56 | schema = QAPISchema(sys.argv[1]) | |
57 | schema.visit(QAPISchemaTestVisitor()) |