JSBool Window_printString (JSContext* cx, JSObject* object, uintN argc, jsval* argv, jsval* rval) { if (argc < 1) { JS_ReportError(cx, "Not enough parameters."); return JS_FALSE; } WINDOW* win = (WINDOW*) JS_GetPrivate(cx, object); JS_BeginRequest(cx); JS_EnterLocalRootScope(cx); if (argc == 1){ wprintw(win, JS_GetStringBytes(JS_ValueToString(cx, argv[0]))); } else if (argc == 2) { JSObject* options; JS_ValueToObject(cx, argv[1], &options); jsval x, y; JS_GetProperty(cx, options, "x", &x); if (JSVAL_IS_VOID(x) || JSVAL_IS_NULL(x)) { JS_GetProperty(cx, options, "X", &x); } JS_GetProperty(cx, options, "y", &y); if (JSVAL_IS_VOID(y) || JSVAL_IS_NULL(y)) { JS_GetProperty(cx, options, "Y", &y); } __Window_options(cx, win, options, JS_TRUE); if (!JSVAL_IS_INT(x) && !JSVAL_IS_INT(y)) { wprintw(win, JS_GetStringBytes(JS_ValueToString(cx, argv[0]))); } else { mvwprintw(win, JSVAL_IS_INT(y) ? JSVAL_TO_INT(y) : 0, JSVAL_IS_INT(x) ? JSVAL_TO_INT(x) : 0, JS_GetStringBytes(JS_ValueToString(cx, argv[0])) ); } __Window_options(cx, win, options, JS_FALSE); } JS_LeaveLocalRootScope(cx); JS_EndRequest(cx); return JS_TRUE; }
/** * implementation of InstallVersion.compareTo() */ static JSBool PR_CALLBACK su_versionCompareTo(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) { int compval; VERSION thisver, v; if ( argc == 0 ) return JS_FALSE; if ( JSVAL_IS_STRING(argv[0]) ) { su_strToVersion( JS_GetStringBytes(JSVAL_TO_STRING(argv[0])), &v ); } else if (JSVAL_IS_OBJECT(argv[0]) ) { /* check to make sure it's an InstallVersion */ JSObject *argobj; JSClass *argclass; argobj = JSVAL_TO_OBJECT(argv[0]); argclass = JS_GetClass(cx, argobj); if ( argclass != &su_version_class ) { /* XXX report error here */ return JS_FALSE; } su_objToVers( cx, argobj, &v ); } else { v.major = v.minor = v.release = v.build = 0; if ( argc > 0 && JSVAL_IS_INT(argv[0]) ) v.major = JSVAL_TO_INT(argv[0]); if ( argc > 1 && JSVAL_IS_INT(argv[1]) ) v.minor = JSVAL_TO_INT(argv[1]); if ( argc > 2 && JSVAL_IS_INT(argv[2]) ) v.release = JSVAL_TO_INT(argv[2]); if ( argc > 3 && JSVAL_IS_INT(argv[3]) ) v.build = JSVAL_TO_INT(argv[3]); } su_objToVers( cx, obj, &thisver ); compval = su_compareVersions( &thisver, &v ); *rval = INT_TO_JSVAL(compval); return JS_TRUE; }
JSBool ADM_JSAvidemux::GoToTime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {// begin GoToTime ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj); // default return value *rval = BOOLEAN_TO_JSVAL(false); if(argc != 3) return JS_FALSE; if(JSVAL_IS_INT(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false || JSVAL_IS_INT(argv[2]) == false) return JS_FALSE; enterLock(); *rval = INT_TO_JSVAL(A_jumpToTime(JSVAL_TO_INT(argv[0]),JSVAL_TO_INT(argv[1]),JSVAL_TO_INT(argv[2]), 0)); leaveLock(); return JS_TRUE; }// end GoToTime
JSBool ADM_JSAvidemux::GoToTime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {// begin GoToTime ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj); // default return value *rval = BOOLEAN_TO_JSVAL(false); if(argc != 3) return JS_FALSE; if(JSVAL_IS_INT(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false || JSVAL_IS_INT(argv[2]) == false) return JS_FALSE; jsrefcount nRefCount = JS_SuspendRequest(cx); *rval = INT_TO_JSVAL(A_jumpToTime(JSVAL_TO_INT(argv[0]),JSVAL_TO_INT(argv[1]),JSVAL_TO_INT(argv[2]))); JS_ResumeRequest(cx,nRefCount); return JS_TRUE; }// end GoToTime
static JSBool jsSetBits( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { *rval = JSVAL_FALSE ; jsPort_t *port = (jsPort_t *)JS_GetInstancePrivate( cx, obj, &jsSerialPortClass_, NULL ); if( port ) { if( ( 1 == argc ) && JSVAL_IS_INT( argv[0] ) ) { int const bits = JSVAL_TO_INT( argv[0] ); if( ( 5 <= bits ) && ( 8 >= bits ) ) { struct termios termState; tcgetattr(port->getFd(),&termState); termState.c_cflag &= ~CSIZE ; termState.c_cflag |= csLengthMasks_[bits-5]; int result = tcsetattr( port->getFd(), TCSANOW, &termState ); if( 0 == result ) { *rval = JSVAL_TRUE ; } else perror( "setBits" ); } else JS_ReportError( cx, "unsupported character length" ); } else JS_ReportError( cx, "Usage: scanner.setBits( 7|8 );" ); } return JS_TRUE ; }
GetInstallVersionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { nsIDOMInstallVersion *a = (nsIDOMInstallVersion*)JS_GetPrivate(cx, obj); // If there's no private data, this must be the prototype, so ignore if (nsnull == a) { return JS_TRUE; } if (JSVAL_IS_INT(id)) { switch(JSVAL_TO_INT(id)) { case INSTALLVERSION_MAJOR: { PRInt32 prop; if (NS_OK == a->GetMajor(&prop)) { *vp = INT_TO_JSVAL(prop); } else { return JS_FALSE; } break; } case INSTALLVERSION_MINOR: { PRInt32 prop; if (NS_OK == a->GetMinor(&prop)) { *vp = INT_TO_JSVAL(prop); } else { return JS_FALSE; } break; } case INSTALLVERSION_RELEASE: { PRInt32 prop; if (NS_OK == a->GetRelease(&prop)) { *vp = INT_TO_JSVAL(prop); } else { return JS_FALSE; } break; } case INSTALLVERSION_BUILD: { PRInt32 prop; if (NS_OK == a->GetBuild(&prop)) { *vp = INT_TO_JSVAL(prop); } else { return JS_FALSE; } break; } } } return JS_TRUE; }
INT unit_cancel(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { CDebug cDbg("unit cancel"); if(!GameReady()) return JS_TRUE; if(argc == 1 && JSVAL_IS_INT(argv[0])) { jsint nType = JSVAL_TO_INT(argv[0]); if(nType == 0) D2CLIENT_CloseInteract(); else if(nType == 1) D2CLIENT_CloseNPCInteract(); } else if(D2CLIENT_GetCursorItem()) { // Diablo drops an Item by using the Walk function. // Just perform a clickMap "click" and we drop it D2CLIENT_clickMap(0, 10, 10, 0x08); } return JS_TRUE; }
js_free_symbol(void *priv, PRHashEntry *he, uintN flag) { JSContext *cx; JSSymbol *sym, **sp; JSProperty *prop; cx = priv; PR_ASSERT(JS_IS_LOCKED(cx)); sym = (JSSymbol *)he; prop = sym->entry.value; if (prop) { sym->entry.value = NULL; prop = js_DropProperty(cx, prop); if (prop) { for (sp = &prop->symbols; *sp; sp = &(*sp)->next) { if (*sp == sym) { *sp = sym->next; if (!*sp) break; } } sym->next = NULL; } } if (flag == HT_FREE_ENTRY) { if (!JSVAL_IS_INT(sym_id(sym))) JS_LOCK_VOID(cx, js_DropAtom(cx, sym_atom(sym))); JS_free(cx, he); } }
static void js_json_emit_jsval(JSContext *cx, jsval value, htsbuf_queue_t *out) { char buf[100]; if(JSVAL_IS_BOOLEAN(value)) { if(JSVAL_TO_BOOLEAN(value)) htsbuf_append(out, "true", 4); else htsbuf_append(out, "false", 5); } else if(JSVAL_IS_INT(value)) { snprintf(buf, sizeof(buf), "%d", JSVAL_TO_INT(value)); htsbuf_append(out, buf, strlen(buf)); } else if(JSVAL_IS_DOUBLE(value)) { double dbl; if(JS_ValueToNumber(cx, value, &dbl) && !my_double2str(buf, sizeof(buf), dbl)) htsbuf_append(out, buf, strlen(buf)); else htsbuf_append(out, "null", 4); } else if(JSVAL_IS_NULL(value)) { htsbuf_append(out, "null", 4); } else if(JSVAL_IS_STRING(value)) { js_json_emit_str(cx, value, out); } else if(JSVAL_IS_OBJECT(value)) { JSObject *obj = JSVAL_TO_OBJECT(value); JSClass *c = JS_GetClass(cx, obj); if(!strcmp(c->name, "XML")) // Treat some classes special js_json_emit_str(cx, value, out); else { if(json_encode_from_object(cx, obj, out)) htsbuf_append(out, "null", 4); } } }
static JSBool JSB_IOSiAP_paymentWithProduct(JSContext *cx, uint32_t argc, jsval *vp) { JSB_PRECONDITION2(argc > 0, cx, JS_FALSE, "Invalid number of arguments"); jsval *argv = JS_ARGV(cx,vp); JSObject *obj = (JSObject *)JS_THIS_OBJECT(cx, vp); IOSiAP_Bridge *bridge = (IOSiAP_Bridge *)JS_GetPrivate(obj); // safety check for type JSObject *productObj = JSVAL_TO_OBJECT(argv[0]); if (NULL == productObj) { JS_SET_RVAL(cx, vp, BOOLEAN_TO_JSVAL(JS_FALSE)); return JS_TRUE; } if (JS_FALSE == JS_InstanceOf(cx, productObj, JSB_Product_class, NULL)) { JS_SET_RVAL(cx, vp, BOOLEAN_TO_JSVAL(JS_FALSE)); return JS_TRUE; } IOSProduct *product = (IOSProduct *)JS_GetPrivate(productObj); int quantity = 1; if (argc > 1 && JSVAL_IS_INT(argv[1])) { quantity = JSVAL_TO_INT(argv[1]); } bridge->iap->paymentWithProduct(product, quantity); JS_SET_RVAL(cx, vp, BOOLEAN_TO_JSVAL(JS_TRUE)); return JS_TRUE; }
static PyObject *to_python_object(JSContext *context, jsval value) { if (JSVAL_IS_PRIMITIVE(value)) { if (JSVAL_IS_STRING(value)) { return PyUnicode_FromString(JS_EncodeString(context, JSVAL_TO_STRING(value))); } else if (JSVAL_IS_BOOLEAN(value)) { return PyBool_FromLong(JSVAL_TO_BOOLEAN(value)); } else if (JSVAL_IS_INT(value)) { return PyLong_FromLong(JSVAL_TO_INT(value)); } else if (JSVAL_IS_DOUBLE(value)) { return PyFloat_FromDouble(JSVAL_TO_DOUBLE(value)); } else { Py_INCREF(Py_None); return Py_None; } } else { JSObject *obj = JSVAL_TO_OBJECT(value); if (JS_ObjectIsDate(context, obj)) { return to_python_datetime(context, obj); } else if (JS_IsArrayObject(context, obj)) { return to_python_list(context, obj); } else { return to_python_dict(context, obj); } } }
static JSBool node_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { EJS_CHECK_CLASS(cx, obj, node_class); if (!JSVAL_IS_INT(id)) return JS_TRUE; jsint slot=JSVAL_TO_INT(id); dom::Node* nthis=(dom::Node *)JS_GetPrivate(cx,obj); if (!nthis) return JS_TRUE; switch (slot) { case NODE_VALUE: { dom::String* value=NULL; if (!jsToDomString(cx,*vp,value)) return JS_FALSE; try{ nthis->setNodeValue(value); }catch(const dom::DOMException &e){ EJS_THROW_ERROR(cx, obj, e.what()); } break; } default: break; } return JS_TRUE; }
NPT_Result GPAC_GenericDevice::OnAction(PLT_ActionReference& action, const PLT_HttpRequestContext& context) { NPT_COMPILER_UNUSED(context); #ifdef GPAC_HAS_SPIDERMONKEY gf_mx_p(m_pMutex); #endif PLT_ActionDesc &act_desc = action->GetActionDesc(); NPT_String name = act_desc.GetName(); #ifdef GPAC_HAS_SPIDERMONKEY assert(!m_pSema); #endif GF_LOG(GF_LOG_INFO, GF_LOG_NETWORK, ("[UPnP] Action %s called (thread %d)\n", (char *) name, gf_th_id() )); #ifdef GPAC_HAS_SPIDERMONKEY if (JSVAL_IS_NULL(act_proc)) { gf_mx_v(m_pMutex); return NPT_SUCCESS; } jsval argv[2]; m_pUPnP->LockJavascript(GF_TRUE); JSObject *js_action = JS_NewObject(m_pUPnP->m_pJSCtx, &m_pUPnP->upnpDeviceClass._class, 0, 0); argv[0] = OBJECT_TO_JSVAL(js_action); SMJS_SET_PRIVATE(m_pUPnP->m_pJSCtx, js_action, this); act_ref = action; JS_DefineProperty(m_pUPnP->m_pJSCtx, js_action, "Name", STRING_TO_JSVAL( JS_NewStringCopyZ(m_pUPnP->m_pJSCtx, name) ), 0, 0, JSPROP_READONLY | JSPROP_PERMANENT); GPAC_Service *service = (GPAC_Service *) act_desc.GetService(); JS_DefineProperty(m_pUPnP->m_pJSCtx, js_action, "Service", service->m_pObj ? OBJECT_TO_JSVAL( service->m_pObj) : JSVAL_NULL, 0, 0, JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_pUPnP->m_pJSCtx, js_action, "GetArgument", upnp_action_get_argument, 1, 0); JS_DefineFunction(m_pUPnP->m_pJSCtx, js_action, "SendReply", upnp_action_send_reply, 1, 0); /*create a semaphore*/ m_pSema = gf_sema_new(1, 0); jsval rval; JS_CallFunctionValue(m_pUPnP->m_pJSCtx, obj, act_proc, 1, argv, &rval); SMJS_SET_PRIVATE(m_pUPnP->m_pJSCtx, js_action, NULL); m_pUPnP->LockJavascript(GF_FALSE); if (JSVAL_IS_INT(rval) && (JSVAL_TO_INT(rval) != 0)) { action->SetError(JSVAL_TO_INT(rval), "Action Failed"); } /*wait on the semaphore*/ if (!gf_sema_wait_for(m_pSema, 10000)) { GF_LOG(GF_LOG_WARNING, GF_LOG_NETWORK, ("[UPnP] Reply processing to action %s timeout - sending incomplete reply)\n", (char *) name)); } gf_sema_del(m_pSema); m_pSema = NULL; gf_mx_v(m_pMutex); #endif return NPT_SUCCESS; }
static JSBool perlarray_set( JSContext *cx, JSObject *obj, jsval id, jsval *vp ) { dTHX; SV *ref = (SV *)JS_GetPrivate(cx, obj); AV *av = (AV *)SvRV(ref); PJS_ARRAY_CHECK if(JSVAL_IS_INT(id)) { IV ix = JSVAL_TO_INT(id); SV *sv; if(!PJS_ReflectJS2Perl(aTHX_ cx, *vp, &sv, 1)) { JS_ReportError(cx, "Failed to convert argument to Perl"); return JS_FALSE; } if(!av_store(av, ix, sv)) { if(SvRMAGICAL(av)) mg_set(sv); sv_free(sv); } } return JS_TRUE; }
static JSBool perlarray_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { dTHX; SV *ref = (SV *)JS_GetPrivate(cx, obj); AV *av = (AV *)SvRV(ref); SV **v; int index; PJS_ARRAY_CHECK if(JSVAL_IS_STRING(id)) return JS_TRUE; if(JSVAL_IS_INT(id)) { index = JSVAL_TO_INT(id); v = av_fetch(av, index, 0); if(v) { JSString *str = JS_ValueToString(cx,id); if(!JS_DefineProperty(cx, obj, JS_GetStringBytes(str), JSVAL_VOID, NULL, NULL, 0)) return JS_FALSE; *objp = obj; } } return JS_TRUE; }
static JSBool perlarray_get( JSContext *cx, JSObject *obj, jsval id, jsval *vp ) { dTHX; SV *ref = (SV *)JS_GetPrivate(cx, obj); AV *av = (AV *)SvRV(ref); JSBool ok = JS_TRUE; PJS_ARRAY_CHECK if(JSVAL_IS_INT(id)) { I32 ix = JSVAL_TO_INT(id); SV **v; ENTER; SAVETMPS; v = av_fetch(av, ix, 0); if(v) { if(SvGMAGICAL(*v)) mg_get(*v); ok = PJS_ReflectPerl2JS(aTHX_ cx, obj, sv_mortalcopy(*v), vp); } else { JS_ReportError(cx, "Failed to retrieve element at index: %d", ix); ok = JS_FALSE; } FREETMPS; LEAVE; } return ok; }
/* * This function is used to convert function arguments and return value (jsval) * into the following based on each value's type tag: * * jsval returned * ------------------- * STRING -> char * * INT -> int * DOUBLE -> double * * BOOLEAN -> int * OBJECT -> void * * * All are presented as void * for DTrace consumers to use, after shifting or * masking out the JavaScript type bits. This allows D scripts to use ints and * booleans directly and copyinstr() for string arguments, when types are known * beforehand. * * This is used by the function-args and function-rval probes, which also * provide raw (unmasked) jsvals should type info be useful from D scripts. */ void * jsdtrace_jsvaltovoid(JSContext *cx, jsval argval) { JSType type = TYPEOF(cx, argval); switch (type) { case JSTYPE_NULL: case JSTYPE_VOID: return JS_TYPE_STR(type); case JSTYPE_BOOLEAN: return (void *)JSVAL_TO_BOOLEAN(argval); case JSTYPE_STRING: return (void *)js_GetStringBytes(cx, JSVAL_TO_STRING(argval)); case JSTYPE_NUMBER: if (JSVAL_IS_INT(argval)) return (void *)JSVAL_TO_INT(argval); return JSVAL_TO_DOUBLE(argval); default: return JSVAL_TO_GCTHING(argval); } /* NOTREACHED */ }
static JSBool js_handle_ctrlkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { char key; int32 mode=0; sbbs_t* sbbs; JSString* js_str; *rval = JSVAL_FALSE; if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); if(JSVAL_IS_INT(argv[0])) key=(char)JSVAL_TO_INT(argv[0]); else { if((js_str=JS_ValueToString(cx, argv[0]))==NULL) return(JS_FALSE); key=*JS_GetStringBytes(js_str); } if(argc>1) JS_ValueToInt32(cx, argv[1], &mode); *rval = BOOLEAN_TO_JSVAL(sbbs->handle_ctrlkey(key,mode)==0); return(JS_TRUE); }
static JSBool jsg_set_prop(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { js_setting_group_t *jsg = JS_GetPrivate(cx, obj); const char *name; if(jsg->jsg_frozen) return JS_TRUE; name = JSVAL_IS_STRING(id) ? JS_GetStringBytes(JSVAL_TO_STRING(id)) : NULL; if(name != NULL) { jsval v = *vp; if(JSVAL_IS_INT(v)) { htsmsg_delete_field(jsg->jsg_store, name); htsmsg_add_s32(jsg->jsg_store, name, JSVAL_TO_INT(v)); } else if(JSVAL_IS_DOUBLE(v)) { double d; if(JS_ValueToNumber(cx, v, &d)) { htsmsg_delete_field(jsg->jsg_store, name); htsmsg_add_dbl(jsg->jsg_store, name, d); } } else if(JSVAL_IS_STRING(v)) { htsmsg_delete_field(jsg->jsg_store, name); htsmsg_add_str(jsg->jsg_store, name, JS_GetStringBytes(JS_ValueToString(cx, v))); } else { return JS_TRUE; } htsmsg_store_save(jsg->jsg_store, jsg->jsg_spath); } return JS_TRUE; }
static JSBool log_prop(JSContext *context, JSObject *obj, jsval id, jsval *value_p, const char *what) { if (JSVAL_IS_STRING(id)) { const char *name; name = gjs_string_get_ascii(id); gjs_debug(GJS_DEBUG_PROPS, "prop %s: %s", name, what); } else if (JSVAL_IS_INT(id)) { gjs_debug(GJS_DEBUG_PROPS, "prop %d: %s", JSVAL_TO_INT(id), what); } else { gjs_debug(GJS_DEBUG_PROPS, "prop not-sure-what: %s", what); } return JS_TRUE; }
static GIFieldInfo * get_field_info (JSContext *context, Boxed *priv, jsid id) { int field_index; jsval id_val; if (!JS_IdToValue(context, id, &id_val)) return JS_FALSE; if (!JSVAL_IS_INT (id_val)) { gjs_throw(context, "Field index for %s is not an integer", g_base_info_get_name ((GIBaseInfo *)priv->info)); return NULL; } field_index = JSVAL_TO_INT(id_val); if (field_index < 0 || field_index >= g_struct_info_get_n_fields (priv->info)) { gjs_throw(context, "Bad field index %d for %s", field_index, g_base_info_get_name ((GIBaseInfo *)priv->info)); return NULL; } return g_struct_info_get_field (priv->info, field_index); }
INT unit_getStat(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { CDebug cDbg("unit getStat"); if(!GameReady()) return JS_TRUE; myUnit* lpUnit = (myUnit*)JS_GetPrivate(cx, obj); *rval = JSVAL_FALSE; if(!lpUnit || IsBadReadPtr(lpUnit, sizeof(myUnit)) || lpUnit->_dwPrivateType != PRIVATE_UNIT) return JS_TRUE; UnitAny* pUnit = D2CLIENT_FindUnit(lpUnit->dwUnitId, lpUnit->dwType); if(!pUnit) return JS_TRUE; jsint nStat = JSVAL_TO_INT(argv[0]); jsint nSubIndex = NULL; if(argc > 1 && JSVAL_IS_INT(argv[1])) nSubIndex = JSVAL_TO_INT(argv[1]); if(nStat >= 6 && nStat <= 11) *rval = INT_TO_JSVAL(D2COMMON_GetUnitStat(pUnit, nStat, nSubIndex)>>8); else if(nStat == 13)
static JSBool rpmts_mi(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtsClass, NULL); rpmts ts = ptr; jsval tagid = JSVAL_VOID; jsval kv = JSVAL_VOID; rpmTag tag = RPMDBI_PACKAGES; JSObject *mio; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); if (!(ok = JS_ConvertArguments(cx, argc, argv, "/vv", &tagid, &kv))) goto exit; if (!JSVAL_IS_VOID(tagid)) { /* XXX TODO: make sure both tag and key were specified. */ tag = JSVAL_IS_INT(tagid) ? (rpmTag) JSVAL_TO_INT(tagid) : tagValue(JS_GetStringBytes(JS_ValueToString(cx, tagid))); } if ((mio = rpmjs_NewMiObject(cx, ts, tag, kv)) == NULL) goto exit; *rval = OBJECT_TO_JSVAL(mio); ok = JS_TRUE; exit: return ok; }
PyObject* js2py_with_parent(Context* cx, jsval val, jsval parent) { JSType vtype = JS_TypeOfValue(cx->cx, val); PyObject* unwrapped; /* There's not JSType for null. Or rather, its reported as Object which causes segfaults. */ if(JSVAL_IS_NULL(val) || JSVAL_IS_VOID(val)) { Py_RETURN_NONE; } else if(vtype == JSTYPE_BOOLEAN) { if(JSVAL_TO_BOOLEAN(val)) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } else if(vtype == JSTYPE_STRING) { return js2py_string(cx, val); } else if(vtype == JSTYPE_NUMBER) { if(JSVAL_IS_INT(val)) return js2py_integer(cx, val); else return js2py_double(cx, val); } /* Now try to unwrap any incoming object in so we don't rewrap our own objects being passed around. */ unwrapped = unwrap_pyobject(val); if (unwrapped != NULL) return unwrapped; if(vtype == JSTYPE_FUNCTION) { return js2py_function(cx, val, parent); } else if(vtype == JSTYPE_OBJECT) { JSObject* obj = JSVAL_TO_OBJECT(val); if(JS_IsArrayObject(cx->cx, obj)) { return js2py_array(cx, val); } return js2py_object(cx, val); } PyErr_SetString(PyExc_RuntimeError, "Unknown JSVAL type."); return NULL; }
// JavaScript Get Property Wrapper JSBool JSDOMProcessingInstruction::JSGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { if (JSVAL_IS_INT(id)) { if (JSVAL_TO_INT(id) < JSDOMNode::JSVAR_LASTENUM) return JSDOMNode::JSGetProperty(cx, obj, id, vp); try { JSDOMProcessingInstruction *priv; switch(JSVAL_TO_INT(id)) { case JSVAR_target: priv = (JSDOMProcessingInstruction*)JS_GetPrivate(cx, obj); if (priv==NULL) *vp = JSVAL_NULL; else *vp = __STRING_TO_JSVAL(priv->getTarget()); break; case JSVAR_data: priv = (JSDOMProcessingInstruction*)JS_GetPrivate(cx, obj); if (priv==NULL) *vp = JSVAL_NULL; else *vp = __STRING_TO_JSVAL(priv->getData()); break; } } catch(const DOMException &dome) { return js_throw_dom_error(cx, obj, dome.code); } catch( ... ) { return js_throw_error(cx, obj, "unknown exception" ); } } return JS_TRUE; }
static JSBool ValueIsLength(JSContext *cx, jsval v, jsuint *lengthp) { jsint i; jsdouble d; if (JSVAL_IS_INT(v)) { i = JSVAL_TO_INT(v); if (i < 0) { JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_BAD_ARRAY_LENGTH); return JS_FALSE; } *lengthp = (jsuint) i; return JS_TRUE; } if (!js_ValueToNumber(cx, v, &d)) { JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_BAD_ARRAY_LENGTH); return JS_FALSE; } if (!js_DoubleToECMAUint32(cx, d, (uint32 *)lengthp)) { JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_BAD_ARRAY_LENGTH); return JS_FALSE; } if (JSDOUBLE_IS_NaN(d) || d != *lengthp) { JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_BAD_ARRAY_LENGTH); return JS_FALSE; } return JS_TRUE; }
static JSBool jsGetPin( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { *rval = JSVAL_FALSE ; if( ( 1 == argc ) && JSVAL_IS_INT( argv[0] ) ) { unsigned pinNum = JSVAL_TO_INT(argv[0]); if( ( pinNum >= NUMADCPINS ) && ( pinNum < NUMGPIOPINS ) ){ bool value ; if( ucb1x00_get_pin( touchPoll_->getFd(), pinNum, value ) ){ if( value ) *rval = JSVAL_TRUE ; } else JS_ReportError( cx, "Error reading pin %u\n", pinNum ); } else JS_ReportError( cx, "Invalid pin (range [%u..%u])\n", NUMADCPINS, NUMGPIOPINS-1 ); } else JS_ReportError( cx, "Usage: touchScreen.getPin( pinNum[%u..%u])\n", NUMADCPINS, NUMGPIOPINS-1 ); return JS_TRUE ; }
Eina_Bool elixir_object_get_int(JSContext *cx, JSObject *obj, const char *name, int *value) { jsval propertie; jsdouble localdbl; if (!JS_GetProperty(cx, obj, name, &propertie)) return EINA_FALSE; if (JSVAL_IS_INT(propertie) || JSVAL_IS_STRING(propertie)) { if (!JS_ValueToInt32(cx, propertie, value)) return EINA_FALSE; } else if (JSVAL_IS_DOUBLE(propertie)) { if (!JS_ValueToNumber(cx, propertie, &localdbl)) return EINA_FALSE; *value = localdbl; } else if (JSVAL_IS_BOOLEAN(propertie)) { *value = JSVAL_TO_BOOLEAN(propertie); } else return EINA_FALSE; return EINA_TRUE; }
static JSBool rpmhdr_getprop(JSContext *cx, JSObject *obj, jsid id, jsval *vp) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmhdrClass, NULL); Header h = ptr; jsval idval; JS_IdToValue(cx, id, &idval); jsint tiny = JSVAL_TO_INT(idval); _PROP_DEBUG_ENTRY(_debug < 0); /* XXX the class has ptr == NULL, instances have ptr != NULL. */ if (ptr == NULL) return JS_TRUE; switch (tiny) { case _DEBUG: *vp = INT_TO_JSVAL(_debug); break; default: { char * s = NULL; rpmTag tag = JSVAL_IS_INT(id) ? (rpmTag) JSVAL_TO_INT(id) : tagValue((s = JS_EncodeString(cx, (JS_ValueToString(cx, id))))); if (s) JS_free(cx, s); if (rpmhdrLoadTag(cx, obj, h, tag, vp) == NULL) break; } break; } return JS_TRUE; }
JSBool ADM_JSAvidemuxVideo::SetFps1000(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {// begin PostProcess int fps; aviInfo info; if(argc != 1) return JS_FALSE; if(JSVAL_IS_INT(argv[0]) == false) return JS_FALSE; enterLock(); video_body->getVideoInfo(&info); video_body->getVideoInfo (avifileinfo); // default return value fps=JSVAL_TO_INT(argv[0]); if(fps>100000 || fps<2000) { printf("Fps too low\n"); leaveLock(); return JS_FALSE; } info.fps1000=fps; video_body->updateVideoInfo(&info); leaveLock(); return JS_TRUE; }// end PostProcess