At 11.36 05/04/2003, you wrote:
We talked internally about adding support for va_start, va_end and the va_list type. But that wouldn't solve the problem for fpgtk since those functions don't get a va_list.

well, TVarArgs (better name - TVAList should correspond to va_list) is just how it would appear to a Pascal program. What I meant was this:


function printf(fmt: PChar; args: TVarArgs = []); cdecl; external;

and you call it as:

printf('%s() failed: %d'#0A, ['blah', errno]);

The compiler treats the TVarArgs parameter specially, as a hint to translate the open array constructor into a list of arguments to be pushed on the stack. I agree that this sucks, and that supporting the implicit conversion of an array of TVarRec into a TVarArgs would suck even more, but it's an idea

The problem with the fpgtk code is that it were macro's in C.

ouch


And there is no possibility to have an exact function equivalent for it except support also macro's

I suggest you to have a look at the C++ library Boost, and in particular at its "bind" template. It allows you to statically create function objects that, at runtime, call the function they're "bound" to, with parameters specified at compile time. I know FreePascal is far from that, but it's a cool concept


_______________________________________________
fpc-devel maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to