summaryrefslogtreecommitdiffstats
path: root/glib
diff options
context:
space:
mode:
authorRobert McQueen <robot101@debian.org>2006-01-27 16:40:54 +0000
committerRobert McQueen <robot101@debian.org>2006-01-27 16:40:54 +0000
commit2b5e0615cf16b9de8de4be902dec5bfc627d4e9a (patch)
tree15eb7947784a243ee81bec53cf44ec4845813b8a /glib
parent8e00b10d134e4fb844cdc961e5c3230edf194b57 (diff)
2006-01-27 Robert McQueen <robot101@debian.org>
* glib/dbus-binding-tool-glib.[ch]: Patch based on Ricardo Kekki's patch to use an annotation org.freedesktop.DBus.GLib.ClientCSymbol when generating the client-side methods, instead of overloading CSymbol which broke everything horribly. My apologies.
Diffstat (limited to 'glib')
-rw-r--r--glib/dbus-binding-tool-glib.c45
-rw-r--r--glib/dbus-binding-tool-glib.h1
2 files changed, 19 insertions, 27 deletions
diff --git a/glib/dbus-binding-tool-glib.c b/glib/dbus-binding-tool-glib.c
index 719296f0..21e02744 100644
--- a/glib/dbus-binding-tool-glib.c
+++ b/glib/dbus-binding-tool-glib.c
@@ -898,16 +898,13 @@ iface_to_c_prefix (const char *iface)
static char *
compute_client_method_name (const char *iface_prefix, MethodInfo *method)
{
- GString *ret;
- char *method_name_uscored;
+ char *method_name_uscored, *ret;
- ret = g_string_new (iface_prefix);
-
method_name_uscored = _dbus_gutils_wincaps_to_uscore (method_info_get_name (method));
- g_string_append_c (ret, '_');
- g_string_append (ret, method_name_uscored);
+ ret = g_strdup_printf ("%s_%s", iface_prefix, method_name_uscored);
g_free (method_name_uscored);
- return g_string_free (ret, FALSE);
+
+ return ret;
}
static gboolean
@@ -1331,25 +1328,22 @@ static gboolean
write_async_method_client (GIOChannel *channel, InterfaceInfo *interface, MethodInfo *method, GError **error)
{
char *method_name, *iface_prefix;
- char *interface_c_name;
+ const char *interface_c_name;
iface_prefix = iface_to_c_prefix (interface_info_get_name (interface));
- interface_c_name = interface_info_get_annotation (interface, DBUS_GLIB_ANNOTATION_C_SYMBOL);
+ interface_c_name = interface_info_get_annotation (interface, DBUS_GLIB_ANNOTATION_CLIENT_C_SYMBOL);
if (interface_c_name == NULL)
{
- interface_c_name = iface_prefix;
+ interface_c_name = (const char *) iface_prefix;
}
- method_name = g_strdup (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_C_SYMBOL));
+ method_name = g_strdup (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_CLIENT_C_SYMBOL));
if (method_name == NULL)
{
- char *method_name_uscored;
- method_name_uscored = _dbus_gutils_wincaps_to_uscore (method_info_get_name (method));
- method_name = g_strdup_printf ("%s_%s", interface_c_name, method_name_uscored);
- g_free (method_name_uscored);
+ method_name = compute_client_method_name (interface_c_name, method);
}
g_free(iface_prefix);
-
+
/* Write the typedef for the client callback */
if (!write_printf_to_iochannel ("typedef void (*%s_reply) (DBusGProxy *proxy, ", channel, error, method_name))
goto io_lose;
@@ -1423,6 +1417,7 @@ write_async_method_client (GIOChannel *channel, InterfaceInfo *interface, Method
g_free (method_name);
return TRUE;
io_lose:
+ g_free (method_name);
return FALSE;
}
@@ -1460,7 +1455,7 @@ generate_client_glue (BaseInfo *base, DBusBindingToolCData *data, GError **error
GSList *methods;
GSList *tmp;
char *iface_prefix;
- char *interface_c_name;
+ const char *interface_c_name;
channel = data->channel;
@@ -1469,12 +1464,11 @@ generate_client_glue (BaseInfo *base, DBusBindingToolCData *data, GError **error
methods = interface_info_get_methods (interface);
iface_prefix = iface_to_c_prefix (interface_info_get_name (interface));
- interface_c_name = interface_info_get_annotation (interface, DBUS_GLIB_ANNOTATION_C_SYMBOL);
+ interface_c_name = interface_info_get_annotation (interface, DBUS_GLIB_ANNOTATION_CLIENT_C_SYMBOL);
if (interface_c_name == NULL)
{
- interface_c_name = iface_prefix;
+ interface_c_name = (const char *) iface_prefix;
}
-
if (!write_printf_to_iochannel ("#ifndef DBUS_GLIB_CLIENT_WRAPPERS_%s\n"
"#define DBUS_GLIB_CLIENT_WRAPPERS_%s\n\n",
@@ -1492,15 +1486,10 @@ generate_client_glue (BaseInfo *base, DBusBindingToolCData *data, GError **error
gboolean is_noreply;
method = (MethodInfo *) tmp->data;
- method_c_name = g_strdup (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_C_SYMBOL));
+ method_c_name = g_strdup (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_CLIENT_C_SYMBOL));
if (method_c_name == NULL)
{
- char *method_name_uscored;
- method_name_uscored = _dbus_gutils_wincaps_to_uscore (method_info_get_name (method));
- method_c_name = g_strdup_printf ("%s_%s",
- interface_c_name,
- method_name_uscored);
- g_free (method_name_uscored);
+ method_c_name = compute_client_method_name (interface_c_name, method);
}
is_noreply = method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_NOREPLY) != NULL;
@@ -1569,6 +1558,8 @@ generate_client_glue (BaseInfo *base, DBusBindingToolCData *data, GError **error
g_free (iface_prefix);
goto io_lose;
}
+
+ g_free (iface_prefix);
}
return TRUE;
io_lose:
diff --git a/glib/dbus-binding-tool-glib.h b/glib/dbus-binding-tool-glib.h
index 83f00a2d..7a2f0e97 100644
--- a/glib/dbus-binding-tool-glib.h
+++ b/glib/dbus-binding-tool-glib.h
@@ -26,6 +26,7 @@
G_BEGIN_DECLS
#define DBUS_GLIB_ANNOTATION_C_SYMBOL "org.freedesktop.DBus.GLib.CSymbol"
+#define DBUS_GLIB_ANNOTATION_CLIENT_C_SYMBOL "org.freedesktop.DBus.GLib.ClientCSymbol"
#define DBUS_GLIB_ANNOTATION_ASYNC "org.freedesktop.DBus.GLib.Async"
#define DBUS_GLIB_ANNOTATION_CONST "org.freedesktop.DBus.GLib.Const"
#define DBUS_GLIB_ANNOTATION_RETURNVAL "org.freedesktop.DBus.GLib.ReturnVal"