summaryrefslogtreecommitdiff
path: root/giscanner/girparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'giscanner/girparser.py')
-rw-r--r--giscanner/girparser.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index 9ea408b4..7687c35c 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -142,6 +142,7 @@ class GIRParser(object):
if not self._types_only:
parser_methods[_corens('constant')] = self._parse_constant
+ parser_methods[_corens('function-macro')] = self._parse_function_macro
parser_methods[_corens('function')] = self._parse_function
for node in ns.getchildren():
@@ -310,6 +311,23 @@ class GIRParser(object):
function = self._parse_function_common(node, ast.Function)
self._namespace.append(function)
+ def _parse_function_macro(self, node):
+ name = node.attrib['name']
+ symbol = node.attrib.get(_cns('identifier'))
+ parameters = []
+ parameters_node = node.find(_corens('parameters'))
+ if (parameters_node is not None):
+ for paramnode in self._find_children(parameters_node, _corens('parameter')):
+ param = ast.Parameter(paramnode.attrib.get('name'), None)
+ parameters.append(param)
+ self._parse_generic_attribs(paramnode, param)
+
+ func = ast.FunctionMacro(name, parameters, symbol)
+ self._parse_generic_attribs(node, func)
+
+ self._namespace.track(func)
+ self._namespace.append(func)
+
def _parse_parameter(self, node):
typeval = self._parse_type(node)
param = ast.Parameter(node.attrib.get('name'),