[Vala] Error in GLib.EnumClass binding (Re: Display values of an enum.)



On Sat, Jul 10, 2010 at 19:20:34 +0000, Peterpaul Klein Haneveld wrote:
---
 start of EnumTest.vala:
enum EnumTest {TEST1, TEST2, TEST3}

void
 main() {
    EnumClass enumClass = (EnumClass) typeof 
(EnumTest).class_ref();
    unowned EnumValue[] falues = 
enumClass.values;
    for (int i = 0; i < falues.length; i++) {

I believe vala supports foreach-style syntax here, but I am not certain
enough of the exact syntax to write it off the top of my head.

 unowned EnumValue falue = falues[i]; 
        stdout.printf("%s", 
falue.value_name);
    }
}
--- end of EnumTest.vala.

$ valac EnumTest.vala 
/home/peterpaul/projects/vala/EnumTest.vala.c:
 In function ‘_vala_main’:
/home/peterpaul/projects/vala/EnumTest.vala.c:45:
 warning: assignment from incompatible pointer type
/home/peterpaul/projects/vala/EnumTest.vala.c:45:
 error: ‘GEnumClass’ has no member named ‘values_length1’
error: cc 
exited with status 256
Compilation failed: 1 error(s), 0 warning(s)

The warning can be safely ignored I believe (though it is a bug in valac --
it should know to emit correct cast). The error is caused by error in the
bindings.

The GLib.EnumClass.values member in gobject-2.0.vapi needs annotation:

    [CCode (array_length_cname = "n_values", array_length_type = "guint")]

(the same annotation is correctly used in other places in the file, e.g. the
ValueArray class).

The Glib.FlagsClass.values member needs the same annotation, too.

-- 
                                                 Jan 'Bulb' Hudec <bulb ucw cz>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]