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
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list