callback parameter order question
    evilrat 
    evilrat666 at gmail.com
       
    Sat May 11 18:01:03 PDT 2013
    
    
  
On Saturday, 11 May 2013 at 17:34:53 UTC, gedaiu wrote:
>
> yeah... what a shameful mistake.. i vave a new tricky 
> question... how i can provide a class method instead a simple 
> function as callback?
with D code use delegates as Ali commented, it's simple. with C 
code use static method and pass instance pointer as callback 
target, something like this
---------------
// C function
alias extern(C) function(void*) callbackfunc;
extern(C) setCallback(callbackfunc cb, void* userptr);
class Handler {
  static extern(C) callback(void* instance) {
   if ( auto self = cast(Handler) instance )
     self.onCallback();
  }
  void onCallback() {
   // ...
   // your code here
   // ...
  }
}
void setCAPI_callback(Handler hnd) {
  setCallback(Handler.callback, hnd); // don't remember if needed 
to cast hnd to void
}
however this would require C API which has userptr argument in 
callbacks(hopefully most libs i've seen has this)
    
    
More information about the Digitalmars-d-learn
mailing list