+2008-10-16 Johan Bilien <jobi@via.ecp.fr>
+
+ Bug 556610 – giscanner/girparser.py drops parameter options
+
+ * tests/scanner/drawable-injected-1.0-expected.gir,
+ tests/scanner/DrawableAdditions.xml: added simple test for injection.
+ * giscanner/ast.py: allow Parameter to take options in the constructor
+ * giscanner/girparser.py: parse parameter options (transfer,
+ direction, allow-none)
+
2008-10-16 Colin Walters <walters@verbum.org>
Bug 556185 - segfault on g_callable_info_get_return_type
PARAM_DIRECTION_OUT = 'out'
PARAM_DIRECTION_INOUT = 'inout'
+PARAM_TRANSFER_NONE = 'none'
+PARAM_TRANSFER_CONTAINER = 'container'
+PARAM_TRANSFER_FULL = 'full'
+
type_names = {}
for name in GIR_TYPES:
type_names[name] = name
class Parameter(Node):
- def __init__(self, name, typenode):
+ def __init__(self, name, typenode, direction=PARAM_DIRECTION_IN,
+ transfer=None, allow_none=False):
Node.__init__(self, name)
self.type = typenode
- self.direction = PARAM_DIRECTION_IN
- self.transfer = None
- self.allow_none = False
+ if direction in [PARAM_DIRECTION_IN, PARAM_DIRECTION_OUT,
+ PARAM_DIRECTION_INOUT]:
+ self.direction = direction
+ else:
+ self.direction = PARAM_DIRECTION_IN
+
+ if transfer in [PARAM_TRANSFER_NONE, PARAM_TRANSFER_CONTAINER,
+ PARAM_TRANSFER_FULL]:
+ self.transfer = transfer
+ else:
+ self.transfer = None
+
+ self.allow_none = not not allow_none
def __repr__(self):
return 'Parameter(%r, %r)' % (self.name, self.type)
parameters = []
if (parameters_node is not None):
for paramnode in parameters_node.findall(_corens('parameter')):
- parameters.append(Parameter(paramnode.attrib.get('name'),
- self._parse_type(paramnode)))
+ param = Parameter(paramnode.attrib.get('name'),
+ self._parse_type(paramnode),
+ paramnode.attrib.get('direction'),
+ paramnode.attrib.get('transfer'),
+ paramnode.attrib.get('allow-none') == '1')
+ parameters.append(param)
if klass is Callback:
return klass(name, retval, parameters,
node.attrib.get(_cns('type')))
--output $@
GIRS += drawable-1.0.gir
+drawable-injected-1.0.gir: drawable-1.0.gir $(SCANNER) $(SCANNER_LIBS) Makefile
+ PYTHONPATH=$(top_builddir):$$PYTHONPATH $(CHECK_DEBUG) $(SCANNER) -v \
+ --inject drawable-1.0.gir DrawableAdditions.xml $@
+GIRS += drawable-injected-1.0.gir
+
foo-1.0.gir: libfoo.la foo.c foo.h utility-1.0.gir $(SCANNER) $(SCANNER_LIBS) Makefile
PYTHONPATH=$(top_builddir):$$PYTHONPATH $(CHECK_DEBUG) $(SCANNER) -v \
--add-include-path=$(top_builddir)/gir --add-include-path=. \