gobject-introspection r670 - in trunk: . giscanner tests/scanner
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: gobject-introspection r670 - in trunk: . giscanner tests/scanner
- Date: Sat, 11 Oct 2008 21:54:30 +0000 (UTC)
Author: juergbi
Date: Sat Oct 11 21:54:30 2008
New Revision: 670
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=670&view=rev
Log:
2008-10-11 JÃrg Billeter <j bitron ch>
Bug 552374: Const strings should be identified in the gir.
* giscanner/transformer.py: support string memory management
* tests/scanner/foo.h: use char * and const char *
* tests/scanner/foo-expected.gir: test that
Modified:
trunk/ChangeLog
trunk/giscanner/transformer.py
trunk/tests/scanner/foo-expected.gir
trunk/tests/scanner/foo.c
trunk/tests/scanner/foo.h
Modified: trunk/giscanner/transformer.py
==============================================================================
--- trunk/giscanner/transformer.py (original)
+++ trunk/giscanner/transformer.py Sat Oct 11 21:54:30 2008
@@ -33,7 +33,8 @@
CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT,
CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
CSYMBOL_TYPE_ENUM, CSYMBOL_TYPE_UNION, CSYMBOL_TYPE_OBJECT,
- CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS)
+ CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS,
+ TYPE_QUALIFIER_CONST)
from .odict import odict
from .utils import strip_common_prefix, to_underscores
@@ -372,6 +373,14 @@
return Array(ctype,
self._parse_ctype(derefed))
resolved_type_name = self._parse_ctype(ctype)
+
+ # string memory management
+ if ctype == 'char*':
+ if source_type.base_type.type_qualifier & TYPE_QUALIFIER_CONST:
+ options.append('notransfer')
+ else:
+ options.append('transfer')
+
return Type(resolved_type_name, ctype)
def _create_parameter(self, symbol, options):
@@ -408,8 +417,10 @@
for option in options:
if option == 'transfer':
return_.transfer = True
+ elif option == 'notransfer':
+ return_.transfer = False
else:
- print 'Unhandled parameter annotation option: %r' % (
+ print 'Unhandled return type annotation option: %r' % (
option, )
return return_
Modified: trunk/tests/scanner/foo-expected.gir
==============================================================================
--- trunk/tests/scanner/foo-expected.gir (original)
+++ trunk/tests/scanner/foo-expected.gir Sat Oct 11 21:54:30 2008
@@ -113,6 +113,16 @@
</parameter>
</parameters>
</method>
+ <method name="get_name" c:identifier="foo_object_get_name">
+ <return-value>
+ <type name="utf8" c:type="char*"/>
+ </return-value>
+ </method>
+ <method name="dup_name" c:identifier="foo_object_dup_name">
+ <return-value transfer-ownership="1">
+ <type name="utf8" c:type="char*"/>
+ </return-value>
+ </method>
<property name="string" writable="1">
<type name="utf8" c:type="gchararray"/>
</property>
Modified: trunk/tests/scanner/foo.c
==============================================================================
--- trunk/tests/scanner/foo.c (original)
+++ trunk/tests/scanner/foo.c Sat Oct 11 21:54:30 2008
@@ -155,6 +155,18 @@
{
}
+const char *
+foo_object_get_name (FooObject *object)
+{
+ return "foo";
+}
+
+char *
+foo_object_dup_name (FooObject *object)
+{
+ return g_strdup ("foo");
+}
+
G_DEFINE_TYPE (FooSubobject, foo_subobject, FOO_TYPE_OBJECT);
static void
Modified: trunk/tests/scanner/foo.h
==============================================================================
--- trunk/tests/scanner/foo.h (original)
+++ trunk/tests/scanner/foo.h Sat Oct 11 21:54:30 2008
@@ -66,6 +66,10 @@
void foo_object_is_it_time_yet (FooObject *object, time_t time);
+const char * foo_object_get_name (FooObject *object);
+
+char * foo_object_dup_name (FooObject *object);
+
struct _FooSubobject
{
FooObject parent_instance;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]