aboutsummaryrefslogtreecommitdiffstats
path: root/util/generic
diff options
context:
space:
mode:
authormarat-khalili <marat-khalili@yandex-team.ru>2022-02-10 16:51:52 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:51:52 +0300
commit4820b82de461ea3ac2dce7c2a77eeda965fffc9c (patch)
tree22e2f840a95c94ee48844701356e8a10d459b94f /util/generic
parentfcb328858da947c52819d89cea4a4357cc207ae4 (diff)
downloadydb-4820b82de461ea3ac2dce7c2a77eeda965fffc9c.tar.gz
Restoring authorship annotation for <marat-khalili@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'util/generic')
-rw-r--r--util/generic/benchmark/string/benchmarks.h368
-rw-r--r--util/generic/benchmark/string/std_string.cpp16
-rw-r--r--util/generic/benchmark/string/string.cpp16
-rw-r--r--util/generic/benchmark/string/ya.make22
-rw-r--r--util/generic/benchmark/ya.make2
-rw-r--r--util/generic/string.cpp2
-rw-r--r--util/generic/string.h2
-rw-r--r--util/generic/string_ut.cpp134
8 files changed, 281 insertions, 281 deletions
diff --git a/util/generic/benchmark/string/benchmarks.h b/util/generic/benchmark/string/benchmarks.h
index e347d7ff47..e064c9e6c3 100644
--- a/util/generic/benchmark/string/benchmarks.h
+++ b/util/generic/benchmark/string/benchmarks.h
@@ -1,188 +1,188 @@
#pragma once
-// Define BENCHMARK_PREFIX and BENCHMARKED_CLASS before including this file.
-
-#include <util/generic/xrange.h>
-
-#define Y_CPU_PREFIXED_BENCHMARK_HELPER(prefix, name, iface) Y_CPU_BENCHMARK(prefix##name, iface)
-#define Y_CPU_PREFIXED_BENCHMARK(prefix, name, iface) Y_CPU_PREFIXED_BENCHMARK_HELPER(prefix, name, iface)
-#define CONCATENATE3_HELPER(a, b, c) a##b##c
-#define CONCATENATE3(a, b, c) CONCATENATE3_HELPER(a, b, c)
-
-namespace {
- namespace CONCATENATE3(N, BENCHMARK_PREFIX, Benchmark) {
- using TBenchmarkedClass = BENCHMARKED_CLASS;
-
- const auto defaultString = TBenchmarkedClass();
- const auto emptyString = TBenchmarkedClass("");
+// Define BENCHMARK_PREFIX and BENCHMARKED_CLASS before including this file.
+
+#include <util/generic/xrange.h>
+
+#define Y_CPU_PREFIXED_BENCHMARK_HELPER(prefix, name, iface) Y_CPU_BENCHMARK(prefix##name, iface)
+#define Y_CPU_PREFIXED_BENCHMARK(prefix, name, iface) Y_CPU_PREFIXED_BENCHMARK_HELPER(prefix, name, iface)
+#define CONCATENATE3_HELPER(a, b, c) a##b##c
+#define CONCATENATE3(a, b, c) CONCATENATE3_HELPER(a, b, c)
+
+namespace {
+ namespace CONCATENATE3(N, BENCHMARK_PREFIX, Benchmark) {
+ using TBenchmarkedClass = BENCHMARKED_CLASS;
+
+ const auto defaultString = TBenchmarkedClass();
+ const auto emptyString = TBenchmarkedClass("");
const auto lengthOneString = TBenchmarkedClass("1");
const auto length1KString = TBenchmarkedClass(1000, '1');
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateDefault, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass();
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateFromEmptyLiteral, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass("");
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateFromLengthOneLiteral, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass("1");
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateLength1K, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass(1000, '1');
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyDefaultString, iface) {
- const auto& sourceString = defaultString;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass(sourceString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyEmptyString, iface) {
- const auto& sourceString = emptyString;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass(sourceString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyLengthOneString, iface) {
- const auto& sourceString = lengthOneString;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass(sourceString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyLength1KString, iface) {
- const auto& sourceString = length1KString;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto result = TBenchmarkedClass(sourceString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndUpdateLengthOneString, iface) {
- const auto& sourceString = lengthOneString;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString[0] = '0';
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendDefaultString, iface) {
- const auto& sourceString = defaultString;
- const TBenchmarkedClass::size_type insertPosition = sourceString.size();
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString.insert(insertPosition, 1, '0');
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendEmptyString, iface) {
- const auto& sourceString = emptyString;
- const TBenchmarkedClass::size_type insertPosition = sourceString.size();
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString.insert(insertPosition, 1, '0');
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendLengthOneString, iface) {
- const auto& sourceString = lengthOneString;
- const TBenchmarkedClass::size_type insertPosition = sourceString.size();
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString.insert(insertPosition, 1, '0');
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndPrependLengthOneString, iface) {
- const auto& sourceString = lengthOneString;
- const TBenchmarkedClass::size_type insertPosition = 0;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString.insert(insertPosition, 1, '0');
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndUpdateLength1KString, iface) {
- const auto& sourceString = length1KString;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString[0] = '0';
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendLength1KString, iface) {
- const auto& sourceString = length1KString;
- const TBenchmarkedClass::size_type insertPosition = sourceString.size();
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString.insert(insertPosition, 1, '0');
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
-
- Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndPrependLength1KString, iface) {
- const auto& sourceString = length1KString;
- const TBenchmarkedClass::size_type insertPosition = 0;
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- auto targetString = TBenchmarkedClass(sourceString);
- auto result = targetString.insert(insertPosition, 1, '0');
- Y_DO_NOT_OPTIMIZE_AWAY(targetString);
- Y_DO_NOT_OPTIMIZE_AWAY(result);
- }
- }
- }
-}
-
-#undef CONCATENATE3
-#undef CONCATENATE3_HELPER
-#undef Y_CPU_PREFIXED_BENCHMARK
-#undef Y_CPU_PREFIXED_BENCHMARK_HELPER
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateDefault, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass();
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateFromEmptyLiteral, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass("");
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateFromLengthOneLiteral, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass("1");
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CreateLength1K, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass(1000, '1');
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyDefaultString, iface) {
+ const auto& sourceString = defaultString;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass(sourceString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyEmptyString, iface) {
+ const auto& sourceString = emptyString;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass(sourceString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyLengthOneString, iface) {
+ const auto& sourceString = lengthOneString;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass(sourceString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyLength1KString, iface) {
+ const auto& sourceString = length1KString;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto result = TBenchmarkedClass(sourceString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndUpdateLengthOneString, iface) {
+ const auto& sourceString = lengthOneString;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString[0] = '0';
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendDefaultString, iface) {
+ const auto& sourceString = defaultString;
+ const TBenchmarkedClass::size_type insertPosition = sourceString.size();
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString.insert(insertPosition, 1, '0');
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendEmptyString, iface) {
+ const auto& sourceString = emptyString;
+ const TBenchmarkedClass::size_type insertPosition = sourceString.size();
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString.insert(insertPosition, 1, '0');
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendLengthOneString, iface) {
+ const auto& sourceString = lengthOneString;
+ const TBenchmarkedClass::size_type insertPosition = sourceString.size();
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString.insert(insertPosition, 1, '0');
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndPrependLengthOneString, iface) {
+ const auto& sourceString = lengthOneString;
+ const TBenchmarkedClass::size_type insertPosition = 0;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString.insert(insertPosition, 1, '0');
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndUpdateLength1KString, iface) {
+ const auto& sourceString = length1KString;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString[0] = '0';
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndAppendLength1KString, iface) {
+ const auto& sourceString = length1KString;
+ const TBenchmarkedClass::size_type insertPosition = sourceString.size();
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString.insert(insertPosition, 1, '0');
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+
+ Y_CPU_PREFIXED_BENCHMARK(BENCHMARK_PREFIX, CopyAndPrependLength1KString, iface) {
+ const auto& sourceString = length1KString;
+ const TBenchmarkedClass::size_type insertPosition = 0;
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ auto targetString = TBenchmarkedClass(sourceString);
+ auto result = targetString.insert(insertPosition, 1, '0');
+ Y_DO_NOT_OPTIMIZE_AWAY(targetString);
+ Y_DO_NOT_OPTIMIZE_AWAY(result);
+ }
+ }
+ }
+}
+
+#undef CONCATENATE3
+#undef CONCATENATE3_HELPER
+#undef Y_CPU_PREFIXED_BENCHMARK
+#undef Y_CPU_PREFIXED_BENCHMARK_HELPER
diff --git a/util/generic/benchmark/string/std_string.cpp b/util/generic/benchmark/string/std_string.cpp
index cb10b4dc0c..3bf1e066ed 100644
--- a/util/generic/benchmark/string/std_string.cpp
+++ b/util/generic/benchmark/string/std_string.cpp
@@ -1,8 +1,8 @@
-#include <library/cpp/testing/benchmark/bench.h>
-
-#include <string>
-
-#define BENCHMARK_PREFIX StdString
-#define BENCHMARKED_CLASS std::string
-
-#include "benchmarks.h"
+#include <library/cpp/testing/benchmark/bench.h>
+
+#include <string>
+
+#define BENCHMARK_PREFIX StdString
+#define BENCHMARKED_CLASS std::string
+
+#include "benchmarks.h"
diff --git a/util/generic/benchmark/string/string.cpp b/util/generic/benchmark/string/string.cpp
index c634c204d8..4523e5c0ec 100644
--- a/util/generic/benchmark/string/string.cpp
+++ b/util/generic/benchmark/string/string.cpp
@@ -1,8 +1,8 @@
-#include <library/cpp/testing/benchmark/bench.h>
-
-#include <util/generic/string.h>
-
-#define BENCHMARK_PREFIX TString
-#define BENCHMARKED_CLASS ::TString
-
-#include "benchmarks.h"
+#include <library/cpp/testing/benchmark/bench.h>
+
+#include <util/generic/string.h>
+
+#define BENCHMARK_PREFIX TString
+#define BENCHMARKED_CLASS ::TString
+
+#include "benchmarks.h"
diff --git a/util/generic/benchmark/string/ya.make b/util/generic/benchmark/string/ya.make
index c2956de6a1..8031a304b8 100644
--- a/util/generic/benchmark/string/ya.make
+++ b/util/generic/benchmark/string/ya.make
@@ -1,11 +1,11 @@
-Y_BENCHMARK()
-
-OWNER(g:util)
-SUBSCRIBER(g:util-subscribers)
-
-SRCS(
- string.cpp
- std_string.cpp
-)
-
-END()
+Y_BENCHMARK()
+
+OWNER(g:util)
+SUBSCRIBER(g:util-subscribers)
+
+SRCS(
+ string.cpp
+ std_string.cpp
+)
+
+END()
diff --git a/util/generic/benchmark/ya.make b/util/generic/benchmark/ya.make
index 635860a646..ca137dc4e7 100644
--- a/util/generic/benchmark/ya.make
+++ b/util/generic/benchmark/ya.make
@@ -12,7 +12,7 @@ RECURSE(
singleton
smart_pointers
sort
- string
+ string
vector_count_ctor
vector_count_ctor/metrics
cont_speed
diff --git a/util/generic/string.cpp b/util/generic/string.cpp
index 3c655f1f66..1de3f54416 100644
--- a/util/generic/string.cpp
+++ b/util/generic/string.cpp
@@ -1,7 +1,7 @@
#include "string.h"
#include <util/string/ascii.h>
-#include <util/system/sanitizers.h>
+#include <util/system/sanitizers.h>
#include <util/system/sys_alloc.h>
#include <util/charset/wide.h>
diff --git a/util/generic/string.h b/util/generic/string.h
index 8cd8aa6917..c48c875d47 100644
--- a/util/generic/string.h
+++ b/util/generic/string.h
@@ -127,7 +127,7 @@ public:
}
TBasicCharRef& operator=(TChar c) {
- Y_ASSERT(Pos_ < S_.size() || (Pos_ == S_.size() && !c));
+ Y_ASSERT(Pos_ < S_.size() || (Pos_ == S_.size() && !c));
S_.Detach()[Pos_] = c;
diff --git a/util/generic/string_ut.cpp b/util/generic/string_ut.cpp
index ac82e9091d..6d89e8285d 100644
--- a/util/generic/string_ut.cpp
+++ b/util/generic/string_ut.cpp
@@ -294,67 +294,67 @@ protected:
// End of block B
}
- void null_char_of_empty() {
- const TStringType s;
-
- UNIT_ASSERT(s[s.size()] == 0);
- }
-
+ void null_char_of_empty() {
+ const TStringType s;
+
+ UNIT_ASSERT(s[s.size()] == 0);
+ }
+
void null_char() {
// ISO/IEC 14882:1998(E), ISO/IEC 14882:2003(E), 21.3.4 ('... the const version')
const TStringType s(Data_._123456());
UNIT_ASSERT(s[s.size()] == 0);
- }
-
- // Allowed since C++17, see http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2475
- void null_char_assignment_to_subscript_of_empty() {
- TStringType s;
-
-#ifdef TSTRING_IS_STD_STRING
- using reference = volatile typename TStringType::value_type&;
-#else
- using reference = typename TStringType::reference;
+ }
+
+ // Allowed since C++17, see http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2475
+ void null_char_assignment_to_subscript_of_empty() {
+ TStringType s;
+
+#ifdef TSTRING_IS_STD_STRING
+ using reference = volatile typename TStringType::value_type&;
+#else
+ using reference = typename TStringType::reference;
#endif
- reference trailing_zero = s[s.size()];
- trailing_zero = 0;
- UNIT_ASSERT(trailing_zero == 0);
+ reference trailing_zero = s[s.size()];
+ trailing_zero = 0;
+ UNIT_ASSERT(trailing_zero == 0);
}
- // Allowed since C++17, see http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2475
- void null_char_assignment_to_subscript_of_nonempty() {
- TStringType s(Data_._123456());
-
-#ifdef TSTRING_IS_STD_STRING
- using reference = volatile typename TStringType::value_type&;
-#else
- using reference = typename TStringType::reference;
-#endif
- reference trailing_zero = s[s.size()];
- trailing_zero = 0;
- UNIT_ASSERT(trailing_zero == 0);
- }
-
-#ifndef TSTRING_IS_STD_STRING
- // Dereferencing string end() is not allowed by C++ standard as of C++20, avoid using in real code.
- void null_char_assignment_to_end_of_empty() {
- TStringType s;
-
- volatile auto& trailing_zero = *(s.begin() + s.size());
- trailing_zero = 0;
- UNIT_ASSERT(trailing_zero == 0);
- }
-
- // Dereferencing string end() is not allowed by C++ standard as of C++20, avoid using in real code.
- void null_char_assignment_to_end_of_nonempty() {
- TStringType s(Data_._123456());
-
- volatile auto& trailing_zero = *(s.begin() + s.size());
- trailing_zero = 0;
- UNIT_ASSERT(trailing_zero == 0);
- }
-#endif
-
+ // Allowed since C++17, see http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2475
+ void null_char_assignment_to_subscript_of_nonempty() {
+ TStringType s(Data_._123456());
+
+#ifdef TSTRING_IS_STD_STRING
+ using reference = volatile typename TStringType::value_type&;
+#else
+ using reference = typename TStringType::reference;
+#endif
+ reference trailing_zero = s[s.size()];
+ trailing_zero = 0;
+ UNIT_ASSERT(trailing_zero == 0);
+ }
+
+#ifndef TSTRING_IS_STD_STRING
+ // Dereferencing string end() is not allowed by C++ standard as of C++20, avoid using in real code.
+ void null_char_assignment_to_end_of_empty() {
+ TStringType s;
+
+ volatile auto& trailing_zero = *(s.begin() + s.size());
+ trailing_zero = 0;
+ UNIT_ASSERT(trailing_zero == 0);
+ }
+
+ // Dereferencing string end() is not allowed by C++ standard as of C++20, avoid using in real code.
+ void null_char_assignment_to_end_of_nonempty() {
+ TStringType s(Data_._123456());
+
+ volatile auto& trailing_zero = *(s.begin() + s.size());
+ trailing_zero = 0;
+ UNIT_ASSERT(trailing_zero == 0);
+ }
+#endif
+
void insert() {
TStringType strorg = Data_.This_is_test_string_for_string_calls();
TStringType str;
@@ -1114,14 +1114,14 @@ public:
UNIT_TEST(erase);
UNIT_TEST(data);
UNIT_TEST(c_str);
- UNIT_TEST(null_char_of_empty);
+ UNIT_TEST(null_char_of_empty);
UNIT_TEST(null_char);
- UNIT_TEST(null_char_assignment_to_subscript_of_empty);
- UNIT_TEST(null_char_assignment_to_subscript_of_nonempty);
-#ifndef TSTRING_IS_STD_STRING
- UNIT_TEST(null_char_assignment_to_end_of_empty);
- UNIT_TEST(null_char_assignment_to_end_of_nonempty);
-#endif
+ UNIT_TEST(null_char_assignment_to_subscript_of_empty);
+ UNIT_TEST(null_char_assignment_to_subscript_of_nonempty);
+#ifndef TSTRING_IS_STD_STRING
+ UNIT_TEST(null_char_assignment_to_end_of_empty);
+ UNIT_TEST(null_char_assignment_to_end_of_nonempty);
+#endif
UNIT_TEST(insert);
UNIT_TEST(resize);
UNIT_TEST(find);
@@ -1150,14 +1150,14 @@ public:
UNIT_TEST(erase);
UNIT_TEST(data);
UNIT_TEST(c_str);
- UNIT_TEST(null_char_of_empty);
+ UNIT_TEST(null_char_of_empty);
UNIT_TEST(null_char);
- UNIT_TEST(null_char_assignment_to_subscript_of_empty);
- UNIT_TEST(null_char_assignment_to_subscript_of_nonempty);
-#ifndef TSTRING_IS_STD_STRING
- UNIT_TEST(null_char_assignment_to_end_of_empty);
- UNIT_TEST(null_char_assignment_to_end_of_nonempty);
-#endif
+ UNIT_TEST(null_char_assignment_to_subscript_of_empty);
+ UNIT_TEST(null_char_assignment_to_subscript_of_nonempty);
+#ifndef TSTRING_IS_STD_STRING
+ UNIT_TEST(null_char_assignment_to_end_of_empty);
+ UNIT_TEST(null_char_assignment_to_end_of_nonempty);
+#endif
UNIT_TEST(insert);
UNIT_TEST(resize);
UNIT_TEST(find);