JNIEXPORT jlong JNICALL Java_io_jxcore_node_jxcore_evalEngine(JNIEnv *env, jobject thiz, jstring contents) { const char *data = env->GetStringUTFChars(contents, 0); JXValue result; JX_Evaluate(data, 0, &result); env->ReleaseStringUTFChars(contents, data); if (!JX_IsNull(&result) && !JX_IsUndefined(&result)) return JX_StoreValue(&result); else return -1; }
int main(int argc, char **args) { JX_InitializeOnce("/test/bin/cpp/"); JX_InitializeNewEngine(); JX_DefineMainFile(contents); JX_StartEngine(); JXValue ret_val; JX_Evaluate("process.callMe()", "eval", &ret_val); while (JX_LoopOnce() != 0) usleep(1); assert(JX_IsError(&ret_val) && "error was expected"); std::string str; ConvertResult(&ret_val, str); assert(!strcmp("TypeError: this is type exception", str.c_str()) && "Exception output doesn't match"); JX_Free(&ret_val); JX_StopEngine(); }
int main(int argc, char **args) { JX_Initialize(args[0], callback); JX_InitializeNewEngine(); JX_DefineMainFile(contents); JX_DefineExtension("sampleMethod", sampleMethod); JX_StartEngine(); // loop for possible IO // or JX_Loop() without usleep / while while (JX_LoopOnce() != 0) usleep(1); JXValue result; JX_Evaluate(eval_str, "myscript", &result); JX_Free(&result); // loop for possible IO // or JX_Loop() without usleep / while while (JX_LoopOnce() != 0) usleep(1); JX_StopEngine(); assert(counter == 3 && "sampleMethod is expected to recive 3 calls (2 sub instance, 1 main)"); }
int main(int argc, char **args) { JX_Initialize(args[0], callback); JX_InitializeNewEngine(); JX_DefineMainFile(contents); JX_StartEngine(); JXValue ret_val; // this is not a function, it shouldn't return. // exception is expected JX_Evaluate("return process.x", "eval", &ret_val); while (JX_LoopOnce() != 0) usleep(1); assert(JX_IsError(&ret_val) && "error was expected"); JX_Free(&ret_val); JX_StopEngine(); return 0; }