rmquickjs-sys 0.0.1

Low-level binding API for MicroQuickJS
#include "mquickjs.c"

typedef JSValue (*JSHostCallback)(JSContext *ctx, JSValue *this_val, int argc, JSValue *argv, JSValue params);

static JSHostCallback host_callback = NULL;

void JS_SetHostCallback(JSHostCallback callback) {
    host_callback = callback;
}

void* JS_GetContextOpaque(JSContext *ctx) {
    return ctx->opaque;
}

JSValue js_rmquickjs_callback(JSContext *ctx, JSValue *this_val, int argc, JSValue *argv, JSValue params) {
    if (host_callback) {
        return host_callback(ctx, this_val, argc, argv, params);
    }

    return JS_UNDEFINED;
}