> On Thursday, 25 January 2018, 10:32:07 GMT, Yasushi SHOJI 
<yasushi.sh...@gmail.com> wrote:  
> void main () {
>         Variant ary = new Variant.strv({"foo", "bar", "baz"});
> }


> In file included from /usr/include/glib-2.0/glib/gmessages.h:35:0,
>                 from /usr/include/glib-2.0/glib.h:62,
>                 from /tmp/a.vala.c:5:
> /usr/include/glib-2.0/glib/gvariant.h:118:33: note: expected ‘const
> gchar * const* {aka const char * const*}’ but argument is of type
> ‘gchar ** {aka char **}’
> GVariant *                      g_variant_new_strv
>   (const gchar * const  *strv,

You can use Vala's implicit conversion module to create a string array.I've 
figured out how to do this for string arrays, not just basic types. Itdoesn't 
produce the C warnings when compiling:
void main () {    string[] my_array = {"foo", "bar", "baz"};
    test (my_array);
    Variant my_variant = my_array;
    test (my_variant);
 }

void test (Variant variant) {
    print (@"$(variant.get_type_string ())\n");
    print (@"$(variant.print (true))\n");
}

The implicit conversion is invoked when assigning the array to a variable of 
type Variant. It is also invoked when passing the string array as an argumentto 
a function that expects a Variant type parameter.
This also works for GLib HashTable, which is a dictionary over D-Bus. This 
should be very useful for using DBusConnection. Code snippet:
var a = new HashTable of string, Variant ( str_hash, str_equal );
a.insert( "first", 1 );
a.insert( "second", "test" );
b:Variant = a;

A couple of references for anyone 
interested:https://wiki.gnome.org/Projects/Vala/DBusServerSample#Type_Table
https://valadoc.org/gio-2.0/GLib.DBusConnection.html

All the best,
Al

  
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to