Hi, Iwant to send and receive such a structure " a(is(idd)(idd))" with D-Bus I proceed as follow:
I have first of all i create the following procedure to help me do what I want. // append a integer in a GValueArray static void _gvalue_array_append_int(GValueArray *g_val_array, gint v_int) { GValue val ={0}; g_value_init(&val, G_TYPE_INT); g_value_set_int(&val, v_int); g_value_array_append(g_val_array, &val); g_value_unset(&val); } // append a double in a GValueArray static void _gvalue_array_append_double(GValueArray *g_val_array, gdouble v_double) { GValue val ={0}; g_value_init(&val, G_TYPE_DOUBLE); g_value_set_double(&val, v_double); g_value_array_append(g_val_array, &val); g_value_unset(&val); } // append a pointer in a GValueArray static void _gvalue_array_append_pointer (GValueArray *g_val_array, gpointer v_pointer) { GValue val ={0}; g_value_init(&val, G_TYPE_POINTER); g_value_set_pointer(&val, v_pointer); g_value_array_append(g_val_array, &val); g_value_unset(&val); } // append a string in a GValueArray static void _gvalue_array_append_string(GValueArray *g_val_array, const gchar *v_string) { GValue val ={0}; g_value_init(&val, G_TYPE_STRING); g_value_set_string(&val, v_string); g_value_array_append(g_val_array, &val); g_value_unset(&val); } // create the GValueArray structure "(idd)" void _gvalue_array_vector (GValueArray *g_val_array, gint v_int, double x, double y) { _gvalue_array_append_int (g_val_array, v_int); _gvalue_array_append_double(g_val_array, x); _gvalue_array_append_double(g_val_array, y); } GPtrArray* gp_plugs; //a(is(idd)(idd)) gp_plugs = g_ptr_array_new(); GValueArray *plug_a, *plug_b; // each contains such a structure "(is(idd)(idd))" GValueArray *vector_a, *vector_b, *vector_c, *vector_d; // each contains "(idd)" plug_a = g_value_array_new (); _gvalue_array_append_int (plug_a, 1); _gvalue_array_append_string(plug_a, "SKN"); // (is) vector_a = g_value_array_new (); _gvalue_array_vector (vector_a, 1, 0.0, 0.0); // (idd) _gvalue_array_append_pointer(plug_a, vector_a); //(is(idd)) vector_b = g_value_array_new (); _gvalue_array_vector (vector_b, 2, 0.0, -100.0); // (idd) _gvalue_array_append_pointer(plug_a, vector_b); // (is(idd)(idd)) g_ptr_array_add(gp_plugs, (gpointer)plug_a); // add the first element // of the plug structure " a(is(idd)(idd))" // then a create the second element as follow plug_b = g_value_array_new (); _gvalue_array_append_int (plug_b, 2); _gvalue_array_append_string(plug_b, "AMSK"); // (is) vector_c = g_value_array_new (); _gvalue_array_vector (vector_c, 3, 40.0, 0.0); // (idd) _gvalue_array_append_pointer(plug_b, vector_c); //(is(idd)) vector_d = g_value_array_new (4); _gvalue_array_vector (vector_d, 4, 40.0, -100.0); // (idd) _gvalue_array_append_pointer(plug_b, vector_d); // (is(idd)(idd)) g_ptr_array_add(gp_plugs, (gpointer)plug_b); // add the second element // of the plug structure " a(is(idd)(idd))" I would like to know if the way I use to build the structure is good, because I proceed like this and i obtain errors that i don't succeed to solve. Thanks to answer me Charles regards, ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel