static void add_double(void *opaque, void *parent, const char *name, double v) { jsdouble *d = JS_NewDouble(opaque, v); if(d != NULL) add_item(opaque, parent, name, DOUBLE_TO_JSVAL(d)); }
void js_set_prop_dbl(JSContext *cx, JSObject *o, const char *prop, double v) { jsdouble *d = JS_NewDouble(cx, v); if(d != NULL) js_set_prop_jsval(cx, o, prop, DOUBLE_TO_JSVAL(d)); }
static JSBool js_time(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { time_t t; time(&t); jsdouble *d = JS_NewDouble(cx, t); *rval = DOUBLE_TO_JSVAL(d); return JS_TRUE; }
//--------------------------------------------------------------------------- jsval CONCEPT_TO_JS(JSContext *cx, void *member) { INTEGER type = 0; char *szValue = 0; NUMBER nValue = 0; jsval ret = 0; InvokePtr(INVOKE_GET_VARIABLE, member, &type, &szValue, &nValue); switch (type) { case VARIABLE_NUMBER: ret = DOUBLE_TO_JSVAL(JS_NewDouble(cx, nValue)); break; case VARIABLE_STRING: ret = STRING_TO_JSVAL(JS_NewString(cx, szValue, (int)nValue)); break; default: ret = DOUBLE_TO_JSVAL(JS_NewDouble(cx, 1.0)); } return ret; }
JS_XDRDouble(JSXDRState *xdr, jsdouble **dpp) { jsdouble d = (xdr->mode == JSXDR_ENCODE) ? **dpp : 0.0; if (!XDRDoubleValue(xdr, &d)) return JS_FALSE; if (xdr->mode == JSXDR_DECODE) { *dpp = JS_NewDouble(xdr->cx, d); if (!*dpp) return JS_FALSE; } return JS_TRUE; }
static jsval jsval_from_htsmsgfield(JSContext *cx, htsmsg_field_t *f) { jsdouble *d; switch(f->hmf_type) { case HMF_STR: return STRING_TO_JSVAL(JS_NewStringCopyZ(cx, f->hmf_str)); case HMF_S64: if(f->hmf_s64 <= INT32_MAX && f->hmf_s64 >= INT32_MIN && INT_FITS_IN_JSVAL(f->hmf_s64)) return INT_TO_JSVAL(f->hmf_s64); if((d = JS_NewDouble(cx, f->hmf_s64)) != NULL) return DOUBLE_TO_JSVAL(d); break; case HMF_DBL: if((d = JS_NewDouble(cx, f->hmf_dbl)) != NULL) return DOUBLE_TO_JSVAL(d); break; } return JSVAL_NULL; }
void js_set_prop_int(JSContext *cx, JSObject *o, const char *prop, int v) { jsval val; if(v <= INT32_MAX && v >= INT32_MIN && INT_FITS_IN_JSVAL(v)) val = INT_TO_JSVAL(v); else { jsdouble *d = JS_NewDouble(cx, v); if(d == NULL) return; val = DOUBLE_TO_JSVAL(d); } js_set_prop_jsval(cx, o, prop, val); }
JS_XDRDouble(JSXDRState *xdr, jsdouble **dp) { jsdpun u; if (xdr->mode == JSXDR_ENCODE) u.d = **dp; if (!JS_XDRUint32(xdr, &u.s.lo) || !JS_XDRUint32(xdr, &u.s.hi)) return JS_FALSE; if (xdr->mode == JSXDR_DECODE) { *dp = JS_NewDouble(xdr->cx, u.d); if (!*dp) return JS_FALSE; } return JS_TRUE; }