else if (pref->flags & PREF_INT) { *rval = INT_TO_JSVAL(use_default ? pref->defaultPref.intVal : pref->userPref.intVal); } else if (pref->flags & PREF_BOOL) { *rval = BOOLEAN_TO_JSVAL(use_default ? pref->defaultPref.boolVal : pref->userPref.boolVal); }
else if (pref->flags & PREF_INT) *rval = INT_TO_JSVAL(use_default ? pref->defaultPref.intVal : pref->userPref.intVal); else if (pref->flags & PREF_BOOL) *rval = BOOLEAN_TO_JSVAL(use_default ? pref->defaultPref.boolVal : pref->userPref.boolVal);
JSBool PR_CALLBACK pref_NativeGetPref	(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval){	void* value = NULL;	PrefNode* pref;	PRBool prefExists = PR_TRUE;	    if (argc >= 1 && JSVAL_IS_STRING(argv[0]))    {    	const char *key = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));    	pref = (PrefNode*) PR_HashTableLookup(gHashTable, key);    	    	if (pref) {    		PRBool use_default = (PREF_IS_LOCKED(pref) || !PREF_HAS_USER_VALUE(pref));    			    		if (pref->flags & PREF_STRING) {    			char* str = use_default ? pref->defaultPref.stringVal : pref->userPref.stringVal;    			JSString* jsstr = JS_NewStringCopyZ(cx, str);    			*rval = STRING_TO_JSVAL(jsstr);    		}    		else if (pref->flags & PREF_INT) {    			*rval = INT_TO_JSVAL(use_default ? pref->defaultPref.intVal : pref->userPref.intVal);    		}    		else if (pref->flags & PREF_BOOL) {    			*rval = BOOLEAN_TO_JSVAL(use_default ? pref->defaultPref.boolVal : pref->userPref.boolVal);    		}    	}    }	return JS_TRUE;}