|
From: | Wenchao Xia |
Subject: | Re: [Qemu-devel] [RFC PATCH V2 3/5] qapi script: add event support by qapi-event.py |
Date: | Tue, 07 Jan 2014 10:53:12 +0800 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 |
diff --git a/scripts/qapi-event.py b/scripts/qapi-event.py new file mode 100644 index 0000000..7526366 --- /dev/null +++ b/scripts/qapi-event.py @@ -0,0 +1,432 @@ +# +# QAPI event generator +# +# Copyright IBM, Corp. 2014 +# +# Authors: +# Wenchao Xia <address@hidden> +# +# This work is licensed under the terms of the GNU GPLv2+ or later. +# See the COPYING.LIB file in the top-level directory. + +from ordereddict import OrderedDict +from qapi import * +import sys +import os +import getopt +import errno + +def _generate_event_api_name(event_name, params):Why the underline? And, what you generate is a function declaration...
I want to tip it is not a public API. It is generating API name, missing ";" for declaration, implement may want it without ";". :)
+ api_name = "void qapi_event_send_%s(" % c_fun(event_name).lower(); + l = len(api_name) + + if params: + for argname, argentry, optional, structured in parse_args(params): + if structured: + sys.stderr.write("Nested structure define in event is not " + "supported now, event '%s', argname '%s'\n" % + (event_name, argname)) + sys.exit(1) + continue + + if optional: + api_name += "bool has_%s,\n" % c_var(argname) + api_name += "".ljust(l) + + if argentry == "str": + api_name += "const " + api_name += "%s %s,\n" % (c_type(argentry), c_var(argname)) + api_name += "".ljust(l) + + api_name += "Error **errp)" + return api_name; + + +# Following are the core functions that transate user input into a qdict goings/transate/translate Although the comment doesn't make much sense to me.
OK, let me improve.
+# to be emitted in the wire. + +def generate_event_declaration(api_name): + return mcgen(''' + +%(api_name)s; +''', + api_name = api_name) + +def generate_event_implement(api_name, event_name, params):I wonder if it would be clearer to to generate the declaration here.
I think so, but a little slower at compile time. I use api_name to avoid call _generate_event_api_name() twice. I am not sure which way is better.
[Prev in Thread] | Current Thread | [Next in Thread] |