summaryrefslogtreecommitdiffstats
path: root/glib/dbus-gparser.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2005-07-09 17:52:52 +0000
committerColin Walters <walters@verbum.org>2005-07-09 17:52:52 +0000
commitb1ae5399f82a88ba397d55f224d00f437564bac5 (patch)
tree5318877a5a8dffa85d2fa9e624e80fb9e9715dc4 /glib/dbus-gparser.c
parent0ccef79d7e9d1b19cdb10b3a147b64b41686905d (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.c5
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 ();