From: Sean M. <ta...@th...> - 2008-05-22 22:41:42
|
Hi All, I am making some progress with CLISP's DFFI, but am still unclear on some of the semantics and am hoping somebody can give me a few pointers. How does one pass callback functions to a call-out? I'm trying to interface with TIBCO, and need to specify a callback function for receipt of messages. Here is my definition: (ffi:def-call-out create-tibco-listener (:name "tibrvEvent_CreateListener") (:arguments (listen-id (c-ptr uint) :IN-OUT) (tibco-queue int) ;Should be set to 1 (Default Queue) (my-callback c-pointer) (transport uint32) (subject-name c-string) (closure c-pointer)) (:return-type int) (:library "c:\\TIBCO\\TIBRV\\bin\\tibrv.dll")) How do I go about defining the callback function? I've tried to actually define the function, and also tried to inline it, but neither seems to work and gives me an error about not being able to treat the function as a c-pointer. The TIBCO API also uses function arguments for return values. It seems like maybe this is a place to use IN-OUT arguments, but I'm not sure how to go about collecting the returned value after the call since it doesn't seem to be set if I check it. Any guidance is greatly appreciated. Thanks, Sean |