Mercurial > pub > dyncall > dyncall
changeset 120:8a6111c2a84a
- minor callback cleanups
author | cslag |
---|---|
date | Mon, 04 Jul 2016 01:02:47 +0200 |
parents | f1cc11a9eb98 |
children | f00b1f3da52e |
files | dyncallback/dyncall_callback.h dyncallback/dyncall_callback_mips.c |
diffstat | 2 files changed, 8 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/dyncallback/dyncall_callback.h Mon Jul 04 00:59:59 2016 +0200 +++ b/dyncallback/dyncall_callback.h Mon Jul 04 01:02:47 2016 +0200 @@ -32,8 +32,7 @@ typedef struct DCCallback DCCallback; -// TODO: return value is the type encoded as a signature char (character of the set [vBcCsSiIjJlLfd]). - +// return value is the type encoded as a signature char (character of the set [vBcCsSiIjJlLfd]). typedef char (DCCallbackHandler)(DCCallback* pcb, DCArgs* args, DCValue* result, void* userdata); #ifdef __cplusplus
--- a/dyncallback/dyncall_callback_mips.c Mon Jul 04 00:59:59 2016 +0200 +++ b/dyncallback/dyncall_callback_mips.c Mon Jul 04 01:02:47 2016 +0200 @@ -27,29 +27,28 @@ #include "dyncall_callback.h" #include "dyncall_callback_mips.h" +extern void dcCallbackThunkEntry(); + void dcbInitCallback(DCCallback* pcb, const char* signature, DCCallbackHandler* handler, void* userdata) { - const char* ptr; - char ch; - pcb->handler = handler; pcb->userdata = userdata; } -extern void dcCallbackThunkEntry(); DCCallback* dcbNewCallback(const char* signature, DCCallbackHandler* handler, void* userdata) { + int err; DCCallback* pcb; - int err = dcAllocWX(sizeof(DCCallback), (void**)&pcb); - if (err != 0) return 0; - + err = dcAllocWX(sizeof(DCCallback), (void**)&pcb); + if(err || !pcb) + return 0; dcbInitThunk(&pcb->thunk, dcCallbackThunkEntry); dcbInitCallback(pcb, signature, handler, userdata); - return pcb; } + void dcbFreeCallback(DCCallback* pcb) { dcFreeWX(pcb, sizeof(DCCallback)); @@ -59,4 +58,3 @@ { return pcb->userdata; } -