JNIEXPORT jlong JNICALL Java_com_squareup_duktape_Duktape_proxy(JNIEnv *env, jclass type, jlong context, jstring name, jobjectArray methods) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (throwIfNull(env, duktape)) { return -1L; } return duktape->proxy(env, name, methods); }
JNIEXPORT jstring JNICALL Java_com_squareup_duktape_Duktape_evaluate__JLjava_lang_String_2Ljava_lang_String_2( JNIEnv* env, jclass type, jlong context, jstring code, jstring fname) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (throwIfNull(env, duktape)) { return nullptr; } return duktape->evaluate(env, code, fname); }
JNIEXPORT void JNICALL Java_com_squareup_duktape_Duktape_bind(JNIEnv *env, jclass type, jlong context, jstring name, jobject object, jobjectArray methods) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (throwIfNull(env, duktape)) { return; } duktape->bind(env, name, object, methods); }
JNIEXPORT jobject JNICALL Java_com_squareup_duktape_Duktape_call(JNIEnv *env, jclass type, jlong context, jlong instance, jobject method, jobjectArray args) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (throwIfNull(env, duktape)) { return nullptr; } return duktape->call(env, instance, method, args); }
duk_ret_t duktape_load_module(duk_context* ctx) { std::string resolvedId = duk_require_string(ctx, 0); DuktapeContext* pContext = DuktapeContext::getContext(ctx); if (pContext) { return pContext->loadModule(resolvedId); } return -1; }
JNIEXPORT void JNICALL Java_com_squareup_duktape_Duktape_bind(JNIEnv *env, jclass type, jlong context, jstring name, jobject object, jobjectArray methods) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (duktape == nullptr) { queueNullPointerException(env, "Null Duktape context - did you close your Duktape?"); return; } try { duktape->bind(env, name, object, methods); } catch (const std::runtime_error& e) { queueDuktapeException(env, e.what()); } }
JNIEXPORT jstring JNICALL Java_com_squareup_duktape_Duktape_evaluate__JLjava_lang_String_2Ljava_lang_String_2( JNIEnv* env, jclass type, jlong context, jstring code, jstring fname) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (duktape == nullptr) { queueNullPointerException(env, "Null Duktape context - did you close your Duktape?"); return nullptr; } try { return duktape->evaluate(env, code, fname); } catch (const std::runtime_error& e) { queueDuktapeException(env, e.what()); } return nullptr; }
JNIEXPORT void JNICALL Java_com_squareup_duktape_Duktape_set(JNIEnv *env, jclass type, jlong context, jstring name, jobject object, jobjectArray methods) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (duktape == nullptr) { queueNullPointerException(env, "Null Duktape context - did you close your Duktape?"); return; } try { duktape->set(env, name, object, methods); } catch (const std::invalid_argument& e) { queueIllegalArgumentException(env, e.what()); } catch (const std::exception& e) { queueDuktapeException(env, e.what()); } }
duk_ret_t duktape_resolve_module(duk_context* ctx) { std::string moduleId = duk_get_string(ctx, 0); std::string parentId = duk_get_string(ctx, 1); std::string resolvedId; DuktapeContext* pContext = DuktapeContext::getContext(ctx); if (pContext) { if (pContext->resolveModule(parentId, moduleId, resolvedId)) { duk_push_string(ctx, resolvedId.c_str()); return 1; } } duk_error(ctx, DUK_ERR_ERROR, "Module not found"); return -42; }
JNIEXPORT jlong JNICALL Java_com_squareup_duktape_Duktape_proxy(JNIEnv *env, jclass type, jlong context, jstring name, jobjectArray methods) { DuktapeContext* duktape = reinterpret_cast<DuktapeContext*>(context); if (duktape == nullptr) { queueNullPointerException(env, "Null Duktape context - did you close your Duktape?"); return 0L; } try { return reinterpret_cast<jlong>(duktape->proxy(env, name, methods)); } catch (const std::invalid_argument& e) { queueIllegalArgumentException(env, e.what()); } catch (const std::runtime_error& e) { queueDuktapeException(env, e.what()); } return 0L; }