summaryrefslogtreecommitdiff
path: root/tests/scanner
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2010-08-19 09:31:47 -0400
committerColin Walters <walters@verbum.org>2010-08-31 16:05:56 -0400
commitf8ddb18535cfcc60fc28095f0f6db2895d90edac (patch)
tree63162306bc979d01e12cff4ddcdce304ff888121 /tests/scanner
parente66d50732c8ce5cf3ef198e114d94e102a1c4911 (diff)
downloadgobject-introspection-f8ddb18535cfcc60fc28095f0f6db2895d90edac.tar.gz
tests/scanner: Update annotations and tests
First of all, add missing (transfer) annotations that will be required by the new scanner. Other changes: Don't use the (type bitfield) hack; the new scanner will not accept it. Use shifts in the flag constants instead. Use typedefs consistently for structures. Drop scanning of anonymous structure/union members.
Diffstat (limited to 'tests/scanner')
-rw-r--r--tests/scanner/Annotation-1.0-expected.gir6
-rw-r--r--tests/scanner/Foo-1.0-expected.gir14
-rw-r--r--tests/scanner/Regress-1.0-expected.gir4
-rw-r--r--tests/scanner/TestInherit-1.0-expected.gir2
-rw-r--r--tests/scanner/Utility-1.0-expected.gir6
-rw-r--r--tests/scanner/annotation.c26
-rw-r--r--tests/scanner/drawable.c12
-rw-r--r--tests/scanner/drawable.h2
-rw-r--r--tests/scanner/foo.c63
-rw-r--r--tests/scanner/foo.h12
-rw-r--r--tests/scanner/regress.c7
-rw-r--r--tests/scanner/regress.h5
-rw-r--r--tests/scanner/utility.c13
-rw-r--r--tests/scanner/utility.h11
14 files changed, 141 insertions, 42 deletions
diff --git a/tests/scanner/Annotation-1.0-expected.gir b/tests/scanner/Annotation-1.0-expected.gir
index 39c9b1df..1d73c250 100644
--- a/tests/scanner/Annotation-1.0-expected.gir
+++ b/tests/scanner/Annotation-1.0-expected.gir
@@ -82,7 +82,8 @@ and/or use gtk-doc annotations. -->
<attribute name="org.example.Test" value="cows"/>
<doc xml:whitespace="preserve">This is an object used to test annotations.</doc>
<method name="allow_none" c:identifier="annotation_object_allow_none">
- <return-value transfer-ownership="full">
+ <return-value transfer-ownership="none">
+ <doc xml:whitespace="preserve">%NULL always</doc>
<type name="GObject.Object" c:type="GObject*"/>
</return-value>
<parameters>
@@ -194,7 +195,8 @@ and/or use gtk-doc annotations. -->
c:identifier="annotation_object_do_not_use"
deprecated="Use annotation_object_create_object() instead."
deprecated-version="0.12">
- <return-value transfer-ownership="full">
+ <return-value transfer-ownership="none">
+ <doc xml:whitespace="preserve">%NULL always</doc>
<type name="GObject.Object" c:type="GObject*"/>
</return-value>
</method>
diff --git a/tests/scanner/Foo-1.0-expected.gir b/tests/scanner/Foo-1.0-expected.gir
index c2dd7309..003485bc 100644
--- a/tests/scanner/Foo-1.0-expected.gir
+++ b/tests/scanner/Foo-1.0-expected.gir
@@ -312,7 +312,7 @@ and/or use gtk-doc annotations. -->
<function name="get_default" c:identifier="foo_object_get_default">
<doc xml:whitespace="preserve">This function is intended to match clutter_stage_get_default which
uses a C sugar return type.</doc>
- <return-value transfer-ownership="full">
+ <return-value transfer-ownership="none">
<doc xml:whitespace="preserve">The global #FooSubobject</doc>
<type name="Subobject" c:type="FooObject*"/>
</return-value>
@@ -354,7 +354,8 @@ uses a C sugar return type.</doc>
</return-value>
</method>
<method name="external_type" c:identifier="foo_object_external_type">
- <return-value transfer-ownership="full">
+ <return-value transfer-ownership="none">
+ <doc xml:whitespace="preserve">%NULL always</doc>
<type name="Utility.Object" c:type="UtilityObject*"/>
</return-value>
</method>
@@ -383,7 +384,10 @@ uses a C sugar return type.</doc>
</parameter>
</parameters>
</method>
- <method name="new_cookie" c:identifier="foo_object_new_cookie">
+ <method name="new_cookie"
+ c:identifier="foo_object_new_cookie"
+ introspectable="0">
+ <doc xml:whitespace="preserve">Not sure why this test is here...</doc>
<return-value transfer-ownership="full">
<type name="ObjectCookie" c:type="FooObjectCookie"/>
</return-value>
@@ -687,7 +691,7 @@ exposed to language bindings.</doc>
<type name="ObjectClass" c:type="FooObjectClass"/>
</field>
</record>
- <record name="ThingWithArray" c:type="_FooThingWithArray">
+ <record name="ThingWithArray" c:type="FooThingWithArray">
<field name="x" writable="1">
<type name="gint" c:type="int"/>
</field>
@@ -703,7 +707,7 @@ exposed to language bindings.</doc>
<type name="gpointer" c:type="guchar*"/>
</field>
</record>
- <union name="Union" c:type="_FooUnion">
+ <union name="Union" c:type="FooUnion">
<field name="foo" writable="1">
<type name="gint" c:type="int"/>
</field>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index aeae8a65..e909a2fe 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -1986,7 +1986,6 @@ call and can be released on return.</doc>
</return-value>
</function>
<function name="test_strv_out" c:identifier="regress_test_strv_out">
- <doc xml:whitespace="preserve">No annotations here. We want the default to Do The Right Thing.</doc>
<return-value transfer-ownership="full">
<array c:type="char**">
<type name="utf8"/>
@@ -1994,8 +1993,7 @@ call and can be released on return.</doc>
</return-value>
</function>
<function name="test_strv_out_c" c:identifier="regress_test_strv_out_c">
- <doc xml:whitespace="preserve">No annotations here. We want the default to Do The Right Thing.</doc>
- <return-value transfer-ownership="full">
+ <return-value transfer-ownership="none">
<array c:type="char**">
<type name="utf8"/>
</array>
diff --git a/tests/scanner/TestInherit-1.0-expected.gir b/tests/scanner/TestInherit-1.0-expected.gir
index 1d8a262a..4ed155ea 100644
--- a/tests/scanner/TestInherit-1.0-expected.gir
+++ b/tests/scanner/TestInherit-1.0-expected.gir
@@ -93,7 +93,7 @@ and/or use gtk-doc annotations. -->
<type name="GObject.ObjectClass" c:type="GObjectClass"/>
</field>
</record>
- <record name="PixmapObjectClass" c:type="_TestInheritPixmapObjectClass">
+ <record name="PixmapObjectClass" c:type="TestInheritPixmapObjectClass">
<field name="parent_class" writable="1">
<type name="DrawableClass" c:type="TestInheritDrawableClass"/>
</field>
diff --git a/tests/scanner/Utility-1.0-expected.gir b/tests/scanner/Utility-1.0-expected.gir
index 7fbbed4a..f4c69092 100644
--- a/tests/scanner/Utility-1.0-expected.gir
+++ b/tests/scanner/Utility-1.0-expected.gir
@@ -18,7 +18,7 @@ and/or use gtk-doc annotations. -->
</alias>
<record name="Buffer" c:type="UtilityBuffer">
<field name="data" writable="1">
- <type name="GLib.pointer" c:type="char*"/>
+ <type name="gpointer" c:type="char*"/>
</field>
<field name="length" writable="1">
<type name="gulong" c:type="gsize"/>
@@ -28,7 +28,7 @@ and/or use gtk-doc annotations. -->
<field name="value" writable="1">
<type name="guint8" c:type="guint8"/>
</field>
- <record>
+ <record name="parts" c:type="parts">
<field name="first_nibble" writable="1" bits="4">
<type name="guint8" c:type="guint8"/>
</field>
@@ -120,7 +120,7 @@ and/or use gtk-doc annotations. -->
<field name="tag" writable="1">
<type name="gint" c:type="int"/>
</field>
- <union>
+ <union name="value" c:type="value">
<field name="v_pointer" writable="1">
<type name="gpointer" c:type="gpointer"/>
</field>
diff --git a/tests/scanner/annotation.c b/tests/scanner/annotation.c
index 015fd833..40df0860 100644
--- a/tests/scanner/annotation.c
+++ b/tests/scanner/annotation.c
@@ -89,7 +89,7 @@ annotation_object_class_init (AnnotationObjectClass *klass)
/**
* AnnotationObject::list-signal:
* @annotation: the annotation object
- * @list: (type GLib.List): (element-type utf8): (transfer container): a list of strings
+ * @list: (type GLib.List) (element-type utf8): (transfer container): a list of strings
*
* This is a signal which takes a list of strings, but it's not
* known by GObject as it's only marked as G_TYPE_POINTER
@@ -310,7 +310,7 @@ annotation_object_calleesowns (AnnotationObject *object,
* This is a test for returning a list of strings, where
* each string needs to be freed.
*
- * Return value: (element-type utf8) (transfer): list of strings
+ * Return value: (element-type utf8) (transfer full): list of strings
*/
GList*
annotation_object_get_strings (AnnotationObject *object)
@@ -328,7 +328,7 @@ annotation_object_get_strings (AnnotationObject *object)
* This is a test for returning a hash table mapping strings to
* objects.
*
- * Return value: (element-type utf8 GObject): hash table
+ * Return value: (element-type utf8 GObject) (transfer full): hash table
*/
GHashTable*
annotation_object_get_hash (AnnotationObject *object)
@@ -374,7 +374,7 @@ annotation_object_get_objects (AnnotationObject *object)
*
* Test returning a caller-owned object
*
- * Return value: (transfer): The object
+ * Return value: (transfer full): The object
**/
GObject*
annotation_object_create_object (AnnotationObject *object)
@@ -382,6 +382,11 @@ annotation_object_create_object (AnnotationObject *object)
return g_object_ref (object);
}
+/**
+ * annotation_object_use_buffer:
+ * @object: a #GObject
+ *
+ **/
void
annotation_object_use_buffer (AnnotationObject *object,
guchar *bytes)
@@ -504,7 +509,7 @@ annotation_object_set_data (AnnotationObject *object,
/**
* annotation_object_set_data2:
* @object: a #AnnotationObject
- * @data: (array length=length): The data
+ * @data: (array length=length) (element-type gint8): The data
* @length: Length of the data
*
* Test taking a gchar * with a length.
@@ -538,6 +543,8 @@ annotation_object_set_data3 (AnnotationObject *object,
* annotation_object_allow_none:
* @object: a #GObject
* @somearg: (allow-none):
+ *
+ * Returns: (transfer none): %NULL always
**/
GObject*
annotation_object_allow_none (AnnotationObject *object, const gchar *somearg)
@@ -562,6 +569,7 @@ annotation_object_notrans (AnnotationObject *object)
* annotation_object_do_not_use:
* @object: a #GObject
*
+ * Returns: (transfer none): %NULL always
* Deprecated: 0.12: Use annotation_object_create_object() instead.
**/
GObject*
@@ -571,7 +579,7 @@ annotation_object_do_not_use (AnnotationObject *object)
}
/**
- * annotation_object_watch:
+ * annotation_object_watch: (skip)
* @object: A #AnnotationObject
* @func: The callback
* @user_data: The callback data
@@ -620,7 +628,7 @@ annotation_init (int *argc, char ***argv)
* annotation_return_array:
* @length: (out): Number of return values
*
- * Return value: (array length=length): The return value
+ * Return value: (transfer full) (array length=length): The return value
**/
char **
annotation_return_array (int *length)
@@ -631,7 +639,7 @@ annotation_return_array (int *length)
/**
* annotation_string_zero_terminated:
*
- * Return value: (array zero-terminated=1): The return value
+ * Return value: (transfer full) (array zero-terminated=1): The return value
**/
char **
annotation_string_zero_terminated (void)
@@ -696,7 +704,7 @@ annotation_custom_destroy (AnnotationCallback callback,
/**
* annotation_get_source_file:
*
- * Return value: (type filename): Source file
+ * Return value: (type filename) (transfer full): Source file
*/
char *
annotation_get_source_file (void)
diff --git a/tests/scanner/drawable.c b/tests/scanner/drawable.c
index 0250fc05..0345b034 100644
--- a/tests/scanner/drawable.c
+++ b/tests/scanner/drawable.c
@@ -20,6 +20,12 @@ test_inherit_drawable_do_foo (TestInheritDrawable *drawable, int x)
}
+/**
+ * test_inherit_drawable_get_origin:
+ * @drawable:
+ * @x: (out):
+ * @y: (out):
+ */
void
test_inherit_drawable_get_origin (TestInheritDrawable *drawable, int *x, int *y)
{
@@ -27,6 +33,12 @@ test_inherit_drawable_get_origin (TestInheritDrawable *drawable, int *x, int *y)
*y = 0;
}
+/**
+ * test_inherit_drawable_get_size:
+ * @drawable:
+ * @width: (out):
+ * @height: (out):
+ */
void
test_inherit_drawable_get_size (TestInheritDrawable *drawable, guint *width, guint *height)
{
diff --git a/tests/scanner/drawable.h b/tests/scanner/drawable.h
index ccc2a0ef..d1752e44 100644
--- a/tests/scanner/drawable.h
+++ b/tests/scanner/drawable.h
@@ -23,6 +23,8 @@ void test_inherit_drawable_get_origin (TestInheritDrawable *drawable, int *x, in
void test_inherit_drawable_get_size (TestInheritDrawable *drawable, guint *width, guint *height);
void test_inherit_drawable_do_foo_maybe_throw (TestInheritDrawable *drawable, int x, GError **error);
+typedef struct _TestInheritPixmapObjectClass TestInheritPixmapObjectClass;
+
struct _TestInheritPixmapObjectClass
{
TestInheritDrawableClass parent_class;
diff --git a/tests/scanner/foo.c b/tests/scanner/foo.c
index 6239bfac..d66817f8 100644
--- a/tests/scanner/foo.c
+++ b/tests/scanner/foo.c
@@ -203,6 +203,12 @@ foo_object_init (FooObject *object)
}
+/**
+ * foo_object_external_type:
+ * @object: a #FooObject
+ *
+ * Returns: (transfer none): %NULL always
+ */
UtilityObject*
foo_object_external_type (FooObject *object)
{
@@ -227,6 +233,19 @@ foo_object_is_it_time_yet (FooObject *object, time_t time)
{
}
+/**
+ * foo_object_new_cookie: (skip)
+ * @object:
+ * @target:
+ *
+ * Not sure why this test is here...
+ */
+FooObjectCookie
+foo_object_new_cookie (FooObject *object, const char *target)
+{
+ return NULL;
+}
+
const char *
foo_object_get_name (FooObject *object)
{
@@ -286,7 +305,7 @@ foo_subobject_init (FooSubobject *object)
* This function is intended to match clutter_stage_get_default which
* uses a C sugar return type.
*
- * Return value: (type FooSubobject): The global #FooSubobject
+ * Return value: (type FooSubobject) (transfer none): The global #FooSubobject
*/
FooObject *
foo_object_get_default ()
@@ -449,12 +468,25 @@ void foo_test_unsigned (unsigned int uint)
{
}
+/**
+ * foo_test_string_array:
+ * @array: (array zero-terminated=1):
+ */
void
foo_test_string_array (char **array)
{
}
/**
+ * foo_test_string_array_with_g:
+ * @array: (array zero-terminated=1):
+ */
+void
+foo_test_string_array_with_g (gchar **array)
+{
+}
+
+/**
* foo_test_array:
* Returns: (element-type utf8) (transfer container):
*/
@@ -626,3 +658,32 @@ foo_skip_me (FooSkippable fs)
* FooForeignStruct: (foreign)
*
*/
+
+/**
+ * foo_test_varargs_callback: (skip)
+ *
+ */
+void
+foo_test_varargs_callback (gint i, FooVarargsCallback callback)
+{
+}
+
+/**
+ * foo_test_varargs_callback2: (skip)
+ *
+ */
+void
+foo_test_varargs_callback2 (FooVarargsCallback callback)
+{
+}
+
+/**
+ * foo_test_varargs_callback3: (skip)
+ *
+ */
+void
+foo_test_varargs_callback3 (FooVarargsCallback callback,
+ FooVarargsCallback callback2)
+{
+}
+
diff --git a/tests/scanner/foo.h b/tests/scanner/foo.h
index 7120d015..f31a79e2 100644
--- a/tests/scanner/foo.h
+++ b/tests/scanner/foo.h
@@ -298,23 +298,27 @@ union _FooBUnion
FooBRect *rect;
};
-typedef union _FooUnion
+typedef union _FooUnion FooUnion;
+
+union _FooUnion
{
int foo;
-} FooUnion;
+};
typedef struct _FooUtilityStruct FooUtilityStruct;
struct _FooUtilityStruct
{
UtilityStruct bar;
};
-typedef struct _FooThingWithArray
+
+typedef struct _FooThingWithArray FooThingWithArray;
+struct _FooThingWithArray
{
int x;
int y;
char lines[80];
guchar *data;
-} FooThingWithArray;
+} ;
FooBUnion *foo_bunion_new (void);
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index e4326fb4..2f3b8279 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -629,7 +629,8 @@ regress_test_strv_in_container (char **arr)
* regress_test_array_gtype_in:
* @n_types:
* @types: (array length=n_types): List of types
- * Return value: string representation of provided types
+ *
+ * Return value: (transfer full): string representation of provided types
* */
char *
regress_test_array_gtype_in (int n_types, GType *types)
@@ -650,8 +651,6 @@ regress_test_array_gtype_in (int n_types, GType *types)
/**
* regress_test_strv_out:
*
- * No annotations here. We want the default to Do The Right Thing.
- *
* Returns: (transfer full):
*/
char **
@@ -761,7 +760,7 @@ regress_test_array_int_in_take (int n_ints, int *ints)
/**
* regress_test_strv_out_c:
*
- * No annotations here. We want the default to Do The Right Thing.
+ * Returns: (transfer none):
*/
const char * const*
regress_test_strv_out_c (void)
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 59117122..6dafd9c5 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -349,6 +349,11 @@ int regress_test_sub_obj_instance_method (RegressTestSubObj *obj);
typedef struct _RegressTestFundamentalObject RegressTestFundamentalObject;
typedef struct _RegressTestFundamentalObjectClass RegressTestFundamentalObjectClass;
+/**
+ * RegressTestFundamentalObjectCopyFunction:
+ *
+ * Returns: (transfer full):
+ */
typedef RegressTestFundamentalObject * (*RegressTestFundamentalObjectCopyFunction) (const RegressTestFundamentalObject *obj);
typedef void (*RegressTestFundamentalObjectFinalizeFunction) (RegressTestFundamentalObject *obj);
diff --git a/tests/scanner/utility.c b/tests/scanner/utility.c
index 5ae5ed3e..97afa430 100644
--- a/tests/scanner/utility.c
+++ b/tests/scanner/utility.c
@@ -3,13 +3,9 @@
G_DEFINE_TYPE (UtilityObject, utility_object, G_TYPE_OBJECT);
/**
- * UtilityFlagType: (type bitfield)
- **/
-
-/**
* UtilityBuffer:
*
- * @data: (type pointer): the data
+ * @data: (type gpointer): the data
**/
static void
@@ -34,6 +30,13 @@ utility_object_watch_dir (UtilityObject *object,
}
+/**
+ * utility_dir_foreach:
+ * @path::
+ * @func: (scope call):
+ * @user_data::
+ *
+ */
void
utility_dir_foreach (const char *path, UtilityFileFunc func, gpointer user_data)
{
diff --git a/tests/scanner/utility.h b/tests/scanner/utility.h
index a3eb3ef8..8dc6d549 100644
--- a/tests/scanner/utility.h
+++ b/tests/scanner/utility.h
@@ -31,7 +31,7 @@ typedef struct
gpointer v_pointer;
double v_real;
long v_integer;
- };
+ } value;
} UtilityTaggedValue;
typedef union
@@ -41,7 +41,7 @@ typedef union
{
guint8 first_nibble : 4;
guint8 second_nibble : 4;
- };
+ } parts;
} UtilityByte;
/* This one is similiar to Soup.Buffer */
@@ -67,11 +67,12 @@ typedef enum
UTILITY_ENUM_C
} UtilityEnumType;
+/* The shift operators here should imply bitfield */
typedef enum
{
- UTILITY_FLAG_A = 1,
- UTILITY_FLAG_B = 2,
- UTILITY_FLAG_C = 4
+ UTILITY_FLAG_A = 1 << 0,
+ UTILITY_FLAG_B = 1 << 1,
+ UTILITY_FLAG_C = 1 << 2
} UtilityFlagType;
typedef struct