diff options
Diffstat (limited to 'multimedia/mediatomb/mediatomb-0.12.1-mozjs185.patch')
-rw-r--r-- | multimedia/mediatomb/mediatomb-0.12.1-mozjs185.patch | 605 |
1 files changed, 605 insertions, 0 deletions
diff --git a/multimedia/mediatomb/mediatomb-0.12.1-mozjs185.patch b/multimedia/mediatomb/mediatomb-0.12.1-mozjs185.patch new file mode 100644 index 0000000000..eb67540d7c --- /dev/null +++ b/multimedia/mediatomb/mediatomb-0.12.1-mozjs185.patch @@ -0,0 +1,605 @@ +--- mediatomb-0.12.1/configure.ac 2010-04-07 18:38:51.000000000 -0400 ++++ mediatomb-0.12.1/configure.ac 2011-11-16 21:56:46.000000000 -0500 +@@ -1006,14 +1006,23 @@ + MOZLIB=smjs + ], + [ +- LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS" +- AC_CHECK_LIB(mozjs, JS_NewObject, ++ LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs185 $ADD_PTHREAD_CFLAGS" ++ AC_CHECK_LIB(mozjs185, JS_NewObject, + [ +- JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs" +- MOZLIB=mozjs ++ JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs185" ++ MOZLIB=mozjs185 + ], + [ +- AC_MSG_ERROR([Spidermonkey not found in requested location $JS_SEARCH_LIBS]) ++ LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS" ++ AC_CHECK_LIB(mozjs, JS_NewObject, ++ [ ++ JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs" ++ MOZLIB=mozjs ++ ], ++ [ ++ AC_MSG_ERROR([Spidermonkey not found in requested location $JS_SEARCH_LIBS]) ++ ] ++ ) + ] + ) + ] +@@ -1036,39 +1045,58 @@ + ], + [ + unset ac_cv_lib_smjs_JS_NewObject +- AC_CHECK_LIB(mozjs, JS_NewObject, ++ AC_CHECK_LIB(mozjs185, JS_NewObject, + [ +- MOZLIB=mozjs +- JS_LIBS="-lmozjs" ++ MOZLIB=mozjs185 ++ JS_LIBS="-lmozjs185" + ], + [ +- LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE $ADD_PTHREAD_CFLAGS" +- unset ac_cv_lib_js_JS_NewObject +- AC_CHECK_LIB(js, JS_NewObject, +- [ +- JS_LIBS="-L$SEARCH_DIR_LIBS -ljs" +- MOZLIB=js +- ], +- [ +- unset ac_cv_lib_smjs_JS_NewObject +- AC_CHECK_LIB(smjs, JS_NewObject, +- [ +- JS_LIBS="-L$SEARCH_DIR_LIBS -lsmjs" +- MOZLIB=smjs +- ], +- [ +- LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs" +- unset ac_cv_lib_mozjs_JS_NewObject +- AC_CHECK_LIB(mozjs, JS_NewObject, +- [ +- JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs" +- MOZLIB=mozjs +- ], +- [ +- JS_OK=missing +- AC_MSG_RESULT(libjs/libsmjs link failed, giving up) +- ] +- ) ++ unset ac_cv_lib_smjs_JS_NewObject ++ AC_CHECK_LIB(mozjs, JS_NewObject, ++ [ ++ MOZLIB=mozjs ++ JS_LIBS="-lmozjs" ++ ], ++ [ ++ LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE $ADD_PTHREAD_CFLAGS" ++ unset ac_cv_lib_js_JS_NewObject ++ AC_CHECK_LIB(js, JS_NewObject, ++ [ ++ JS_LIBS="-L$SEARCH_DIR_LIBS -ljs" ++ MOZLIB=js ++ ], ++ [ ++ unset ac_cv_lib_smjs_JS_NewObject ++ AC_CHECK_LIB(smjs, JS_NewObject, ++ [ ++ JS_LIBS="-L$SEARCH_DIR_LIBS -lsmjs" ++ MOZLIB=smjs ++ ], ++ [ ++ LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs185" ++ unset ac_cv_lib_mozjs_JS_NewObject ++ AC_CHECK_LIB(mozjs185, JS_NewObject, ++ [ ++ JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs185" ++ MOZLIB=mozjs185 ++ ], ++ [ ++ LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs" ++ unset ac_cv_lib_mozjs_JS_NewObject ++ AC_CHECK_LIB(mozjs, JS_NewObject, ++ [ ++ JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs" ++ MOZLIB=mozjs ++ ], ++ [ ++ JS_OK=missing ++ AC_MSG_RESULT(libjs/libsmjs link failed, giving up) ++ ] ++ ) ++ ] ++ ) ++ ] ++ ) + ] + ) + ] +diff -ur mediatomb-0.12.1.orig/build/Makefile.in mediatomb-0.12.1/build/Makefile.in +--- mediatomb-0.12.1.orig/build/Makefile.in 2010-04-07 18:40:15.000000000 -0400 ++++ mediatomb-0.12.1/build/Makefile.in 2011-11-16 22:28:06.000000000 -0500 +@@ -257,7 +257,7 @@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ ++CXXFLAGS = -fpermissive @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ + DB_AUTOCREATE_OPTION_ENABLED = @DB_AUTOCREATE_OPTION_ENABLED@ + DB_AUTOCREATE_OPTION_REQUESTED = @DB_AUTOCREATE_OPTION_REQUESTED@ +diff -ur mediatomb-0.12.1.orig/src/scripting/import_script.cc mediatomb-0.12.1/src/scripting/import_script.cc +--- mediatomb-0.12.1.orig/src/scripting/import_script.cc 2010-03-25 10:58:05.000000000 -0400 ++++ mediatomb-0.12.1/src/scripting/import_script.cc 2011-11-16 22:28:06.000000000 -0500 +@@ -53,8 +53,8 @@ + try + { + load(scriptPath); +- root = JS_NewScriptObject(cx, script); +- JS_AddNamedRoot(cx, &root, "ImportScript"); ++ root = JS_NewObject(cx, NULL, script, NULL); ++ JS_AddNamedObjectRoot(cx, &root, "ImportScript"); + } + catch (Exception ex) + { +@@ -117,7 +117,7 @@ + #endif + + if (root) +- JS_RemoveRoot(cx, &root); ++ JS_RemoveObjectRoot(cx, &root); + + #ifdef JS_THREADSAFE + JS_EndRequest(cx); +diff -ur mediatomb-0.12.1.orig/src/scripting/js_functions.cc mediatomb-0.12.1/src/scripting/js_functions.cc +--- mediatomb-0.12.1.orig/src/scripting/js_functions.cc 2010-03-25 10:58:05.000000000 -0400 ++++ mediatomb-0.12.1/src/scripting/js_functions.cc 2011-11-16 22:28:21.000000000 -0500 +@@ -49,30 +49,45 @@ + extern "C" { + + JSBool +-js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++js_print(JSContext *cx, uintN argc, jsval *argv) + { +- uintN i; ++ uintN i, j; + JSString *str; + + for (i = 0; i < argc; i++) + { +- str = JS_ValueToString(cx, argv[i]); ++ String fmtStr; ++ for (j = 0; j < argc; j++) ++ { ++ if (j == i) ++ fmtStr = fmtStr + "S"; ++ else ++ fmtStr = fmtStr + "*"; ++ } ++ if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), fmtStr.c_str(), &str)) ++ { ++ log_debug("Could not parse input arguments\n"); ++ return JS_TRUE; ++ } ++ + if (!str) + return JS_TRUE; +- argv[i] = STRING_TO_JSVAL(str); +- log_js("%s\n", JS_GetStringBytes(str)); ++ ++ char * log_str = JS_EncodeString(cx, str); ++ log_js("%s\n", log_str); ++ JS_free(cx, log_str); + } + return JS_TRUE; + } + + JSBool +-js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++js_copyObject(JSContext *cx, uintN argc, jsval *argv) + { + jsval arg; + JSObject *js_cds_obj; + JSObject *js_cds_clone_obj; + +- Script *self = (Script *)JS_GetPrivate(cx, obj); ++ Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv)); + + try + { +@@ -91,7 +106,7 @@ + + self->cdsObject2jsObject(cds_obj, js_cds_clone_obj); + +- *rval = OBJECT_TO_JSVAL(js_cds_clone_obj); ++ JS_SET_RVAL(cx, argv, OBJECT_TO_JSVAL(js_cds_clone_obj)); + + return JS_TRUE; + +@@ -110,28 +125,58 @@ + } + + JSBool +-js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++js_addCdsObject(JSContext *cx, uintN argc, jsval *argv) + { + try + { +- jsval arg; +- JSString *str; +- String path; +- String containerclass; ++ // Inputs from native code ++ JSObject *js_cds_obj = NULL; ++ JSString *str = NULL; ++ JSString *cont = NULL; + +- JSObject *js_cds_obj; ++ String path = nil; ++ String containerclass = nil; ++ ++ JSObject *obj = JS_THIS_OBJECT(cx, argv); + JSObject *js_orig_obj = NULL; + Ref<CdsObject> orig_object; + + Ref<StringConverter> p2i; + Ref<StringConverter> i2i; ++ switch (argc) ++ { ++ case 0: ++ log_debug("No input arguments given\n"); ++ return JS_FALSE; ++ case 1: ++ if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), "o", &js_cds_obj)) ++ { ++ log_debug("Could not parse input arguments\n"); ++ return JS_TRUE; ++ } ++ break; ++ case 2: ++ if(!JS_ConvertArguments(cx, 2, JS_ARGV(cx, argv), "oS", &js_cds_obj, &str)) ++ { ++ log_debug("Could not parse input arguments\n"); ++ return JS_TRUE; ++ } ++ break; ++ default: ++ if(!JS_ConvertArguments(cx, 3, JS_ARGV(cx, argv), "oSS", &js_cds_obj, &str, &cont)) ++ { ++ log_debug("Could not parse input arguments\n"); ++ return JS_TRUE; ++ } ++ break; ++ } + + Script *self = (Script *)JS_GetPrivate(cx, obj); + + if (self == NULL) + { + log_debug("Could not retrieve class instance from global object\n"); +- return JS_FALSE; ++ return JS_TRUE; + } + + if (self->whoami() == S_PLAYLIST) +@@ -142,26 +187,17 @@ + { + i2i = StringConverter::i2i(); + } +- +- arg = argv[0]; +- if (!JSVAL_IS_OBJECT(arg)) +- return JS_TRUE; +- if (!JS_ValueToObject(cx, arg, &js_cds_obj)) +- return JS_TRUE; + +- // root it +- argv[0] = OBJECT_TO_JSVAL(js_cds_obj); + +- str = JS_ValueToString(cx, argv[1]); + if (!str) + path = _("/"); + else +- path = JS_GetStringBytes(str); ++ path = JS_EncodeString(cx, str); ++ + +- JSString *cont = JS_ValueToString(cx, argv[2]); + if (cont) + { +- containerclass = JS_GetStringBytes(cont); ++ containerclass = JS_EncodeString(cx, cont); + if (!string_ok(containerclass) || containerclass == "undefined") + containerclass = nil; + } +@@ -177,9 +213,6 @@ + return JS_TRUE; + } + +- // root it +- argv[1] = OBJECT_TO_JSVAL(js_orig_obj); +- + orig_object = self->jsObject2cdsObject(js_orig_obj, self->getProcessedObject()); + if (orig_object == nil) + return JS_TRUE; +@@ -285,8 +318,7 @@ + JSString *str2 = JS_NewStringCopyN(cx, tmp.c_str(), tmp.length()); + if (!str2) + return JS_TRUE; +- *rval = STRING_TO_JSVAL(str2); +- ++ JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2)); + return JS_TRUE; + } + catch (ServerShutdownException se) +@@ -302,7 +334,7 @@ + return JS_TRUE; + } + +-static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval, charset_convert_t chr) ++static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, charset_convert_t chr) + { + try + { +@@ -321,7 +353,7 @@ + { + str = JS_ValueToString(cx, argv[0]); + if (str) +- result = JS_GetStringBytes(str); ++ result = JS_EncodeString(cx, str); + } + + if (result != nil) +@@ -330,7 +362,7 @@ + JSString *str2 = JS_NewStringCopyN(cx, result.c_str(), result.length()); + if (!str2) + return JS_TRUE; +- *rval = STRING_TO_JSVAL(str2); ++ JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2)); + } + } + catch (ServerShutdownException se) +@@ -347,24 +379,23 @@ + } + + +-JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv) + { +- return convert_charset_generic(cx, obj, argc, argv, rval, F2I); ++ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, F2I); + } + +-JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv) + { +- return convert_charset_generic(cx, obj, argc, argv, rval, M2I); +-} ++ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, M2I); } + +-JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv) + { +- return convert_charset_generic(cx, obj, argc, argv, rval, P2I); ++ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, P2I); + } + +-JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv) + { +- return convert_charset_generic(cx, obj, argc, argv, rval, J2I); ++ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, J2I); + } + + } // extern "C" +diff -ur mediatomb-0.12.1.orig/src/scripting/js_functions.h mediatomb-0.12.1/src/scripting/js_functions.h +--- mediatomb-0.12.1.orig/src/scripting/js_functions.h 2010-03-25 10:58:05.000000000 -0400 ++++ mediatomb-0.12.1/src/scripting/js_functions.h 2011-11-16 22:28:06.000000000 -0500 +@@ -40,18 +40,18 @@ + extern "C" { + + /// \brief Log output. +-JSBool js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); ++JSBool js_print(JSContext *cx, uintN argc, jsval *argv); + + /// \brief Adds an object to the database. +-JSBool js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); ++JSBool js_addCdsObject(JSContext *cx, uintN argc, jsval *argv); + + /// \brief Makes a copy of an CDS object. +-JSBool js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); ++JSBool js_copyObject(JSContext *cx, uintN argc, jsval *argv); + +-JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); +-JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); +-JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); +-JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); ++JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv); ++JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv); ++JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv); ++JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv); + + } // extern "C" + +diff -ur mediatomb-0.12.1.orig/src/scripting/playlist_parser_script.cc mediatomb-0.12.1/src/scripting/playlist_parser_script.cc +--- mediatomb-0.12.1.orig/src/scripting/playlist_parser_script.cc 2010-03-25 10:58:05.000000000 -0400 ++++ mediatomb-0.12.1/src/scripting/playlist_parser_script.cc 2011-11-16 22:28:06.000000000 -0500 +@@ -46,9 +46,9 @@ + extern "C" { + + static JSBool +-js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++js_readln(JSContext *cx, uintN argc, jsval *argv) + { +- PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, obj); ++ PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv)); + + String line; + +@@ -69,7 +69,7 @@ + + JSString *jsline = JS_NewStringCopyZ(cx, line.c_str()); + +- *rval = STRING_TO_JSVAL(jsline); ++ JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(jsline)); + + return JS_TRUE; + } +@@ -93,8 +93,8 @@ + + String scriptPath = ConfigManager::getInstance()->getOption(CFG_IMPORT_SCRIPTING_PLAYLIST_SCRIPT); + load(scriptPath); +- root = JS_NewScriptObject(cx, script); +- JS_AddNamedRoot(cx, &root, "PlaylistScript"); ++ root = JS_NewObject(cx, NULL, script, NULL); ++ JS_AddNamedObjectRoot(cx, &root, "PlaylistScript"); + } + catch (Exception ex) + { +@@ -245,7 +245,7 @@ + #endif + + if (root) +- JS_RemoveRoot(cx, &root); ++ JS_RemoveObjectRoot(cx, &root); + + #ifdef JS_THREADSAFE + JS_EndRequest(cx); +diff -ur mediatomb-0.12.1.orig/src/scripting/script.cc mediatomb-0.12.1/src/scripting/script.cc +--- mediatomb-0.12.1.orig/src/scripting/script.cc 2010-03-25 10:58:05.000000000 -0400 ++++ mediatomb-0.12.1/src/scripting/script.cc 2011-11-16 22:28:06.000000000 -0500 +@@ -87,7 +87,7 @@ + str = JS_ValueToString(cx, val); + if (! str) + return nil; +- return JS_GetStringBytes(str); ++ return JS_EncodeString(cx, str); + } + + int Script::getBoolProperty(JSObject *obj, String name) +@@ -427,14 +427,14 @@ + try + { + common_script = _load(common_scr_path); +- common_root = JS_NewScriptObject(cx, common_script); +- JS_AddNamedRoot(cx, &common_root, "common-script"); ++ common_root = JS_NewObject(cx, NULL, common_script, NULL); ++ JS_AddNamedObjectRoot(cx, &common_root, "common-script"); + _execute(common_script); + } + catch (Exception e) + { + if (common_root) +- JS_RemoveRoot(cx, &common_root); ++ JS_RemoveObjectRoot(cx, &common_root); + + log_js("Unable to load %s: %s\n", common_scr_path.c_str(), + e.getMessage().c_str()); +@@ -460,7 +460,7 @@ + JS_BeginRequest(cx); + #endif + if (common_root) +- JS_RemoveRoot(cx, &common_root); ++ JS_RemoveObjectRoot(cx, &common_root); + + /* + * scripts are unrooted and will be cleaned up by GC +@@ -504,11 +504,11 @@ + static JSClass global_class = + { + "global", /* name */ +- JSCLASS_HAS_PRIVATE, /* flags */ ++ JSCLASS_HAS_PRIVATE | JSCLASS_GLOBAL_FLAGS,/* flags */ + JS_PropertyStub, /* add property */ + JS_PropertyStub, /* del property */ + JS_PropertyStub, /* get property */ +- JS_PropertyStub, /* set property */ ++ JS_StrictPropertyStub, /* set property */ + JS_EnumerateStandardClasses, /* enumerate */ + JS_ResolveStub, /* resolve */ + JS_ConvertStub, /* convert */ +@@ -517,7 +517,7 @@ + }; + + /* create the global object here */ +- glob = JS_NewObject(cx, &global_class, NULL, NULL); ++ glob = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL); + if (! glob) + throw _Exception(_("Scripting: could not initialize glboal class")); + +@@ -539,12 +539,12 @@ + throw _Exception(_("Scripting: JS_DefineFunctions failed")); + } + +-JSScript *Script::_load(zmm::String scriptPath) ++JSObject *Script::_load(zmm::String scriptPath) + { + if (glob == NULL) + initGlobalObject(); + +- JSScript *scr; ++ JSObject *scr; + + String scriptText = read_text_file(scriptPath); + +@@ -571,14 +571,11 @@ + + void Script::load(zmm::String scriptPath) + { +- if (script) +- JS_DestroyScript(cx, script); +- + script = _load((scriptPath)); + } + + +-void Script::_execute(JSScript *scr) ++void Script::_execute(JSObject *scr) + { + jsval ret_val; + +@@ -662,7 +659,7 @@ + JSObject *js_meta = getObjectProperty(js, _("meta")); + if (js_meta) + { +- JS_AddNamedRoot(cx, &js_meta, "meta"); ++ JS_AddNamedObjectRoot(cx, &js_meta, "meta"); + /// \todo: only metadata enumerated in MT_KEYS is taken + for (int i = 0; i < M_MAX; i++) + { +@@ -687,7 +684,7 @@ + } + } + } +- JS_RemoveRoot(cx, &js_meta); ++ JS_RemoveObjectRoot(cx, &js_meta); + } + + // stuff that has not been exported to js +diff -ur mediatomb-0.12.1.orig/src/scripting/script.h mediatomb-0.12.1/src/scripting/script.h +--- mediatomb-0.12.1.orig/src/scripting/script.h 2010-03-25 10:58:05.000000000 -0400 ++++ mediatomb-0.12.1/src/scripting/script.h 2011-11-16 22:28:06.000000000 -0500 +@@ -66,8 +66,8 @@ + JSRuntime *rt; + JSContext *cx; + JSObject *glob; +- JSScript *script; +- JSScript *common_script; ++ JSObject *script; ++ JSObject *common_script; + + public: + Script(zmm::Ref<Runtime> runtime); +@@ -115,8 +115,8 @@ + JSObject *common_root; + + void initGlobalObject(); +- JSScript *_load(zmm::String scriptPath); +- void _execute(JSScript *scr); ++ JSObject *_load(zmm::String scriptPath); ++ void _execute(JSObject *scr); + zmm::Ref<StringConverter> _p2i; + zmm::Ref<StringConverter> _j2i; + zmm::Ref<StringConverter> _f2i; |