198626572SMarkus Armbruster# 298626572SMarkus Armbruster# QAPI parser test harness 398626572SMarkus Armbruster# 498626572SMarkus Armbruster# Copyright (c) 2013 Red Hat Inc. 598626572SMarkus Armbruster# 698626572SMarkus Armbruster# Authors: 798626572SMarkus Armbruster# Markus Armbruster <armbru@redhat.com> 898626572SMarkus Armbruster# 998626572SMarkus Armbruster# This work is licensed under the terms of the GNU GPL, version 2 or later. 1098626572SMarkus Armbruster# See the COPYING file in the top-level directory. 1198626572SMarkus Armbruster# 1298626572SMarkus Armbruster 1398626572SMarkus Armbrusterfrom qapi import * 1498626572SMarkus Armbrusterfrom pprint import pprint 1533aaad52SLluís Vilanovaimport os 1698626572SMarkus Armbrusterimport sys 1798626572SMarkus Armbruster 1898626572SMarkus Armbruster 19156402e5SMarkus Armbrusterclass QAPISchemaTestVisitor(QAPISchemaVisitor): 20156402e5SMarkus Armbruster def visit_enum_type(self, name, info, values, prefix): 21156402e5SMarkus Armbruster print 'enum %s %s' % (name, values) 22156402e5SMarkus Armbruster if prefix: 23156402e5SMarkus Armbruster print ' prefix %s' % prefix 24156402e5SMarkus Armbruster 25156402e5SMarkus Armbruster def visit_object_type(self, name, info, base, members, variants): 26156402e5SMarkus Armbruster print 'object %s' % name 27156402e5SMarkus Armbruster if base: 28156402e5SMarkus Armbruster print ' base %s' % base.name 29156402e5SMarkus Armbruster for m in members: 30156402e5SMarkus Armbruster print ' member %s: %s optional=%s' % \ 31156402e5SMarkus Armbruster (m.name, m.type.name, m.optional) 32156402e5SMarkus Armbruster self._print_variants(variants) 33156402e5SMarkus Armbruster 34156402e5SMarkus Armbruster def visit_alternate_type(self, name, info, variants): 35156402e5SMarkus Armbruster print 'alternate %s' % name 36156402e5SMarkus Armbruster self._print_variants(variants) 37156402e5SMarkus Armbruster 38156402e5SMarkus Armbruster def visit_command(self, name, info, arg_type, ret_type, 39*48825ca4SEric Blake gen, success_response, boxed): 40156402e5SMarkus Armbruster print 'command %s %s -> %s' % \ 41156402e5SMarkus Armbruster (name, arg_type and arg_type.name, ret_type and ret_type.name) 42*48825ca4SEric Blake print ' gen=%s success_response=%s boxed=%s' % \ 43*48825ca4SEric Blake (gen, success_response, boxed) 44156402e5SMarkus Armbruster 45*48825ca4SEric Blake def visit_event(self, name, info, arg_type, boxed): 46156402e5SMarkus Armbruster print 'event %s %s' % (name, arg_type and arg_type.name) 47*48825ca4SEric Blake print ' boxed=%s' % boxed 48156402e5SMarkus Armbruster 49156402e5SMarkus Armbruster @staticmethod 50156402e5SMarkus Armbruster def _print_variants(variants): 51156402e5SMarkus Armbruster if variants: 52da9cb193SEric Blake print ' tag %s' % variants.tag_member.name 53156402e5SMarkus Armbruster for v in variants.variants: 54156402e5SMarkus Armbruster print ' case %s: %s' % (v.name, v.type.name) 55156402e5SMarkus Armbruster 56156402e5SMarkus Armbrusterschema = QAPISchema(sys.argv[1]) 57156402e5SMarkus Armbrusterschema.visit(QAPISchemaTestVisitor()) 58