static JSBool ChangeCase(JSContext* cx, JSHandleString src, JSMutableHandleValue rval, void(*changeCaseFnc)(const nsAString&, nsAString&)) { nsDependentJSString depStr; if (!depStr.init(cx, src)) { return false; } nsAutoString result; changeCaseFnc(depStr, result); JSString *ucstr = JS_NewUCStringCopyN(cx, (jschar*)result.get(), result.Length()); if (!ucstr) { return false; } rval.set(STRING_TO_JSVAL(ucstr)); return true; }
static JSBool ChangeCase(JSContext* cx, JSString* src, jsval* rval, void(*changeCaseFnc)(const nsAString&, nsAString&)) { nsDependentJSString depStr; if (!depStr.init(cx, src)) { return JS_FALSE; } nsAutoString result; changeCaseFnc(depStr, result); JSString *ucstr = JS_NewUCStringCopyN(cx, (jschar*)result.get(), result.Length()); if (!ucstr) { return JS_FALSE; } *rval = STRING_TO_JSVAL(ucstr); return JS_TRUE; }