diff options
author | David Zeuthen <davidz@redhat.com> | 2011-02-14 09:10:34 -0500 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2011-02-14 09:10:34 -0500 |
commit | 95dae0a01714e5cbe6a1ef9ab4e37ac28d12971a (patch) | |
tree | 92a0ed55f64cb2f34cfc4752971c18c842cf5c0a | |
parent | c907e427f2e5bdace2f87b3162687a5c237fab3b (diff) |
Handle introspection XML with unnamed arguments
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r-- | src/dbustypes.py | 17 | ||||
-rw-r--r-- | src/parser.py | 10 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/dbustypes.py b/src/dbustypes.py index dc8b244..7b464f8 100644 --- a/src/dbustypes.py +++ b/src/dbustypes.py @@ -14,7 +14,9 @@ class Arg: self.signature = signature self.annotations = [] - def calculate_c_names(self, strip_prefix, namespace): + def calculate_c_names(self, strip_prefix, namespace, arg_number): + if self.name == None: + self.name = 'unnamed_arg%d'%arg_number # default to GVariant self.ctype_in_g = 'GVariant *' self.ctype_in = 'GVariant *' @@ -162,11 +164,14 @@ class Method: self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_') self.name_hyphen = self.name_lower.replace('_', '-') + arg_count = 0 for a in self.in_args: - a.calculate_c_names(strip_prefix, namespace) + a.calculate_c_names(strip_prefix, namespace, arg_count) + arg_count += 1 for a in self.out_args: - a.calculate_c_names(strip_prefix, namespace) + a.calculate_c_names(strip_prefix, namespace, arg_count) + arg_count += 1 #print ' --- method' #print ' name: ' + self.name #print ' name_lower: ' + self.name_lower @@ -199,8 +204,10 @@ class Signal: #print ' name: ' + self.name #print ' name_lower: ' + self.name_lower + arg_count = 0 for a in self.args: - a.calculate_c_names(strip_prefix, namespace) + a.calculate_c_names(strip_prefix, namespace, arg_count) + arg_count += 1 class Property: def __init__(self, name, signature, access): @@ -239,7 +246,7 @@ class Property: # recalculate arg self.arg.annotations = self.annotations - self.arg.calculate_c_names(strip_prefix, namespace) + self.arg.calculate_c_names(strip_prefix, namespace, 0) class Interface: def __init__(self, name): #gi, strip_prefix, namespace): diff --git a/src/parser.py b/src/parser.py index 50fe810..7b2a854 100644 --- a/src/parser.py +++ b/src/parser.py @@ -84,7 +84,10 @@ class DBusXMLParser: elif self.state == DBusXMLParser.STATE_METHOD: if name == DBusXMLParser.STATE_ARG: self.state = DBusXMLParser.STATE_ARG - arg = dbustypes.Arg(attrs['name'], attrs['type']) + arg_name = None + if attrs.has_key('name'): + arg_name = attrs['name'] + arg = dbustypes.Arg(arg_name, attrs['type']) direction = attrs['direction'] if direction == 'in': self._cur_object.in_args.append(arg) @@ -103,7 +106,10 @@ class DBusXMLParser: elif self.state == DBusXMLParser.STATE_SIGNAL: if name == DBusXMLParser.STATE_ARG: self.state = DBusXMLParser.STATE_ARG - arg = dbustypes.Arg(attrs['name'], attrs['type']) + arg_name = None + if attrs.has_key('name'): + arg_name = attrs['name'] + arg = dbustypes.Arg(arg_name, attrs['type']) self._cur_object.args.append(arg) self._cur_object = arg elif name == DBusXMLParser.STATE_ANNOTATION: |