summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Feltman <sfeltman@src.gnome.org>2014-02-27 02:05:54 -0800
committerSimon Feltman <sfeltman@src.gnome.org>2014-02-27 13:51:18 -0800
commit7027bb256d0d1ab5dd58b6d7fb02ff2f547ae4c2 (patch)
treee145d73c84392eb5f3b8c72c46a377f027d29a8c /tests
parent93a63a77cfda14f7bd69aef88d6a2502903d62f0 (diff)
downloadgobject-introspection-7027bb256d0d1ab5dd58b6d7fb02ff2f547ae4c2.tar.gz
g-ir-compiler: Add support for callback fields on GObjects
Use ParseState enum instead of a boolean for the ParseContexts embedded_type flag. This allows specific tracking of the embedded type currently being parsed which can now either be STATE_STRUCT_FIELD or STATE_CLASS_FIELD (or allow for future expansion). Add ParseState::STATE_NONE as the default for this field. Fix GObject FieldBlob validation to take into account the sizeof CallbackBlobs (copied from the struct validator). Add static g_object_info_get_field_offset which parallels g_struct_info_get_field_offset which is needed since callback fields may vary in size. https://bugzilla.gnome.org/show_bug.cgi?id=725198
Diffstat (limited to 'tests')
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-function_ptr.page14
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.function_ptr.page24
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.function_ptr.page19
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.function_ptr.page21
-rw-r--r--tests/scanner/Regress-1.0-expected.gir7
-rw-r--r--tests/scanner/regress.h3
6 files changed, 88 insertions, 0 deletions
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-function_ptr.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-function_ptr.page
new file mode 100644
index 00000000..dca9a51f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-function_ptr.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-function_ptr"
+ type="topic"
+ style="field"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+ <link xref="Regress.TestObj" group="field" type="guide"/>
+ </info>
+ <title>Regress.TestObj->function_ptr</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.function_ptr.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.function_ptr.page
new file mode 100644
index 00000000..34565407
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.function_ptr.page
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.function_ptr"
+ type="topic"
+ style="callback"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+ <link xref="index" group="callback" type="guide"/>
+ </info>
+ <title>Regress.TestObj.function_ptr</title>
+ <synopsis><code mime="text/x-csrc">
+void function_ptr (void);
+ </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.function_ptr.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.function_ptr.page
new file mode 100644
index 00000000..d9f3754c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.function_ptr.page
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.function_ptr"
+ type="topic"
+ style="callback"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+ <link xref="index" group="callback" type="guide"/>
+ </info>
+ <title>Regress.TestObj.function_ptr</title>
+ <synopsis><code mime="text/x-gjs">
+function onfunction_ptr(): void {
+}
+ </code></synopsis>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.function_ptr.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.function_ptr.page
new file mode 100644
index 00000000..caa0c191
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.function_ptr.page
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.function_ptr"
+ type="topic"
+ style="callback"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+ <link xref="index" group="callback" type="guide"/>
+ </info>
+ <title>Regress.TestObj.function_ptr</title>
+ <synopsis><code mime="text/x-python">
+@returns(none)
+def on_function_ptr():
+ </code></synopsis>
+
+
+<terms>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index d25e41c8..82c11d32 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -3450,6 +3450,13 @@ raise an error.</doc>
<field name="gtype">
<type name="GType" c:type="GType"/>
</field>
+ <field name="function_ptr">
+ <callback name="function_ptr">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </callback>
+ </field>
<glib:signal name="all"
when="first"
no-recurse="1"
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index ad2cb1fb..004ae36e 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -488,6 +488,9 @@ struct _RegressTestObj
double some_double;
char* string;
GType gtype;
+
+ /* < private > */
+ void (*function_ptr)();
};
typedef void (*RegressTestExternallyDefinedCallback) (RegressTestObj *obj, int someint);