gobject-introspection r198 - in trunk: . giscanner
- From: johan svn gnome org
- To: svn-commits-list gnome org
- Subject: gobject-introspection r198 - in trunk: . giscanner
- Date: Mon, 21 Apr 2008 19:46:21 +0100 (BST)
Author: johan
Date: Mon Apr 21 18:46:21 2008
New Revision: 198
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=198&view=rev
Log:
2008-04-21 Johan Dahlin <johan gnome org>
* giscanner/gidlwriter.py:
* giscanner/gobjecttreebuilder.py:
Add support for boxed types
Modified:
trunk/ChangeLog
trunk/giscanner/gidlwriter.py
trunk/giscanner/gobjecttreebuilder.py
Modified: trunk/giscanner/gidlwriter.py
==============================================================================
--- trunk/giscanner/gidlwriter.py (original)
+++ trunk/giscanner/gidlwriter.py Mon Apr 21 18:46:21 2008
@@ -1,7 +1,7 @@
from __future__ import with_statement
-from .gobjecttreebuilder import (GLibEnum, GLibEnumMember, GLibFlags,
- GLibObject, GLibInterface)
+from .gobjecttreebuilder import (GLibBoxed, GLibEnum, GLibEnumMember,
+ GLibFlags, GLibObject, GLibInterface)
from .treebuilder import Class, Enum, Function, Interface
from .xmlwriter import XMLWriter
@@ -29,6 +29,8 @@
self._write_class(node)
elif isinstance(node, Interface):
self._write_interface(node)
+ elif isinstance(node, GLibBoxed):
+ self._write_boxed(node)
else:
print 'WRITER: Unhandled node', node
@@ -93,3 +95,11 @@
with self.tagcontext('interface', attrs):
for method in interface.methods:
self._write_method(method)
+
+ def _write_boxed(self, boxed):
+ attrs = [('name', boxed.name)]
+ if isinstance(boxed, GLibBoxed):
+ attrs.append(('get-type', boxed.get_type))
+ with self.tagcontext('boxed', attrs):
+ for method in boxed.methods:
+ self._write_method(method)
Modified: trunk/giscanner/gobjecttreebuilder.py
==============================================================================
--- trunk/giscanner/gobjecttreebuilder.py (original)
+++ trunk/giscanner/gobjecttreebuilder.py Mon Apr 21 18:46:21 2008
@@ -60,6 +60,13 @@
self.get_type = get_type
+class GLibBoxed(Struct):
+ def __init__(self, name, methods, get_type):
+ Struct.__init__(self, name)
+ self.methods = []
+ self.get_type = get_type
+
+
class GLibInterface(Interface):
def __init__(self, name, methods, get_type):
Interface.__init__(self, name, methods)
@@ -158,7 +165,7 @@
object_name = first_arg.replace('*', '')
class_ = self._get_attribute(object_name)
- if class_ is None or not isinstance(class_, GLibObject):
+ if class_ is None or not isinstance(class_, (GLibObject, GLibBoxed)):
return False
# GtkButton -> gtk_button_, so we can figure out the method name
@@ -190,6 +197,8 @@
self._introspect_object(type_id, symbol)
elif fundamental_type_id == cgobject.TYPE_INTERFACE:
self._introspect_interface(type_id, symbol)
+ elif fundamental_type_id == cgobject.TYPE_BOXED:
+ self._introspect_boxed(type_id, symbol)
else:
print 'unhandled GType: %s' % (cgobject.type_name(type_id),)
@@ -218,3 +227,8 @@
type_name = cgobject.type_name(type_id)
node = GLibInterface(type_name, [], symbol)
self._add_attribute(node, replace=True)
+
+ def _introspect_boxed(self, type_id, symbol):
+ type_name = cgobject.type_name(type_id)
+ node = GLibBoxed(type_name, [], symbol)
+ self._add_attribute(node, replace=True)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]