Bug 556489 – callback annotations
authorAndreas Rottmann <a.rottmann@gmx.at>
Sat, 3 Jan 2009 13:44:42 +0000 (13:44 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 3 Jan 2009 13:44:42 +0000 (13:44 +0000)
commitbc88ef7bcda59b15988d27517a4f4f7e0672e33b
tree7e3af8b1d130ca9e4b5e78fb7314340d02b11eca
parent00b0ae6bca603adc2c424c9a9384c60c4e4b1ccb
Bug 556489 – callback annotations

2008-01-03  Andreas Rottmann  <a.rottmann@gmx.at>

Bug 556489 – callback annotations

* giscanner/transformer.py

* tools/generate.c (write_callable_info): Write out the new scope,
closure and destroy attributes.

* giscanner/transformer.py (Transformer._type_is_callback): New
method, checking if a given type is a callback.
(Transformer._augment_callback_params): New method; adds
information (closure, destroy) to callback parameters.
(Transformer._handle_closure, Transformer._handle_destroy): New methods,
auxiliary to _augment_callback_params.
(Transformer._create_function): Call _augment_callback_params().
(Transformer._create_parameter): Handle scope option.

(Transformer._create_typedef_callback): New method, creates a
callback, and registers it in the typedef namespace
(Transformer._create_typedef): Use _create_typedef_callback()
instead of the plain _create_callback().

* giscanner/ast.py (Parameter): Added callback-related fields.
* giscanner/girwriter.py: Write out new Parameter fields.

* girepository/girnode.h (GIrNodeParam): Added fields scope,
closure and destroy.
* girepository/gtypelib.h (ArgBlob): Ditto.
* girepository/girparser.c (start_parameter): Handle new fields.

* girepository/girmodule.c (g_ir_module_build_typelib): Adjust
arg_blob_size, bump major version due to this change.
* girepository/girnode.c (g_ir_node_get_full_size_internal)
(g_ir_node_build_typelib)
* girepository/gtypelib.c (g_typelib_check_sanity): ArgBlob size
adjustments.
(g_ir_node_build_typelib): Fill in new ArgBlob flags from param.

* girepository/girepository.h (GIScope): New enumeration, listing
the different possible scopes for callbacks.

* girepository/ginfo.c (g_arg_info_get_scope)
(g_arg_info_get_closure, g_arg_info_get_destroy): Accessors for
callback-related argument indices (callback scope, closure for a
callback, destroy notification for a callback).

* tests/scanner/: Added testcases for new features.

svn path=/trunk/; revision=998
22 files changed:
ChangeLog
docs/typelib-format.txt
girepository/ginfo.c
girepository/girepository.h
girepository/girmodule.c
girepository/girnode.c
girepository/girnode.h
girepository/girparser.c
girepository/gtypelib.c
girepository/gtypelib.h
giscanner/ast.py
giscanner/girwriter.py
giscanner/transformer.py
tests/scanner/annotation-1.0-expected.gir
tests/scanner/annotation-1.0-expected.tgir
tests/scanner/annotation.c
tests/scanner/annotation.h
tests/scanner/utility-1.0-expected.gir
tests/scanner/utility-1.0-expected.tgir
tests/scanner/utility.c
tests/scanner/utility.h
tools/generate.c