I want to do a binding to ObjectiveC
Basically I need to implement a function like

retval_t objc_msg_send(id obj, SEL sel, ...);

which would forward its call (same arguments, including the unidentified ... (va_list)) to an other function know by pointer which would be looked up from the 1st 2 parameters. the return value should be forwarded too!!

I was thinking to something as below (a simple jump!), but I'm not sure:
1. it will work (maye the puch/pop will overwrite fct?! my ASM is ten years old...)
2. of the syntax


pseudo code to be corrected (for x86/windows/gcc):

return_t objc_msg_send(id obj, SEL sel, ...)
{
   asm pushall;
   void (*)() fct = lookup(obj, sel);
   asm popall;
   asm longjmp fct;
}

Note to those knowing a bit of ObjC:
No, this function is absolutely not implemented on GNUstep, although it could be found on NeXT and MacOSX, tss....




Reply via email to