diff --git a/src/ccall.c b/src/ccall.c new file mode 100644 index 0000000..2b40a7a --- /dev/null +++ b/src/ccall.c @@ -0,0 +1,39 @@ +#include "config.h" +#include "types.h" +#include "error.h" +#include "lexer.h" +#include "ops.h" +#include "mem.h" +#include "stack.h" +#include "reg.h" +#include "utils.h" +#include "vm.h" +#include "printf.h" +#include "ccall.h" +#include "context.h" +#include "event.h" +#include "debug.h" + +/* + Table of xternal C function handlers. Must be initialized by host application. +*/ +ccall_t *ccalls=NULL; + + +void CCallInit(ccall_t *_ccalls) { + ccalls=_ccalls; + // ccall index jump list + int i=0,j=0; + char c; + do { + c=ccalls[i].name[0]; + j=i; + while (ccalls[j].name && ccalls[j].name[0]==c) j++; + if (ccalls[j].name) { + while (i