static JSBool js_createMultiOpt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { js_setting_group_t *jsg = JS_GetPrivate(cx, obj); const char *id; const char *title; JSObject *func; JSObject *options; if(!JS_ConvertArguments(cx, argc, argv, "ssoo", &id, &title, &options, &func)) return JS_FALSE; js_setting_t *jss = jss_create(cx, obj, id, rval, func, jsg); if(jss == NULL) return JS_FALSE; jss->jss_s = settings_create_multiopt(jsg->jsg_root, id, _p(title), js_store_update_string, jss, js_global_pc); add_multiopt(cx, jss, options); settings_multiopt_initiate(jss->jss_s, jsg->jsg_store, js_setting_group_save, jsg); jss->jss_cx = NULL; return JS_TRUE; }
static JSBool js_createMultiOpt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { js_setting_group_t *jsg = JS_GetPrivate(cx, obj); const char *id; const char *title; JSObject *func; JSObject *options; JSBool persistent = JS_FALSE; if(!JS_ConvertArguments(cx, argc, argv, "ssoo/b", &id, &title, &options, &func, &persistent)) return JS_FALSE; js_setting_t *jss = jss_create(cx, obj, id, rval, func, jsg, persistent); if(jss == NULL) return JS_FALSE; jss->jss_s = settings_create_multiopt(jsg->jsg_root, id, _p(title), jsg->jsg_settings_flags); rstr_t *r = NULL; if(persistent && jsg->jsg_kv_url) r = kv_url_opt_get_rstr(jsg->jsg_kv_url, KVSTORE_DOMAIN_PLUGIN, id); add_multiopt(cx, jss, options, rstr_get(r)); rstr_release(r); settings_multiopt_initiate(jss->jss_s, js_store_update_string, jss, js_global_pc, jsg->jsg_store, js_setting_group_save, jsg); jss->jss_cx = NULL; return JS_TRUE; }