diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-01-31 09:36:07 -0500 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-02-01 19:37:21 -0500 |
commit | 9c0bd59b021e163eae191db95ce6beeb389cbd6f (patch) | |
tree | 1e6030b1baebe66c68877b038ca3444a12a50d96 /giscanner/girparser.py | |
parent | 93cd5b208b19e7c532972b85a457518082e1fc2b (diff) | |
download | gobject-introspection-9c0bd59b021e163eae191db95ce6beeb389cbd6f.tar.gz |
girparser: Serialize and read back the instance_parameter
g-ir-doc-tool wants to use the instance parameter to read docs
and the parameter name, so it needs to be shuttled through the
GIR.
https://bugzilla.gnome.org/show_bug.cgi?id=693040
Diffstat (limited to 'giscanner/girparser.py')
-rw-r--r-- | giscanner/girparser.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/giscanner/girparser.py b/giscanner/girparser.py index ea8b0d6d..bd259b87 100644 --- a/giscanner/girparser.py +++ b/giscanner/girparser.py @@ -286,6 +286,18 @@ class GIRParser(object): function = self._parse_function_common(node, ast.Function) self._namespace.append(function) + def _parse_parameter(self, node): + typeval = self._parse_type(node) + param = ast.Parameter(node.attrib.get('name'), + typeval, + node.attrib.get('direction') or ast.PARAM_DIRECTION_IN, + node.attrib.get('transfer-ownership'), + node.attrib.get('allow-none') == '1', + node.attrib.get('scope'), + node.attrib.get('caller-allocates') == '1') + self._parse_generic_attribs(node, param) + return param + def _parse_function_common(self, node, klass, parent=None): name = node.attrib['name'] returnnode = node.find(_corens('return-value')) @@ -323,17 +335,11 @@ class GIRParser(object): parameters_node = node.find(_corens('parameters')) if (parameters_node is not None): + paramnode = self._find_first_child(parameters_node, _corens('instance-parameter')) + if paramnode: + func.instance_parameter = self._parse_parameter(paramnode) for paramnode in self._find_children(parameters_node, _corens('parameter')): - typeval = self._parse_type(paramnode) - param = ast.Parameter(paramnode.attrib.get('name'), - typeval, - paramnode.attrib.get('direction') or ast.PARAM_DIRECTION_IN, - paramnode.attrib.get('transfer-ownership'), - paramnode.attrib.get('allow-none') == '1', - paramnode.attrib.get('scope'), - paramnode.attrib.get('caller-allocates') == '1') - self._parse_generic_attribs(paramnode, param) - parameters.append(param) + parameters.append(self._parse_parameter(paramnode)) for i, paramnode in enumerate(self._find_children(parameters_node, _corens('parameter'))): param = parameters[i] |