aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/include/Poco/UTFString.h
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:44:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:49 +0300
commit718c552901d703c502ccbefdfc3c9028d608b947 (patch)
tree46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/UTFString.h
parente9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff)
downloadydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/UTFString.h')
-rw-r--r--contrib/libs/poco/Foundation/include/Poco/UTFString.h610
1 files changed, 305 insertions, 305 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/UTFString.h b/contrib/libs/poco/Foundation/include/Poco/UTFString.h
index 7364583e79..8bf0758ebc 100644
--- a/contrib/libs/poco/Foundation/include/Poco/UTFString.h
+++ b/contrib/libs/poco/Foundation/include/Poco/UTFString.h
@@ -1,305 +1,305 @@
-//
-// UTFString.h
-//
-// Library: Foundation
-// Package: Text
-// Module: UTFString
-//
-// Definitions of strings for UTF encodings.
-//
-// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Foundation_UTFString_INCLUDED
-#define Foundation_UTFString_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/Types.h"
-#include <string>
-
-
-namespace Poco {
-
-
-struct UTF16CharTraits
-{
- typedef std::fpos<std::mbstate_t> u16streampos;
- typedef UInt16 char_type;
- typedef int int_type;
- typedef std::streamoff off_type;
- typedef u16streampos pos_type;
- typedef std::mbstate_t state_type;
-
- static void assign(char_type& c1, const char_type& c2)
- {
- c1 = c2;
- }
-
- static bool eq(char_type c1, char_type c2)
- {
- return c1 == c2;
- }
-
- static bool lt(char_type c1, char_type c2)
- {
- return c1 < c2;
- }
-
- static int compare(const char_type* s1, const char_type* s2, std::size_t n)
- {
- for (; n; --n, ++s1, ++s2)
- {
- if (lt(*s1, *s2))
- return -1;
- if (lt(*s2, *s1))
- return 1;
- }
- return 0;
- }
-
- static std::size_t length(const char_type* s)
- {
- std::size_t len = 0;
- for (; !eq(*s, char_type(0)); ++s)
- ++len;
- return len;
- }
-
- static const char_type* find(const char_type* s, std::size_t n, const char_type& a)
- {
- for (; n; --n)
- {
- if (eq(*s, a))
- return s;
- ++s;
- }
- return 0;
- }
-
- static char_type* move(char_type* s1, const char_type* s2, std::size_t n)
- {
- char_type* r = s1;
- if (s1 < s2)
- {
- for (; n; --n, ++s1, ++s2)
- assign(*s1, *s2);
- }
- else if (s2 < s1)
- {
- s1 += n;
- s2 += n;
- for (; n; --n)
- assign(*--s1, *--s2);
- }
- return r;
- }
-
- static char_type* copy(char_type* s1, const char_type* s2, std::size_t n)
- {
- poco_assert(s2 < s1 || s2 >= s1 + n);
- char_type* r = s1;
- for (; n; --n, ++s1, ++s2)
- assign(*s1, *s2);
- return r;
- }
-
- static char_type* assign(char_type* s, std::size_t n, char_type a)
- {
- char_type* r = s;
- for (; n; --n, ++s)
- assign(*s, a);
- return r;
- }
-
- static int_type not_eof(int_type c)
- {
- return eq_int_type(c, eof()) ? ~eof() : c;
- }
-
- static char_type to_char_type(int_type c)
- {
- return char_type(c);
- }
-
- static int_type to_int_type(char_type c)
- {
- return int_type(c);
- }
-
- static bool eq_int_type(int_type c1, int_type c2)
- {
- return c1 == c2;
- }
-
- static int_type eof()
- {
- return int_type(0xDFFF);
- }
-};
-
-
-struct UTF32CharTraits
-{
- typedef std::fpos<std::mbstate_t> u32streampos;
- typedef UInt32 char_type;
- typedef int int_type;
- typedef std::streamoff off_type;
- typedef u32streampos pos_type;
- typedef std::mbstate_t state_type;
-
- static void assign(char_type& c1, const char_type& c2)
- {
- c1 = c2;
- }
-
- static bool eq(char_type c1, char_type c2)
- {
- return c1 == c2;
- }
-
- static bool lt(char_type c1, char_type c2)
- {
- return c1 < c2;
- }
-
- static int compare(const char_type* s1, const char_type* s2, std::size_t n)
- {
- for (; n; --n, ++s1, ++s2)
- {
- if (lt(*s1, *s2))
- return -1;
- if (lt(*s2, *s1))
- return 1;
- }
- return 0;
- }
-
- static std::size_t length(const char_type* s)
- {
- std::size_t len = 0;
- for (; !eq(*s, char_type(0)); ++s)
- ++len;
- return len;
- }
-
- static const char_type* find(const char_type* s, std::size_t n, const char_type& a)
- {
- for (; n; --n)
- {
- if (eq(*s, a))
- return s;
- ++s;
- }
- return 0;
- }
-
- static char_type* move(char_type* s1, const char_type* s2, std::size_t n)
- {
- char_type* r = s1;
- if (s1 < s2)
- {
- for (; n; --n, ++s1, ++s2)
- assign(*s1, *s2);
- }
- else if (s2 < s1)
- {
- s1 += n;
- s2 += n;
- for (; n; --n)
- assign(*--s1, *--s2);
- }
- return r;
- }
-
- static char_type* copy(char_type* s1, const char_type* s2, std::size_t n)
- {
- poco_assert(s2 < s1 || s2 >= s1 + n);
- char_type* r = s1;
- for (; n; --n, ++s1, ++s2)
- assign(*s1, *s2);
- return r;
- }
-
- static char_type* assign(char_type* s, std::size_t n, char_type a)
- {
- char_type* r = s;
- for (; n; --n, ++s)
- assign(*s, a);
- return r;
- }
-
- static int_type not_eof(int_type c)
- {
- return eq_int_type(c, eof()) ? ~eof() : c;
- }
-
- static char_type to_char_type(int_type c)
- {
- return char_type(c);
- }
-
- static int_type to_int_type(char_type c)
- {
- return int_type(c);
- }
-
- static bool eq_int_type(int_type c1, int_type c2)
- {
- return c1 == c2;
- }
-
- static int_type eof()
- {
- return int_type(0xDFFF);
- }
-};
-
-
-//#if defined(POCO_ENABLE_CPP11) //TODO
- // typedef char16_t UTF16Char;
- // typedef std::u16string UTF16String;
- // typedef char32_t UTF32Char;
- // typedef std::u32string UTF32String;
-//#else
- #ifdef POCO_NO_WSTRING
- typedef Poco::UInt16 UTF16Char;
- typedef std::basic_string<UTF16Char, UTF16CharTraits> UTF16String;
- typedef UInt32 UTF32Char;
- typedef std::basic_string<UTF32Char, UTF32CharTraits> UTF32String;
- #else // POCO_NO_WSTRING
- #if defined(POCO_OS_FAMILY_WINDOWS)
- typedef wchar_t UTF16Char;
- typedef std::wstring UTF16String;
- typedef UInt32 UTF32Char;
- typedef std::basic_string<UTF32Char, UTF32CharTraits> UTF32String;
- #elif defined(__SIZEOF_WCHAR_T__) //gcc
- #if (__SIZEOF_WCHAR_T__ == 2)
- typedef wchar_t UTF16Char;
- typedef std::wstring UTF16String;
- typedef UInt32 UTF32Char;
- typedef std::basic_string<UTF32Char, UTF32CharTraits> UTF32String;
- #elif (__SIZEOF_WCHAR_T__ == 4)
- typedef Poco::UInt16 UTF16Char;
- typedef std::basic_string<UTF16Char, UTF16CharTraits> UTF16String;
- typedef wchar_t UTF32Char;
- typedef std::wstring UTF32String;
- #endif
- #else // default to 32-bit wchar_t
- typedef Poco::UInt16 UTF16Char;
- typedef std::basic_string<UTF16Char, UTF16CharTraits> UTF16String;
- typedef wchar_t UTF32Char;
- typedef std::wstring UTF32String;
- #endif //POCO_OS_FAMILY_WINDOWS
- #endif //POCO_NO_WSTRING
-//#endif // POCO_ENABLE_CPP11
-
-
-} // namespace Poco
-
-
-#endif // Foundation_UTFString_INCLUDED
+//
+// UTFString.h
+//
+// Library: Foundation
+// Package: Text
+// Module: UTFString
+//
+// Definitions of strings for UTF encodings.
+//
+// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Foundation_UTFString_INCLUDED
+#define Foundation_UTFString_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/Types.h"
+#include <string>
+
+
+namespace Poco {
+
+
+struct UTF16CharTraits
+{
+ typedef std::fpos<std::mbstate_t> u16streampos;
+ typedef UInt16 char_type;
+ typedef int int_type;
+ typedef std::streamoff off_type;
+ typedef u16streampos pos_type;
+ typedef std::mbstate_t state_type;
+
+ static void assign(char_type& c1, const char_type& c2)
+ {
+ c1 = c2;
+ }
+
+ static bool eq(char_type c1, char_type c2)
+ {
+ return c1 == c2;
+ }
+
+ static bool lt(char_type c1, char_type c2)
+ {
+ return c1 < c2;
+ }
+
+ static int compare(const char_type* s1, const char_type* s2, std::size_t n)
+ {
+ for (; n; --n, ++s1, ++s2)
+ {
+ if (lt(*s1, *s2))
+ return -1;
+ if (lt(*s2, *s1))
+ return 1;
+ }
+ return 0;
+ }
+
+ static std::size_t length(const char_type* s)
+ {
+ std::size_t len = 0;
+ for (; !eq(*s, char_type(0)); ++s)
+ ++len;
+ return len;
+ }
+
+ static const char_type* find(const char_type* s, std::size_t n, const char_type& a)
+ {
+ for (; n; --n)
+ {
+ if (eq(*s, a))
+ return s;
+ ++s;
+ }
+ return 0;
+ }
+
+ static char_type* move(char_type* s1, const char_type* s2, std::size_t n)
+ {
+ char_type* r = s1;
+ if (s1 < s2)
+ {
+ for (; n; --n, ++s1, ++s2)
+ assign(*s1, *s2);
+ }
+ else if (s2 < s1)
+ {
+ s1 += n;
+ s2 += n;
+ for (; n; --n)
+ assign(*--s1, *--s2);
+ }
+ return r;
+ }
+
+ static char_type* copy(char_type* s1, const char_type* s2, std::size_t n)
+ {
+ poco_assert(s2 < s1 || s2 >= s1 + n);
+ char_type* r = s1;
+ for (; n; --n, ++s1, ++s2)
+ assign(*s1, *s2);
+ return r;
+ }
+
+ static char_type* assign(char_type* s, std::size_t n, char_type a)
+ {
+ char_type* r = s;
+ for (; n; --n, ++s)
+ assign(*s, a);
+ return r;
+ }
+
+ static int_type not_eof(int_type c)
+ {
+ return eq_int_type(c, eof()) ? ~eof() : c;
+ }
+
+ static char_type to_char_type(int_type c)
+ {
+ return char_type(c);
+ }
+
+ static int_type to_int_type(char_type c)
+ {
+ return int_type(c);
+ }
+
+ static bool eq_int_type(int_type c1, int_type c2)
+ {
+ return c1 == c2;
+ }
+
+ static int_type eof()
+ {
+ return int_type(0xDFFF);
+ }
+};
+
+
+struct UTF32CharTraits
+{
+ typedef std::fpos<std::mbstate_t> u32streampos;
+ typedef UInt32 char_type;
+ typedef int int_type;
+ typedef std::streamoff off_type;
+ typedef u32streampos pos_type;
+ typedef std::mbstate_t state_type;
+
+ static void assign(char_type& c1, const char_type& c2)
+ {
+ c1 = c2;
+ }
+
+ static bool eq(char_type c1, char_type c2)
+ {
+ return c1 == c2;
+ }
+
+ static bool lt(char_type c1, char_type c2)
+ {
+ return c1 < c2;
+ }
+
+ static int compare(const char_type* s1, const char_type* s2, std::size_t n)
+ {
+ for (; n; --n, ++s1, ++s2)
+ {
+ if (lt(*s1, *s2))
+ return -1;
+ if (lt(*s2, *s1))
+ return 1;
+ }
+ return 0;
+ }
+
+ static std::size_t length(const char_type* s)
+ {
+ std::size_t len = 0;
+ for (; !eq(*s, char_type(0)); ++s)
+ ++len;
+ return len;
+ }
+
+ static const char_type* find(const char_type* s, std::size_t n, const char_type& a)
+ {
+ for (; n; --n)
+ {
+ if (eq(*s, a))
+ return s;
+ ++s;
+ }
+ return 0;
+ }
+
+ static char_type* move(char_type* s1, const char_type* s2, std::size_t n)
+ {
+ char_type* r = s1;
+ if (s1 < s2)
+ {
+ for (; n; --n, ++s1, ++s2)
+ assign(*s1, *s2);
+ }
+ else if (s2 < s1)
+ {
+ s1 += n;
+ s2 += n;
+ for (; n; --n)
+ assign(*--s1, *--s2);
+ }
+ return r;
+ }
+
+ static char_type* copy(char_type* s1, const char_type* s2, std::size_t n)
+ {
+ poco_assert(s2 < s1 || s2 >= s1 + n);
+ char_type* r = s1;
+ for (; n; --n, ++s1, ++s2)
+ assign(*s1, *s2);
+ return r;
+ }
+
+ static char_type* assign(char_type* s, std::size_t n, char_type a)
+ {
+ char_type* r = s;
+ for (; n; --n, ++s)
+ assign(*s, a);
+ return r;
+ }
+
+ static int_type not_eof(int_type c)
+ {
+ return eq_int_type(c, eof()) ? ~eof() : c;
+ }
+
+ static char_type to_char_type(int_type c)
+ {
+ return char_type(c);
+ }
+
+ static int_type to_int_type(char_type c)
+ {
+ return int_type(c);
+ }
+
+ static bool eq_int_type(int_type c1, int_type c2)
+ {
+ return c1 == c2;
+ }
+
+ static int_type eof()
+ {
+ return int_type(0xDFFF);
+ }
+};
+
+
+//#if defined(POCO_ENABLE_CPP11) //TODO
+ // typedef char16_t UTF16Char;
+ // typedef std::u16string UTF16String;
+ // typedef char32_t UTF32Char;
+ // typedef std::u32string UTF32String;
+//#else
+ #ifdef POCO_NO_WSTRING
+ typedef Poco::UInt16 UTF16Char;
+ typedef std::basic_string<UTF16Char, UTF16CharTraits> UTF16String;
+ typedef UInt32 UTF32Char;
+ typedef std::basic_string<UTF32Char, UTF32CharTraits> UTF32String;
+ #else // POCO_NO_WSTRING
+ #if defined(POCO_OS_FAMILY_WINDOWS)
+ typedef wchar_t UTF16Char;
+ typedef std::wstring UTF16String;
+ typedef UInt32 UTF32Char;
+ typedef std::basic_string<UTF32Char, UTF32CharTraits> UTF32String;
+ #elif defined(__SIZEOF_WCHAR_T__) //gcc
+ #if (__SIZEOF_WCHAR_T__ == 2)
+ typedef wchar_t UTF16Char;
+ typedef std::wstring UTF16String;
+ typedef UInt32 UTF32Char;
+ typedef std::basic_string<UTF32Char, UTF32CharTraits> UTF32String;
+ #elif (__SIZEOF_WCHAR_T__ == 4)
+ typedef Poco::UInt16 UTF16Char;
+ typedef std::basic_string<UTF16Char, UTF16CharTraits> UTF16String;
+ typedef wchar_t UTF32Char;
+ typedef std::wstring UTF32String;
+ #endif
+ #else // default to 32-bit wchar_t
+ typedef Poco::UInt16 UTF16Char;
+ typedef std::basic_string<UTF16Char, UTF16CharTraits> UTF16String;
+ typedef wchar_t UTF32Char;
+ typedef std::wstring UTF32String;
+ #endif //POCO_OS_FAMILY_WINDOWS
+ #endif //POCO_NO_WSTRING
+//#endif // POCO_ENABLE_CPP11
+
+
+} // namespace Poco
+
+
+#endif // Foundation_UTFString_INCLUDED