diff options
Diffstat (limited to 'Source/JavaScriptCore/wtf/text/StringConcatenate.h')
-rw-r--r-- | Source/JavaScriptCore/wtf/text/StringConcatenate.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/text/StringConcatenate.h b/Source/JavaScriptCore/wtf/text/StringConcatenate.h index 92a2d06..7fa7d2c 100644 --- a/Source/JavaScriptCore/wtf/text/StringConcatenate.h +++ b/Source/JavaScriptCore/wtf/text/StringConcatenate.h @@ -89,6 +89,34 @@ private: }; template<> +class StringTypeAdapter<const UChar*> { +public: + StringTypeAdapter<const UChar*>(const UChar* buffer) + : m_buffer(buffer) + { + size_t len = 0; + while (m_buffer[len] != UChar(0)) + len++; + + if (len > std::numeric_limits<unsigned>::max()) + CRASH(); + + m_length = len; + } + + unsigned length() { return m_length; } + + void writeTo(UChar* destination) + { + memcpy(destination, m_buffer, static_cast<size_t>(m_length) * sizeof(UChar)); + } + +private: + const UChar* m_buffer; + unsigned m_length; +}; + +template<> class StringTypeAdapter<const char*> { public: StringTypeAdapter<const char*>(const char* buffer) |