On Tue, 2009-10-20 at 19:33 +0200, Xavier Bestel wrote: > On Sun, 2009-10-18 at 23:00 +0200, Xavier Bestel wrote: > > Le dimanche 18 octobre 2009 à 19:26 +0100, Abderrahim Kitouni a écrit : > [...] > > > You might want to look at GScanner, I haven't used it myself, but it > > > seems to be exactly what you want. > > > http://library.gnome.org/devel/glib/stable/glib-Lexical-Scanner.html > > > > That looks effectively exactely like I want. > > Except the vapi file doesn't work. > Here are my changes: > > --- /usr/share/vala/vapi/glib-2.0.vapi.orig 2009-10-20 19:22:51.000000000 > +0200 > +++ /usr/share/vala/vapi/glib-2.0.vapi 2009-10-20 19:29:03.000000000 +0200 > @@ -2125,13 +2125,17 @@ > public TokenValue next_value; > public uint next_line; > public uint next_position; > - public Scanner (ScannerConfig? config_templ); > + public Scanner (ScannerConfig? config_templ = null); > public void input_file (int input_fd); > public void sync_file_offset (); > public void input_text (string text, uint text_len); > public TokenType peek_next_token (); > public TokenType get_next_token (); > public bool eof (); > + public int cur_line (); > + public int cur_position (); > + public TokenType cur_token (); > + public TokenValue cur_value (); > public uint set_scope (uint scope_id); > public void scope_add_symbol (uint scope_id, string symbol, > void* value); > public void scope_foreach_symbol (uint scope_id, HFunc func); > > > But even with that I still have a problem: TokenValue is a simple enum, > tagged with [SimpleType] in the vapi file, but Vala inserts a > (non-existing) g_token_value_destroy() and of course fails at link-time. > > Could someone knowledgeable show me how to fix the vapi ?
So, I've added [CCode (destroy_function = "")] which makes it work, but by pure luck: now the code generator inserts an "(&val)" into the code (i.e. it tries to destroy the value with an empty function name). That's ugly. I think it comes from the fact that TokenValue is actually an union, but Vala has no concept of union (even for foreign code) it it's declared as a struct in the vapi, which it tries to destroy after use. Is there some documentation about the code attributes somewhere ? I'd like to fix it myself but I need some pointers. Thanks, Xav _______________________________________________ Vala-list mailing list Vala-list@gnome.org http://mail.gnome.org/mailman/listinfo/vala-list