diff options
author | Simon Feltman <sfeltman@src.gnome.org> | 2014-02-27 02:05:54 -0800 |
---|---|---|
committer | Simon Feltman <sfeltman@src.gnome.org> | 2014-02-27 13:51:18 -0800 |
commit | 7027bb256d0d1ab5dd58b6d7fb02ff2f547ae4c2 (patch) | |
tree | e145d73c84392eb5f3b8c72c46a377f027d29a8c /tests | |
parent | 93a63a77cfda14f7bd69aef88d6a2502903d62f0 (diff) | |
download | gobject-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')
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); |