bool m_is8Bit;
};
-template<typename StringType1, typename StringType2>
-inline JSValue jsMakeNontrivialString(ExecState* exec, StringType1 string1, StringType2 string2)
+template<typename StringType>
+inline JSValue jsMakeNontrivialString(ExecState* exec, StringType&& string)
{
- PassRefPtr<StringImpl> result = WTF::tryMakeString(string1, string2);
- if (!result)
- return throwOutOfMemoryError(exec);
- return jsNontrivialString(exec, result);
-}
-
-template<typename StringType1, typename StringType2, typename StringType3>
-inline JSValue jsMakeNontrivialString(ExecState* exec, StringType1 string1, StringType2 string2, StringType3 string3)
-{
- PassRefPtr<StringImpl> result = WTF::tryMakeString(string1, string2, string3);
- if (!result)
- return throwOutOfMemoryError(exec);
- return jsNontrivialString(exec, result);
-}
-
-template<typename StringType1, typename StringType2, typename StringType3, typename StringType4>
-inline JSValue jsMakeNontrivialString(ExecState* exec, StringType1 string1, StringType2 string2, StringType3 string3, StringType4 string4)
-{
- PassRefPtr<StringImpl> result = WTF::tryMakeString(string1, string2, string3, string4);
- if (!result)
- return throwOutOfMemoryError(exec);
- return jsNontrivialString(exec, result);
-}
-
-template<typename StringType1, typename StringType2, typename StringType3, typename StringType4, typename StringType5>
-inline JSValue jsMakeNontrivialString(ExecState* exec, StringType1 string1, StringType2 string2, StringType3 string3, StringType4 string4, StringType5 string5)
-{
- PassRefPtr<StringImpl> result = WTF::tryMakeString(string1, string2, string3, string4, string5);
- if (!result)
- return throwOutOfMemoryError(exec);
- return jsNontrivialString(exec, result);
+ return jsNontrivialString(exec, std::forward<StringType>(string));
}
-template<typename StringType1, typename StringType2, typename StringType3, typename StringType4, typename StringType5, typename StringType6>
-inline JSValue jsMakeNontrivialString(ExecState* exec, StringType1 string1, StringType2 string2, StringType3 string3, StringType4 string4, StringType5 string5, StringType6 string6)
+template<typename StringType, typename... StringTypes>
+inline JSValue jsMakeNontrivialString(ExecState* exec, const StringType& string, const StringTypes&... strings)
{
- PassRefPtr<StringImpl> result = WTF::tryMakeString(string1, string2, string3, string4, string5, string6);
+ RefPtr<StringImpl> result = WTF::tryMakeString(string, strings...);
if (!result)
return throwOutOfMemoryError(exec);
- return jsNontrivialString(exec, result);
+ return jsNontrivialString(exec, result.release());
}
}