gobject-introspection r738 - in trunk: . giscanner tests/scanner



Author: jobi
Date: Fri Oct 17 09:29:34 2008
New Revision: 738
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=738&view=rev

Log:

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)



Modified:
   trunk/ChangeLog
   trunk/giscanner/ast.py
   trunk/giscanner/girparser.py
   trunk/tests/scanner/Makefile.am

Modified: trunk/giscanner/ast.py
==============================================================================
--- trunk/giscanner/ast.py	(original)
+++ trunk/giscanner/ast.py	Fri Oct 17 09:29:34 2008
@@ -78,6 +78,10 @@
 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
@@ -260,12 +264,23 @@
 
 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)

Modified: trunk/giscanner/girparser.py
==============================================================================
--- trunk/giscanner/girparser.py	(original)
+++ trunk/giscanner/girparser.py	Fri Oct 17 09:29:34 2008
@@ -162,8 +162,12 @@
         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')))

Modified: trunk/tests/scanner/Makefile.am
==============================================================================
--- trunk/tests/scanner/Makefile.am	(original)
+++ trunk/tests/scanner/Makefile.am	Fri Oct 17 09:29:34 2008
@@ -59,6 +59,11 @@
 	 --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=. \



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]