Hi,

On Tue, 2009-02-24 at 22:43 +0100, Didier "Ptitjes" wrote:

....

> I asked the same to Jürg on the channel, and it appears there is only 
> for now a syntax for typed ellipsis. The following is an example of the 
> syntax :
> 
> public static void foo(params string[] args) {
>       // ...
> }
> 
> So if your arguments can be subclasses of GObject, you could use "params 
> Object[] args".
> 
> It appears that there isn't yet any syntax to query about an untyped 
> ellipsis content. I think this is the best occasion to make proposals.
> 
> I have none to propose as the only I know of is the one of Java, and it 
> is typed as Java supports auto-boxing.
> 
> I would be glad to implement it and propose a patch if something gets 
> consensus. Any ideas ?
> 

What about picking up the old and dirty va_args?

Example:

public static void foo(string fmt, params va_args valist) {
    vprintf(fmt, valist);
}
public static void foo2(string fmt, params va_args valist) {
   int i = valist.next_int();
   void* p = valist.next_pointer();

}

Compiled CCode:

void foo(const char * fmt, ...) {
   va_list valist;
   va_start(fmt, valist);
   foo_valist(fmt, valist); 
   va_end(fmt);
}
void foo_valist (const char * fmt, va_list valist) {
   vprintf(fmt, valist);
}

void foo2(const char * fmt, ...) {
   va_list valist;
   va_start(fmt, valist);
   foo2_valist(fmt, valist); 
   va_end(fmt);
}
void foo2_valist (const char * fmt, va_list valist) {
    int i = va_arg(valist, int);
    void* p  = va_arg(valist, void*);
}

This can give us the most C compatibility. But va_args has to be a
special type handled by the compiler.

Best,

Yu
> > Thanks
> > Shawn
> 
> Best regards, Didier.
> 
> _______________________________________________
> Vala-list mailing list
> Vala-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/vala-list

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

Reply via email to