aboutsummaryrefslogtreecommitdiffstats
path: root/util/string
diff options
context:
space:
mode:
authornga <nga@yandex-team.ru>2022-02-10 16:48:09 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:48:09 +0300
commitc2a1af049e9deca890e9923abe64fe6c59060348 (patch)
treeb222e5ac2e2e98872661c51ccceee5da0d291e13 /util/string
parent1f553f46fb4f3c5eec631352cdd900a0709016af (diff)
downloadydb-c2a1af049e9deca890e9923abe64fe6c59060348.tar.gz
Restoring authorship annotation for <nga@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/string')
-rw-r--r--util/string/escape.cpp48
-rw-r--r--util/string/escape.h12
-rw-r--r--util/string/escape_ut.cpp20
-rw-r--r--util/string/split.cpp30
-rw-r--r--util/string/split.h4
5 files changed, 57 insertions, 57 deletions
diff --git a/util/string/escape.cpp b/util/string/escape.cpp
index afec4780e7..cd09a7dbd0 100644
--- a/util/string/escape.cpp
+++ b/util/string/escape.cpp
@@ -1,10 +1,10 @@
#include "escape.h"
#include "cast.h"
-#include <util/system/defaults.h>
+#include <util/system/defaults.h>
#include <util/charset/utf8.h>
#include <util/charset/wide.h>
-
+
/// @todo: escape trigraphs (eg "??/" is "\")
/* REFEREBCES FOR ESCAPE SEQUENCE INTERPRETATION:
@@ -54,31 +54,31 @@ namespace {
template <typename TChar>
static inline char OctDigit(TChar value) {
Y_ASSERT(value < 8);
- return '0' + value;
+ return '0' + value;
}
-
+
template <typename TChar>
static inline bool IsPrintable(TChar c) {
return c >= 32 && c <= 126;
}
-
+
template <typename TChar>
static inline bool IsHexDigit(TChar c) {
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');
}
-
+
template <typename TChar>
static inline bool IsOctDigit(TChar c) {
return c >= '0' && c <= '7';
}
-
+
template <typename TChar>
struct TEscapeUtil;
-
+
template <>
struct TEscapeUtil<char> {
static const size_t ESCAPE_C_BUFFER_SIZE = 4;
-
+
template <typename TNextChar, typename TBufferChar>
static inline size_t EscapeC(unsigned char c, TNextChar next, TBufferChar r[ESCAPE_C_BUFFER_SIZE]) {
// (1) Printable characters go as-is, except backslash and double quote.
@@ -124,13 +124,13 @@ namespace {
r[3] = OctDigit((c & 0007) >> 0);
return 4;
}
- }
+ }
};
-
+
template <>
struct TEscapeUtil<wchar16> {
static const size_t ESCAPE_C_BUFFER_SIZE = 6;
-
+
template <typename TNextChar, typename TBufferChar>
static inline size_t EscapeC(wchar16 c, TNextChar next, TBufferChar r[ESCAPE_C_BUFFER_SIZE]) {
if (c < 0x100) {
@@ -144,26 +144,26 @@ namespace {
r[5] = HexDigit((c & 0x000F) >> 0);
return 6;
}
- }
+ }
};
}
-
-template <class TChar>
+
+template <class TChar>
TBasicString<TChar>& EscapeCImpl(const TChar* str, size_t len, TBasicString<TChar>& r) {
using TEscapeUtil = ::TEscapeUtil<TChar>;
-
+
TChar buffer[TEscapeUtil::ESCAPE_C_BUFFER_SIZE];
-
+
size_t i, j;
for (i = 0, j = 0; i < len; ++i) {
size_t rlen = TEscapeUtil::EscapeC(str[i], (i + 1 < len ? str[i + 1] : 0), buffer);
-
+
if (rlen > 1) {
r.append(str + j, i - j);
j = i + 1;
r.append(buffer, rlen);
}
- }
+ }
if (j > 0) {
r.append(str + j, len - j);
@@ -172,8 +172,8 @@ TBasicString<TChar>& EscapeCImpl(const TChar* str, size_t len, TBasicString<TCha
}
return r;
-}
-
+}
+
template TString& EscapeCImpl<TString::TChar>(const TString::TChar* str, size_t len, TString& r);
template TUtf16String& EscapeCImpl<TUtf16String::TChar>(const TUtf16String::TChar* str, size_t len, TUtf16String& r);
@@ -410,11 +410,11 @@ TUtf16String& EscapeC(const TWtringBuf str, TUtf16String& w) {
TString EscapeC(const TString& str) {
return EscapeC(str.data(), str.size());
-}
-
+}
+
TUtf16String EscapeC(const TUtf16String& str) {
return EscapeC(str.data(), str.size());
-}
+}
TString& UnescapeC(const TStringBuf str, TString& s) {
return UnescapeC(str.data(), str.size(), s);
diff --git a/util/string/escape.h b/util/string/escape.h
index ec72f71573..b01be65b0e 100644
--- a/util/string/escape.h
+++ b/util/string/escape.h
@@ -1,18 +1,18 @@
#pragma once
-
+
#include <util/generic/string.h>
#include <util/generic/strbuf.h>
-
-template <class TChar>
+
+template <class TChar>
TBasicString<TChar>& EscapeCImpl(const TChar* str, size_t len, TBasicString<TChar>&);
-
+
template <class TChar>
TBasicString<TChar>& UnescapeCImpl(const TChar* str, size_t len, TBasicString<TChar>&);
template <class TChar>
TChar* UnescapeC(const TChar* str, size_t len, TChar* buf);
-template <typename TChar>
+template <typename TChar>
static inline TBasicString<TChar>& EscapeC(const TChar* str, size_t len, TBasicString<TChar>& s) {
return EscapeCImpl(str, len, s);
}
@@ -23,7 +23,7 @@ static inline TBasicString<TChar> EscapeC(const TChar* str, size_t len) {
return EscapeC(str, len, s);
}
-template <typename TChar>
+template <typename TChar>
static inline TBasicString<TChar> EscapeC(const TBasicStringBuf<TChar>& str) {
return EscapeC(str.data(), str.size());
}
diff --git a/util/string/escape_ut.cpp b/util/string/escape_ut.cpp
index 51836a64ed..cd38ecffd3 100644
--- a/util/string/escape_ut.cpp
+++ b/util/string/escape_ut.cpp
@@ -1,10 +1,10 @@
#include "escape.h"
#include <library/cpp/testing/unittest/registar.h>
-
+
#include <util/generic/string.h>
-#include <util/charset/wide.h>
-
+#include <util/charset/wide.h>
+
using namespace std::string_view_literals;
namespace {
@@ -24,7 +24,7 @@ static const TExample CommonTestData[] = {
// Should be valid UTF-8.
{"http://ya.ru/", "http://ya.ru/"},
{"http://ya.ru/\\x17\\n", "http://ya.ru/\x17\n"},
-
+
{"http://ya.ru/\\0", "http://ya.ru/\0"sv},
{"http://ya.ru/\\0\\0", "http://ya.ru/\0\0"sv},
{"http://ya.ru/\\0\\0000", "http://ya.ru/\0\0"
@@ -60,9 +60,9 @@ Y_UNIT_TEST_SUITE(TEscapeCTest) {
UNIT_ASSERT_VALUES_EQUAL("http://ya.ru/\\x17\\n\\xAB", EscapeC(TString("http://ya.ru/\x17\n\xab")));
UNIT_ASSERT_VALUES_EQUAL("http://ya.ru/\x17\n\xab", UnescapeC(TString("http://ya.ru/\\x17\\n\\xAB")));
- UNIT_ASSERT_VALUES_EQUAL("h", EscapeC('h'));
+ UNIT_ASSERT_VALUES_EQUAL("h", EscapeC('h'));
UNIT_ASSERT_VALUES_EQUAL("h", UnescapeC(TString("h")));
- UNIT_ASSERT_VALUES_EQUAL("\\xFF", EscapeC('\xFF'));
+ UNIT_ASSERT_VALUES_EQUAL("\\xFF", EscapeC('\xFF'));
UNIT_ASSERT_VALUES_EQUAL("\xFF", UnescapeC(TString("\\xFF")));
UNIT_ASSERT_VALUES_EQUAL("\\377f", EscapeC(TString("\xff"
@@ -77,8 +77,8 @@ Y_UNIT_TEST_SUITE(TEscapeCTest) {
UnescapeC(TString("\\xFFg")));
UNIT_ASSERT_VALUES_EQUAL("\xEA\x9A\x96", UnescapeC(TString("\\uA696")));
UNIT_ASSERT_VALUES_EQUAL("Странный компроматтест", UnescapeC(TString("\\u0421\\u0442\\u0440\\u0430\\u043d\\u043d\\u044b\\u0439 \\u043a\\u043e\\u043c\\u043f\\u0440\\u043e\\u043c\\u0430\\u0442тест")));
- }
-
+ }
+
Y_UNIT_TEST(TestWtrokaEscapeC) {
for (const auto& e : CommonTestData) {
TUtf16String expected(UTF8ToWide(e.Expected));
@@ -93,7 +93,7 @@ Y_UNIT_TEST_SUITE(TEscapeCTest) {
UNIT_ASSERT_VALUES_EQUAL(u"http://ya.ru/\\x17\\n\\u1234", EscapeC(u"http://ya.ru/\x17\n\u1234"));
UNIT_ASSERT_VALUES_EQUAL(u"h", EscapeC(u'h'));
UNIT_ASSERT_VALUES_EQUAL(u"\\xFF", EscapeC(wchar16(255)));
- }
+ }
Y_UNIT_TEST(TestEscapeTrigraphs) {
UNIT_ASSERT_VALUES_EQUAL("?", EscapeC(TString("?")));
@@ -145,4 +145,4 @@ Y_UNIT_TEST_SUITE(TEscapeCTest) {
UNIT_ASSERT_VALUES_EQUAL(UnescapeC("\\U00000020"), " ");
UNIT_ASSERT_VALUES_EQUAL(UnescapeC("\\Uxxx"), "Uxxx");
}
-}
+}
diff --git a/util/string/split.cpp b/util/string/split.cpp
index 7438c07525..7d26857cc7 100644
--- a/util/string/split.cpp
+++ b/util/string/split.cpp
@@ -1,24 +1,24 @@
-#include "split.h"
-
+#include "split.h"
+
template <class TValue>
inline size_t Split(const char* ptr, const char* delim, TVector<TValue>& values) {
- values.erase(values.begin(), values.end());
- while (ptr && *ptr) {
- ptr += strspn(ptr, delim);
- if (ptr && *ptr) {
- size_t epos = strcspn(ptr, delim);
- assert(epos);
+ values.erase(values.begin(), values.end());
+ while (ptr && *ptr) {
+ ptr += strspn(ptr, delim);
+ if (ptr && *ptr) {
+ size_t epos = strcspn(ptr, delim);
+ assert(epos);
values.push_back(TValue(ptr, epos));
- ptr += epos;
- }
- }
- return values.size();
-}
-
+ ptr += epos;
+ }
+ }
+ return values.size();
+}
+
size_t Split(const char* ptr, const char* delim, TVector<TString>& values) {
return Split<TString>(ptr, delim, values);
}
size_t Split(const TString& in, const TString& delim, TVector<TString>& res) {
return Split(in.data(), delim.data(), res);
-}
+}
diff --git a/util/string/split.h b/util/string/split.h
index 166ee10660..bc46d9e64c 100644
--- a/util/string/split.h
+++ b/util/string/split.h
@@ -407,10 +407,10 @@ static inline void Split(char* buf, char ch, T* res) {
SplitString(buf, delim, pusher);
}
-/// Split string into res vector. Res vector is cleared before split.
+/// Split string into res vector. Res vector is cleared before split.
/// Old good slow split function.
/// Field delimter is any number of symbols specified in delim (no empty strings in res vector)
-/// @return number of elements created
+/// @return number of elements created
size_t Split(const char* in, const char* delim, TVector<TString>& res);
size_t Split(const TString& in, const TString& delim, TVector<TString>& res);