gdbus: add and use helpers for table declarations

This commit is contained in:
Lucas De Marchi 2012-05-20 02:07:28 -03:00 committed by Marcel Holtmann
parent d1a1a9bcc9
commit 8e815c100b
2 changed files with 104 additions and 1 deletions

View File

@ -118,6 +118,108 @@ typedef struct {
GDBusSecurityFunction function;
} GDBusSecurityTable;
#define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } }
#define _GDBUS_METHOD(_name, _signature, _reply, _in_args, _out_args, _function) \
.name = _name, \
.signature = _signature, \
.reply = _reply, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function
#define _GDBUS_ASYNC_METHOD(_name, _signature, _reply, _in_args, _out_args, _function) \
.name = _name, \
.signature = _signature, \
.reply = _reply, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_ASYNC
#define _GDBUS_DEPRECATED_METHOD(_name, _signature, _reply, _in_args, _out_args, _function) \
.name = _name, \
.signature = _signature, \
.reply = _reply, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_DEPRECATED
#define _GDBUS_DEPRECATED_ASYNC_METHOD(_name, _signature, _reply, _in_args, _out_args, _function) \
.name = _name, \
.signature = _signature, \
.reply = _reply, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_ASYNC | G_DBUS_METHOD_FLAG_DEPRECATED
#define _GDBUS_NOREPLY_METHOD(_name, _signature, _reply, _in_args, _out_args, _function) \
.name = _name, \
.signature = _signature, \
.reply = _reply, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_NOREPLY
#define _GDBUS_SIGNAL(_name, _signature, _args) \
.name = _name, \
.signature = _signature, \
.args = _args
#define _GDBUS_DEPRECATED_SIGNAL(_name, _signature, _args) \
.name = _name, \
.signature = _signature, \
.args = _args, \
.flags = G_DBUS_SIGNAL_FLAG_DEPRECATED
/* Helpers with no signature and reply */
#define GDBUS_METHOD(_name, _in_args, _out_args, _function) \
.name = _name, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function
#define GDBUS_ASYNC_METHOD(_name, _in_args, _out_args, _function) \
.name = _name, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_ASYNC
#define GDBUS_DEPRECATED_METHOD(_name, _in_args, _out_args, _function) \
.name = _name, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_DEPRECATED
#define GDBUS_DEPRECATED_ASYNC_METHOD(_name, _in_args, _out_args, _function) \
.name = _name, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_ASYNC | G_DBUS_METHOD_FLAG_DEPRECATED
#define GDBUS_NOREPLY_METHOD(_name, _in_args, _out_args, _function) \
.name = _name, \
.in_args = _in_args, \
.out_args = _out_args, \
.function = _function, \
.flags = G_DBUS_METHOD_FLAG_NOREPLY
#define GDBUS_SIGNAL(_name, _args) \
.name = _name, \
.args = _args
#define GDBUS_DEPRECATED_SIGNAL(_name, _args) \
.name = _name, \
.args = _args, \
.flags = G_DBUS_SIGNAL_FLAG_DEPRECATED
gboolean g_dbus_register_interface(DBusConnection *connection,
const char *path, const char *name,
const GDBusMethodTable *methods,

View File

@ -497,7 +497,8 @@ done:
}
static const GDBusMethodTable introspect_methods[] = {
{ "Introspect", "", "s", introspect },
{ _GDBUS_METHOD("Introspect", "", "s", NULL,
GDBUS_ARGS({ "xml", "s" }), introspect) },
{ }
};