diff options
author | Colin Walters <walters@verbum.org> | 2005-07-09 17:52:52 +0000 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2005-07-09 17:52:52 +0000 |
commit | b1ae5399f82a88ba397d55f224d00f437564bac5 (patch) | |
tree | 5318877a5a8dffa85d2fa9e624e80fb9e9715dc4 /glib/dbus-gparser.c | |
parent | 0ccef79d7e9d1b19cdb10b3a147b64b41686905d (diff) |
2005-07-09 Colin Walters <walters@verbum.org>
* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
Define.
* glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
annotation.
* glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
(method_dir_signature_from_object_info): Handle arg_iterate change.
(write_interface): Ditto.
(lookup_object_info): Don't barf if format_version is > 0.
(invoke_object_method): Handle arg constness.
* glib/dbus-gidl.c (struct ArgInfo): Add annotations.
(arg_info_new): Create.
(arg_info_unref): Destroy.
(arg_info_get_annotations, arg_info_get_annotation)
(arg_info_add_annotation): New functions.
* glib/dbus-gidl.h: Prototype them.
* glib/dbus-gparser.c (parse_annotation): Allow annotations in
args, disallow them in properties.
(parse_annotation): Handle arg annotations.
* test/glib/test-service-glib.xml:
* test/glib/test-service-glib.c: Update to make some methods
const.
Diffstat (limited to 'glib/dbus-gparser.c')
-rw-r--r-- | glib/dbus-gparser.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/glib/dbus-gparser.c b/glib/dbus-gparser.c index 49593839..4c962874 100644 --- a/glib/dbus-gparser.c +++ b/glib/dbus-gparser.c @@ -694,9 +694,10 @@ parse_annotation (Parser *parser, const char *name; const char *value; - if (!(parser->method || parser->interface) || + if (!(parser->method || parser->interface || parser->arg) || parser->node_stack == NULL || parser->signal || + parser->property || parser->in_annotation) { g_set_error (error, G_MARKUP_ERROR, @@ -735,6 +736,8 @@ parse_annotation (Parser *parser, method_info_add_annotation (parser->method, name, value); else if (parser->interface) interface_info_add_annotation (parser->interface, name, value); + else if (parser->arg) + arg_info_add_annotation (parser->arg, name, value); else g_assert_not_reached (); |