2005-06-14 Colin Walters <walters@verbum.org>

* glib/dbus-binding-tool-glib.c:
	* glib/dbus-gobject.c:
	* glib/dbus-gvalue.c: Fix indentation and brace style.
This commit is contained in:
Colin Walters 2005-06-14 15:55:10 +00:00
parent f5c4d6b55c
commit 50f85baa3d
4 changed files with 155 additions and 134 deletions

View file

@ -1,3 +1,9 @@
2005-06-14 Colin Walters <walters@verbum.org>
* glib/dbus-binding-tool-glib.c:
* glib/dbus-gobject.c:
* glib/dbus-gvalue.c: Fix indentation and brace style.
2005-06-14 Ross Burton <ross@burtonini.com>.
* glib/dbus-glib.h: Make DBusGMethodInvocation

View file

@ -152,32 +152,35 @@ compute_marshaller (MethodInfo *method, GError **error)
}
}
if (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_ASYNC) != NULL) {
if (!first)
g_string_append (ret, ",");
g_string_append (ret, "POINTER");
first = FALSE;
} else {
/* Append pointer for each out arg storage */
for (elt = method_info_get_args (method); elt; elt = elt->next)
if (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_ASYNC) != NULL)
{
ArgInfo *arg = elt->data;
if (arg_info_get_direction (arg) == ARG_OUT)
{
if (!first)
g_string_append (ret, ",");
else
first = FALSE;
g_string_append (ret, "POINTER");
}
if (!first)
g_string_append (ret, ",");
g_string_append (ret, "POINTER");
first = FALSE;
}
/* Final GError parameter */
if (!first)
g_string_append (ret, ",");
g_string_append (ret, "POINTER");
else
{
/* Append pointer for each out arg storage */
for (elt = method_info_get_args (method); elt; elt = elt->next)
{
ArgInfo *arg = elt->data;
}
if (arg_info_get_direction (arg) == ARG_OUT)
{
if (!first)
g_string_append (ret, ",");
else
first = FALSE;
g_string_append (ret, "POINTER");
}
}
/* Final GError parameter */
if (!first)
g_string_append (ret, ",");
g_string_append (ret, "POINTER");
}
return g_string_free (ret, FALSE);
@ -226,22 +229,25 @@ compute_marshaller_name (MethodInfo *method, const char *prefix, GError **error)
}
}
if (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_ASYNC) != NULL) {
g_string_append (ret, "_POINTER");
} else {
/* Append pointer for each out arg storage */
for (elt = method_info_get_args (method); elt; elt = elt->next)
if (method_info_get_annotation (method, DBUS_GLIB_ANNOTATION_ASYNC) != NULL)
{
ArgInfo *arg = elt->data;
if (arg_info_get_direction (arg) == ARG_OUT)
{
g_string_append (ret, "_POINTER");
}
g_string_append (ret, "_POINTER");
}
else
{
/* Append pointer for each out arg storage */
for (elt = method_info_get_args (method); elt; elt = elt->next)
{
ArgInfo *arg = elt->data;
if (arg_info_get_direction (arg) == ARG_OUT)
{
g_string_append (ret, "_POINTER");
}
}
/* Final GError parameter */
g_string_append (ret, "_POINTER");
}
/* Final GError parameter */
g_string_append (ret, "_POINTER");
}
return g_string_free (ret, FALSE);
}

View file

@ -762,11 +762,10 @@ invoke_object_method (GObject *object,
gerror = NULL;
if (strcmp (string_table_lookup (get_method_data (object_info, method), 2), "A") == 0) {
if (strcmp (string_table_lookup (get_method_data (object_info, method), 2), "A") == 0)
call_only = TRUE;
} else {
else
call_only = FALSE;
}
/* This is evil. We do this to work around the fact that
* the generated glib marshallers check a flag in the closure object
@ -811,83 +810,87 @@ invoke_object_method (GObject *object,
g_value_set_object (&object_value, object);
g_value_array_prepend (value_array, &object_value);
if (call_only) {
GValue context_value = {0,};
DBusGMethodInvocation *context;
context = g_new (DBusGMethodInvocation, 1);
context->connection = dbus_g_connection_ref (DBUS_G_CONNECTION_FROM_CONNECTION (connection));
context->message = dbus_g_message_ref (DBUS_G_MESSAGE_FROM_MESSAGE (message));
context->object = object_info;
context->method = method;
g_value_init (&context_value, G_TYPE_POINTER);
g_value_set_pointer (&context_value, context);
g_value_array_append (value_array, &context_value);
} else {
out_signature = method_output_signature_from_object_info (object_info, method);
/* Count number of output parameters */
dbus_signature_iter_init (&out_signature_iter, out_signature);
out_param_count = 0;
while ((current_type = dbus_signature_iter_get_current_type (&out_signature_iter)) != DBUS_TYPE_INVALID)
if (call_only)
{
out_param_count++;
dbus_signature_iter_next (&out_signature_iter);
GValue context_value = {0,};
DBusGMethodInvocation *context;
context = g_new (DBusGMethodInvocation, 1);
context->connection = dbus_g_connection_ref (DBUS_G_CONNECTION_FROM_CONNECTION (connection));
context->message = dbus_g_message_ref (DBUS_G_MESSAGE_FROM_MESSAGE (message));
context->object = object_info;
context->method = method;
g_value_init (&context_value, G_TYPE_POINTER);
g_value_set_pointer (&context_value, context);
g_value_array_append (value_array, &context_value);
}
/* Create an array to store the actual values of OUT
* parameters. Then, create a GValue boxed POINTER
* to each of those values, and append to the invocation,
* so the method can return the OUT parameters.
*/
out_param_values = g_array_sized_new (FALSE, TRUE, sizeof (GTypeCValue), out_param_count);
/* We have a special array of GValues for toplevel GValue return
* types.
*/
out_param_gvalues = g_value_array_new (out_param_count);
out_param_pos = 0;
out_param_gvalue_pos = 0;
dbus_signature_iter_init (&out_signature_iter, out_signature);
while ((current_type = dbus_signature_iter_get_current_type (&out_signature_iter)) != DBUS_TYPE_INVALID)
else
{
GValue value = {0, };
GTypeCValue storage;
out_signature = method_output_signature_from_object_info (object_info, method);
g_value_init (&value, G_TYPE_POINTER);
/* Count number of output parameters */
dbus_signature_iter_init (&out_signature_iter, out_signature);
out_param_count = 0;
while ((current_type = dbus_signature_iter_get_current_type (&out_signature_iter)) != DBUS_TYPE_INVALID)
{
out_param_count++;
dbus_signature_iter_next (&out_signature_iter);
}
/* We special case variants to make method invocation a bit nicer */
if (current_type != DBUS_TYPE_VARIANT)
/* Create an array to store the actual values of OUT
* parameters. Then, create a GValue boxed POINTER
* to each of those values, and append to the invocation,
* so the method can return the OUT parameters.
*/
out_param_values = g_array_sized_new (FALSE, TRUE, sizeof (GTypeCValue), out_param_count);
/* We have a special array of GValues for toplevel GValue return
* types.
*/
out_param_gvalues = g_value_array_new (out_param_count);
out_param_pos = 0;
out_param_gvalue_pos = 0;
dbus_signature_iter_init (&out_signature_iter, out_signature);
while ((current_type = dbus_signature_iter_get_current_type (&out_signature_iter)) != DBUS_TYPE_INVALID)
{
memset (&storage, 0, sizeof (storage));
g_array_append_val (out_param_values, storage);
g_value_set_pointer (&value, &(g_array_index (out_param_values, GTypeCValue, out_param_pos)));
out_param_pos++;
GValue value = {0, };
GTypeCValue storage;
g_value_init (&value, G_TYPE_POINTER);
/* We special case variants to make method invocation a bit nicer */
if (current_type != DBUS_TYPE_VARIANT)
{
memset (&storage, 0, sizeof (storage));
g_array_append_val (out_param_values, storage);
g_value_set_pointer (&value, &(g_array_index (out_param_values, GTypeCValue, out_param_pos)));
out_param_pos++;
}
else
{
g_value_array_append (out_param_gvalues, NULL);
g_value_set_pointer (&value, out_param_gvalues->values + out_param_gvalue_pos);
out_param_gvalue_pos++;
}
g_value_array_append (value_array, &value);
dbus_signature_iter_next (&out_signature_iter);
}
else
{
g_value_array_append (out_param_gvalues, NULL);
g_value_set_pointer (&value, out_param_gvalues->values + out_param_gvalue_pos);
out_param_gvalue_pos++;
}
g_value_array_append (value_array, &value);
dbus_signature_iter_next (&out_signature_iter);
/* Append GError as final argument */
g_value_init (&error_value, G_TYPE_POINTER);
g_value_set_pointer (&error_value, &gerror);
g_value_array_append (value_array, &error_value);
}
/* Append GError as final argument */
g_value_init (&error_value, G_TYPE_POINTER);
g_value_set_pointer (&error_value, &gerror);
g_value_array_append (value_array, &error_value);
}
/* Actually invoke method */
g_value_init (&return_value, G_TYPE_BOOLEAN);
method->marshaller (&closure, &return_value,
value_array->n_values,
value_array->values,
NULL, method->function);
if (call_only) {
result = DBUS_HANDLER_RESULT_HANDLED;
goto done;
}
if (call_only)
{
result = DBUS_HANDLER_RESULT_HANDLED;
goto done;
}
had_error = !g_value_get_boolean (&return_value);
if (!had_error)
@ -943,12 +946,13 @@ invoke_object_method (GObject *object,
done:
g_free (in_signature);
g_free (out_signature);
if (!call_only) {
g_array_free (out_param_values, TRUE);
g_value_array_free (out_param_gvalues);
g_value_unset (&object_value);
g_value_unset (&error_value);
}
if (!call_only)
{
g_array_free (out_param_values, TRUE);
g_value_array_free (out_param_gvalues);
g_value_unset (&object_value);
g_value_unset (&error_value);
}
g_value_array_free (value_array);
g_value_unset (&return_value);
return result;
@ -1175,11 +1179,12 @@ export_signals (DBusGConnection *connection, GObject *object)
g_signal_query (ids[i], &query);
if (query.return_type != G_TYPE_NONE) {
g_warning("Not exporting signal '%s' as it has a return type %s", query.signal_name, g_type_name (query.return_type));
continue; /* FIXME: these could be listed as methods ? */
}
if (query.return_type != G_TYPE_NONE)
{
g_warning("Not exporting signal '%s' as it has a return type %s", query.signal_name, g_type_name (query.return_type));
continue; /* FIXME: these could be listed as methods ? */
}
closure = dbus_g_signal_closure_new (connection, object, query.signal_name);
g_closure_set_marshal (closure, signal_emitter_marshaller);
@ -1275,10 +1280,11 @@ dbus_g_connection_register_g_object (DBusGConnection *connection,
if (!dbus_connection_register_object_path (DBUS_CONNECTION_FROM_G_CONNECTION (connection),
at_path,
&gobject_dbus_vtable,
object)) {
g_error ("Failed to register GObject with DBusConnection");
return;
}
object))
{
g_error ("Failed to register GObject with DBusConnection");
return;
}
export_signals (connection, object);
@ -1470,18 +1476,20 @@ dbus_g_method_return (DBusGMethodInvocation *context, ...)
dbus_message_iter_init_append (reply, &iter);
va_start (args, context);
for (i = 0; i < argsig->len; i++) {
GValue value = {0,};
char *error;
g_value_init (&value, g_array_index (argsig, GType, i));
error = NULL;
G_VALUE_COLLECT (&value, args, 0, &error);
if (error) {
g_warning(error);
g_free (error);
for (i = 0; i < argsig->len; i++)
{
GValue value = {0,};
char *error;
g_value_init (&value, g_array_index (argsig, GType, i));
error = NULL;
G_VALUE_COLLECT (&value, args, 0, &error);
if (error)
{
g_warning(error);
g_free (error);
}
dbus_gvalue_marshal (&iter, &value);
}
dbus_gvalue_marshal (&iter, &value);
}
va_end (args);
dbus_connection_send (dbus_g_connection_get_connection (context->connection), reply, NULL);

View file

@ -572,11 +572,12 @@ signature_iter_to_g_type_struct (DBusSignatureIter *origiter, gboolean is_client
iter = *origiter;
while ((current_type = dbus_signature_iter_get_current_type (&iter)) != DBUS_TYPE_INVALID) {
subtype = dbus_gtype_from_signature_iter (&iter, is_client);
if (subtype == G_TYPE_INVALID)
return G_TYPE_INVALID;
}
while ((current_type = dbus_signature_iter_get_current_type (&iter)) != DBUS_TYPE_INVALID)
{
subtype = dbus_gtype_from_signature_iter (&iter, is_client);
if (subtype == G_TYPE_INVALID)
return G_TYPE_INVALID;
}
return DBUS_TYPE_G_VALUE ();
#endif
}