[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: variable args
- From: Philipp Janda <siffiejoe@...>
- Date: Fri, 21 Nov 2003 14:35:27 +0100
Kurt Jung schrieb:
>What I need to do is to be able to pass these popped lua values to a
>variadic C function.
>Note that I can't put the lua interface inside the variadic function
>directly as I'm using an API for which I only have the library,
>instead I have to create a C binding that turns around and calls the
Most APIs in C have an alternate entry point for each variadic function
which accepts a pointer to a list of arguments instead of an argument
list. In fact, most variadic functions are just wrappers which call
these "worker" functions. For examples in the C standard library, see
the documentation for vsprintf and vscanf.
If the API with which you are working provides this option, it would be
a relatively simple task to bundle your Lua arguments into an array and
call the "v" flavor function.
I'm not sure whether the va_list type and an array type are compatible
(a va_list can contain mixed types as members), and there are no va_list
constructor functions in ISO C.
AFAIK there is no portable way to do this in general, but you could
provide a binding function for the most common cases (say from one
argument to 9 arguments).