aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/string_utils
diff options
context:
space:
mode:
authorrisenberg <risenberg@yandex-team.ru>2022-02-10 16:49:48 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:49:48 +0300
commit99ac40630808727955ac0448822228528f1ea92d (patch)
tree5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/string_utils
parentec551e975caf33bd88e2803b55464cad608e2441 (diff)
downloadydb-99ac40630808727955ac0448822228528f1ea92d.tar.gz
Restoring authorship annotation for <risenberg@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/string_utils')
-rw-r--r--library/cpp/string_utils/parse_size/parse_size.cpp46
-rw-r--r--library/cpp/string_utils/parse_size/parse_size.h16
-rw-r--r--library/cpp/string_utils/parse_size/parse_size_ut.cpp38
3 files changed, 50 insertions, 50 deletions
diff --git a/library/cpp/string_utils/parse_size/parse_size.cpp b/library/cpp/string_utils/parse_size/parse_size.cpp
index a2ed797b36..39188d560b 100644
--- a/library/cpp/string_utils/parse_size/parse_size.cpp
+++ b/library/cpp/string_utils/parse_size/parse_size.cpp
@@ -3,36 +3,36 @@
#include <util/generic/yexception.h>
#include <util/generic/ylimits.h>
#include <util/string/cast.h>
-#include <util/stream/output.h>
+#include <util/stream/output.h>
-namespace {
+namespace {
enum ESuffixShifts {
ESS_KILO_BYTES = 10,
ESS_MEGA_BYTES = 20,
ESS_GIGA_BYTES = 30,
ESS_TERA_BYTES = 40,
};
-
+
bool TryShiftValue(ui64& value, ui64 shift) {
if (value > (Max<ui64>() >> shift)) {
return false;
}
-
+
value <<= shift;
return true;
- }
-
+ }
+
ui64 ShiftValue(ui64 value, ui64 shift) {
if (!TryShiftValue(value, shift)) {
ythrow yexception() << "value overflow '" << value << " << " << shift << "'";
} else {
return value;
}
- }
-
-}
-
-namespace NSize {
+ }
+
+}
+
+namespace NSize {
ui64 ParseSize(TStringBuf str) {
if (! str.size())
ythrow yexception() << "Wrong size " << str;
@@ -56,7 +56,7 @@ namespace NSize {
default:
ythrow yexception() << "Unknown suffix " << str;
}
-
+
ui64 value = FromString<ui64>(str.substr(0, str.size() - 1));
if (!TryShiftValue(value, shift)) {
@@ -77,19 +77,19 @@ namespace NSize {
TSize FromGigaBytes(ui64 value) {
return TSize(ShiftValue(value, ESS_GIGA_BYTES));
}
-
+
TSize FromTeraBytes(ui64 value) {
return TSize(ShiftValue(value, ESS_TERA_BYTES));
}
-
-}
-
+
+}
+
+template <>
+NSize::TSize FromStringImpl<NSize::TSize>(const char* data, size_t len) {
+ return NSize::TSize(NSize::ParseSize(TStringBuf(data, len)));
+}
+
template <>
-NSize::TSize FromStringImpl<NSize::TSize>(const char* data, size_t len) {
- return NSize::TSize(NSize::ParseSize(TStringBuf(data, len)));
-}
-
-template <>
void Out<NSize::TSize>(IOutputStream& os, const NSize::TSize& size) {
- os << size.GetValue();
-}
+ os << size.GetValue();
+}
diff --git a/library/cpp/string_utils/parse_size/parse_size.h b/library/cpp/string_utils/parse_size/parse_size.h
index 61db957b12..ad235ef02f 100644
--- a/library/cpp/string_utils/parse_size/parse_size.h
+++ b/library/cpp/string_utils/parse_size/parse_size.h
@@ -2,9 +2,9 @@
#include <util/generic/strbuf.h>
-namespace NSize {
+namespace NSize {
ui64 ParseSize(TStringBuf size);
-
+
// Convenient disk size representation with string parsing and integer comparison
class TSize {
public:
@@ -12,22 +12,22 @@ namespace NSize {
: Value(value)
{
}
-
+
ui64 GetValue() const {
return Value;
}
-
+
operator ui64() const {
return Value;
}
-
+
private:
ui64 Value;
};
-
+
TSize FromKiloBytes(ui64 value);
TSize FromMegaBytes(ui64 value);
TSize FromGigaBytes(ui64 value);
TSize FromTeraBytes(ui64 value);
-
-}
+
+}
diff --git a/library/cpp/string_utils/parse_size/parse_size_ut.cpp b/library/cpp/string_utils/parse_size/parse_size_ut.cpp
index 7aae60f9d5..8fff4f56b2 100644
--- a/library/cpp/string_utils/parse_size/parse_size_ut.cpp
+++ b/library/cpp/string_utils/parse_size/parse_size_ut.cpp
@@ -2,8 +2,8 @@
#include <library/cpp/testing/unittest/registar.h>
-using namespace NSize;
-
+using namespace NSize;
+
class TParseSizeTest: public TTestBase {
UNIT_TEST_SUITE(TParseSizeTest);
@@ -12,9 +12,9 @@ class TParseSizeTest: public TTestBase {
UNIT_TEST(TestMegaBytes);
UNIT_TEST(TestGigaBytes);
UNIT_TEST(TestTeraBytes);
- UNIT_TEST(TestOverflow);
- UNIT_TEST(TestStaticCreators);
- UNIT_TEST(TestToString);
+ UNIT_TEST(TestOverflow);
+ UNIT_TEST(TestStaticCreators);
+ UNIT_TEST(TestToString);
UNIT_TEST_SUITE_END();
@@ -43,21 +43,21 @@ private:
UNIT_ASSERT(ParseSize("10t") == 1024ul * 1024ul * 1024ul * 1024ul * 10ul);
}
- void TestStaticCreators() {
- UNIT_ASSERT_EQUAL(FromKiloBytes(10), 1024ul * 10ul);
- UNIT_ASSERT_EQUAL(FromMegaBytes(10), 1024ul * 1024ul * 10ul);
- UNIT_ASSERT_EQUAL(FromGigaBytes(10), 1024ul * 1024ul * 1024ul * 10ul);
- UNIT_ASSERT_EQUAL(FromTeraBytes(10), 1024ul * 1024ul * 1024ul * 1024ul * 10ul);
- }
-
- void TestOverflow() {
- UNIT_ASSERT_EXCEPTION(ParseSize("20000000000G"), yexception);
- UNIT_ASSERT_EXCEPTION(FromGigaBytes(20000000000ull), yexception);
- }
-
- void TestToString() {
+ void TestStaticCreators() {
+ UNIT_ASSERT_EQUAL(FromKiloBytes(10), 1024ul * 10ul);
+ UNIT_ASSERT_EQUAL(FromMegaBytes(10), 1024ul * 1024ul * 10ul);
+ UNIT_ASSERT_EQUAL(FromGigaBytes(10), 1024ul * 1024ul * 1024ul * 10ul);
+ UNIT_ASSERT_EQUAL(FromTeraBytes(10), 1024ul * 1024ul * 1024ul * 1024ul * 10ul);
+ }
+
+ void TestOverflow() {
+ UNIT_ASSERT_EXCEPTION(ParseSize("20000000000G"), yexception);
+ UNIT_ASSERT_EXCEPTION(FromGigaBytes(20000000000ull), yexception);
+ }
+
+ void TestToString() {
UNIT_ASSERT_VALUES_EQUAL(ToString(FromKiloBytes(1)), TString("1024"));
- }
+ }
};
UNIT_TEST_SUITE_REGISTRATION(TParseSizeTest);