User Guide

536 C-Level Extensibility
(mmEnv.valueToString ? (*(mmEnv.valueToString))(c, v, l) : (unsigned
short *)0)
/* unsigned char *JS_ValueToBytes(JSContext *cx, jsval v, unsigned int
*pLength) */
#define JS_ValueToBytes(c, v, l) \
(mmEnv.valueToBytes ? (*(mmEnv.valueToBytes))(c, v, l) : (unsigned char
*)0)
/* JSBool JS_ValueToInteger(JSContext *cx, jsval v, long *lp); */
#define JS_ValueToInteger(c, v, l) \
(mmEnv.valueToInteger ? (*(mmEnv.valueToInteger))(c, v, l) : JS_FALSE)
/* JSBool JS_ValueToDouble(JSContext *cx, jsval v, double *dp); */
#define JS_ValueToDouble(c, v, d) \
(mmEnv.valueToDouble ? (*(mmEnv.valueToDouble))(c, v, d) : JS_FALSE)
/* JSBool JS_ValueToBoolean(JSContext *cx, jsval v, JSBool *bp); */
#define JS_ValueToBoolean(c, v, b) \
(mmEnv.valueToBoolean ? (*(mmEnv.valueToBoolean))(c, v, b) : JS_FALSE)
/* JSBool JS_ValueToObject(JSContext *cx, jsval v, JSObject **op); */
#define JS_ValueToObject(c, v, o) \
(mmEnv.valueToObject ? (*(mmEnv.valueToObject))(c, v, o) : JS_FALSE)
/* JSBool JS_StringToValue(JSContext *cx, unsigned short *bytes, uint sz,
jsval *vp); */
#define JS_StringToValue(c, b, s, v) \
(mmEnv.stringToValue ? (*(mmEnv.stringToValue))(c, b, s, v) : JS_FALSE)
/* JSBool JS_BytesToValue(JSContext *cx, unsigned char *bytes, uint sz,
jsval *vp); */
#define JS_BytesToValue(c, b, s, v) \
(mmEnv.bytesToValue ? (*(mmEnv.bytesToValue))(c, b, s, v) : JS_FALSE)
/* JSBool JS_DoubleToValue(JSContext *cx, double dv, jsval *vp); */
#define JS_DoubleToValue(c, d, v) \
(mmEnv.doubleToValue ? (*(mmEnv.doubleToValue))(c, d, v) : JS_FALSE)
/* jsval JS_IntegerToValue(long lv); */
#define JS_IntegerToValue(lv) (((jsval)(lv) << 1) | 0x1)
/* jsval JS_BooleanToValue(JSBool bv); */
#define JS_BooleanToValue(bv) (((jsval)(bv) << 3) | 0x6)
/* jsval JS_ObjectToValue(JSObject *obj); */
#define JS_ObjectToValue(ov) ((jsval)(ov))
/* unsigned short *JS_ObjectType(JSObject *obj); */
#define JS_ObjectType(o) \