summaryrefslogtreecommitdiff
path: root/giscanner/girparser.py
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-01-31 09:36:07 -0500
committerJasper St. Pierre <jstpierre@mecheye.net>2013-02-01 19:37:21 -0500
commit9c0bd59b021e163eae191db95ce6beeb389cbd6f (patch)
tree1e6030b1baebe66c68877b038ca3444a12a50d96 /giscanner/girparser.py
parent93cd5b208b19e7c532972b85a457518082e1fc2b (diff)
downloadgobject-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.py26
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]