Index: Source/wtf/text/StringOperators.h |
diff --git a/Source/wtf/text/StringOperators.h b/Source/wtf/text/StringOperators.h |
index a4ed953d3c86e2ffa2043d62172cecac8e46ee19..65342dc033cd6212c8658ee0843dacd3d1782ed5 100644 |
--- a/Source/wtf/text/StringOperators.h |
+++ b/Source/wtf/text/StringOperators.h |
@@ -22,57 +22,26 @@ |
#ifndef StringOperators_h |
#define StringOperators_h |
+#include "StringConcatenate.h" |
+ |
namespace WTF { |
template<typename StringType1, typename StringType2> |
class StringAppend { |
public: |
- StringAppend(StringType1 string1, StringType2 string2) |
- : m_string1(string1) |
- , m_string2(string2) |
- { |
- } |
+ StringAppend(StringType1 string1, StringType2 string2); |
- operator String() const |
- { |
- return String(makeString(m_string1, m_string2)); |
- } |
+ operator String() const; |
- operator AtomicString() const |
- { |
- return AtomicString(makeString(m_string1, m_string2)); |
- } |
+ operator AtomicString() const; |
- bool is8Bit() |
- { |
- StringTypeAdapter<StringType1> adapter1(m_string1); |
- StringTypeAdapter<StringType2> adapter2(m_string2); |
- return adapter1.is8Bit() && adapter2.is8Bit(); |
- } |
+ bool is8Bit(); |
- void writeTo(LChar* destination) |
- { |
- ASSERT(is8Bit()); |
- StringTypeAdapter<StringType1> adapter1(m_string1); |
- StringTypeAdapter<StringType2> adapter2(m_string2); |
- adapter1.writeTo(destination); |
- adapter2.writeTo(destination + adapter1.length()); |
- } |
+ void writeTo(LChar* destination); |
- void writeTo(UChar* destination) |
- { |
- StringTypeAdapter<StringType1> adapter1(m_string1); |
- StringTypeAdapter<StringType2> adapter2(m_string2); |
- adapter1.writeTo(destination); |
- adapter2.writeTo(destination + adapter1.length()); |
- } |
+ void writeTo(UChar* destination); |
- unsigned length() |
- { |
- StringTypeAdapter<StringType1> adapter1(m_string1); |
- StringTypeAdapter<StringType2> adapter2(m_string2); |
- return adapter1.length() + adapter2.length(); |
- } |
+ unsigned length(); |
private: |
StringType1 m_string1; |
@@ -80,6 +49,60 @@ private: |
}; |
template<typename StringType1, typename StringType2> |
+StringAppend<StringType1, StringType2>::StringAppend(StringType1 string1, StringType2 string2) |
+ : m_string1(string1) |
+ , m_string2(string2) |
+{ |
+} |
+ |
+template<typename StringType1, typename StringType2> |
+StringAppend<StringType1, StringType2>::operator String() const |
+{ |
+ return String(makeString(m_string1, m_string2)); |
+} |
+ |
+template<typename StringType1, typename StringType2> |
+StringAppend<StringType1, StringType2>::operator AtomicString() const |
+{ |
+ return AtomicString(makeString(m_string1, m_string2)); |
+} |
+ |
+template<typename StringType1, typename StringType2> |
+bool StringAppend<StringType1, StringType2>::is8Bit() |
+{ |
+ StringTypeAdapter<StringType1> adapter1(m_string1); |
+ StringTypeAdapter<StringType2> adapter2(m_string2); |
+ return adapter1.is8Bit() && adapter2.is8Bit(); |
+} |
+ |
+template<typename StringType1, typename StringType2> |
+void StringAppend<StringType1, StringType2>::writeTo(LChar* destination) |
+{ |
+ ASSERT(is8Bit()); |
+ StringTypeAdapter<StringType1> adapter1(m_string1); |
+ StringTypeAdapter<StringType2> adapter2(m_string2); |
+ adapter1.writeTo(destination); |
+ adapter2.writeTo(destination + adapter1.length()); |
+} |
+ |
+template<typename StringType1, typename StringType2> |
+void StringAppend<StringType1, StringType2>::writeTo(UChar* destination) |
+{ |
+ StringTypeAdapter<StringType1> adapter1(m_string1); |
+ StringTypeAdapter<StringType2> adapter2(m_string2); |
+ adapter1.writeTo(destination); |
+ adapter2.writeTo(destination + adapter1.length()); |
+} |
+ |
+template<typename StringType1, typename StringType2> |
+unsigned StringAppend<StringType1, StringType2>::length() |
+{ |
+ StringTypeAdapter<StringType1> adapter1(m_string1); |
+ StringTypeAdapter<StringType2> adapter2(m_string2); |
+ return adapter1.length() + adapter2.length(); |
+} |
+ |
+template<typename StringType1, typename StringType2> |
class StringTypeAdapter<StringAppend<StringType1, StringType2> > { |
public: |
StringTypeAdapter<StringAppend<StringType1, StringType2> >(StringAppend<StringType1, StringType2>& buffer) |