aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorbidzilya <bidzilya@yandex-team.ru>2022-02-10 16:50:46 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:50:46 +0300
commita175286682787b2d1213734c5be7458aaf594c1c (patch)
tree5d5cb817648f650d76cf1076100726fd9b8448e8 /util
parentdf9835cb1b90255cbbd11b71ab3609ec1ff75107 (diff)
downloadydb-a175286682787b2d1213734c5be7458aaf594c1c.tar.gz
Restoring authorship annotation for <bidzilya@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util')
-rw-r--r--util/generic/singleton.h46
-rw-r--r--util/generic/singleton_ut.cpp58
2 files changed, 52 insertions, 52 deletions
diff --git a/util/generic/singleton.h b/util/generic/singleton.h
index feaa95e4b6..f5fa047f5c 100644
--- a/util/generic/singleton.h
+++ b/util/generic/singleton.h
@@ -4,7 +4,7 @@
#include <util/system/atomic.h>
#include <new>
-#include <utility>
+#include <utility>
template <class T>
struct TSingletonTraits {
@@ -23,8 +23,8 @@ namespace NPrivate {
FillWithTrash(ptr, sizeof(T));
}
- template <class T, size_t P, class... TArgs>
- Y_NO_INLINE T* SingletonBase(T*& ptr, TArgs&&... args) {
+ template <class T, size_t P, class... TArgs>
+ Y_NO_INLINE T* SingletonBase(T*& ptr, TArgs&&... args) {
alignas(T) static char buf[sizeof(T)];
static TAtomic lock;
@@ -34,7 +34,7 @@ namespace NPrivate {
try {
if (!ret) {
- ret = ::new (buf) T(std::forward<TArgs>(args)...);
+ ret = ::new (buf) T(std::forward<TArgs>(args)...);
try {
AtExit(Destroyer<T>, ret, P);
@@ -57,15 +57,15 @@ namespace NPrivate {
return ret;
}
- template <class T, size_t P, class... TArgs>
- T* SingletonInt(TArgs&&... args) {
+ template <class T, size_t P, class... TArgs>
+ T* SingletonInt(TArgs&&... args) {
static_assert(sizeof(T) < 32000, "use HugeSingleton instead");
static T* ptr;
auto ret = AtomicGet(ptr);
if (Y_UNLIKELY(!ret)) {
- ret = SingletonBase<T, P>(ptr, std::forward<TArgs>(args)...);
+ ret = SingletonBase<T, P>(ptr, std::forward<TArgs>(args)...);
}
return ret;
@@ -74,9 +74,9 @@ namespace NPrivate {
template <class T>
class TDefault {
public:
- template <class... TArgs>
- inline TDefault(TArgs&&... args)
- : T_(std::forward<TArgs>(args)...)
+ template <class... TArgs>
+ inline TDefault(TArgs&&... args)
+ : T_(std::forward<TArgs>(args)...)
{
}
@@ -90,9 +90,9 @@ namespace NPrivate {
template <class T>
struct THeapStore {
- template <class... TArgs>
- inline THeapStore(TArgs&&... args)
- : D(new T(std::forward<TArgs>(args)...))
+ template <class... TArgs>
+ inline THeapStore(TArgs&&... args)
+ : D(new T(std::forward<TArgs>(args)...))
{
}
@@ -110,23 +110,23 @@ namespace NPrivate {
template <class T, size_t P, class... TArgs> \
friend T* ::NPrivate::SingletonBase(T*&, TArgs&&...);
-template <class T, class... TArgs>
-T* Singleton(TArgs&&... args) {
- return ::NPrivate::SingletonInt<T, TSingletonTraits<T>::Priority>(std::forward<TArgs>(args)...);
+template <class T, class... TArgs>
+T* Singleton(TArgs&&... args) {
+ return ::NPrivate::SingletonInt<T, TSingletonTraits<T>::Priority>(std::forward<TArgs>(args)...);
}
-template <class T, class... TArgs>
-T* HugeSingleton(TArgs&&... args) {
+template <class T, class... TArgs>
+T* HugeSingleton(TArgs&&... args) {
return Singleton<::NPrivate::THeapStore<T>>(std::forward<TArgs>(args)...)->D;
}
-template <class T, size_t P, class... TArgs>
-T* SingletonWithPriority(TArgs&&... args) {
- return ::NPrivate::SingletonInt<T, P>(std::forward<TArgs>(args)...);
+template <class T, size_t P, class... TArgs>
+T* SingletonWithPriority(TArgs&&... args) {
+ return ::NPrivate::SingletonInt<T, P>(std::forward<TArgs>(args)...);
}
-template <class T, size_t P, class... TArgs>
-T* HugeSingletonWithPriority(TArgs&&... args) {
+template <class T, size_t P, class... TArgs>
+T* HugeSingletonWithPriority(TArgs&&... args) {
return SingletonWithPriority<::NPrivate::THeapStore<T>, P>(std::forward<TArgs>(args)...)->D;
}
diff --git a/util/generic/singleton_ut.cpp b/util/generic/singleton_ut.cpp
index 4db5d61a11..35ba90cd76 100644
--- a/util/generic/singleton_ut.cpp
+++ b/util/generic/singleton_ut.cpp
@@ -12,35 +12,35 @@ Y_UNIT_TEST_SUITE(TestSingleton) {
UNIT_ASSERT_VALUES_EQUAL(*HugeSingleton<int>(), 0);
UNIT_ASSERT_VALUES_EQUAL(HugeSingleton<THuge>()->V, 1234);
}
-
- struct TWithParams {
- explicit TWithParams(const ui32 data1 = 0, const TString& data2 = TString())
- : Data1(data1)
- , Data2(data2)
- {
- }
-
- ui32 Data1;
- TString Data2;
- };
-
+
+ struct TWithParams {
+ explicit TWithParams(const ui32 data1 = 0, const TString& data2 = TString())
+ : Data1(data1)
+ , Data2(data2)
+ {
+ }
+
+ ui32 Data1;
+ TString Data2;
+ };
+
Y_UNIT_TEST(TestConstructorParamsOrder) {
- UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(10, "123123")->Data1, 10);
- UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(20, "123123")->Data1, 10);
- UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(10, "456456")->Data2, "123123");
- }
-
+ UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(10, "123123")->Data1, 10);
+ UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(20, "123123")->Data1, 10);
+ UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(10, "456456")->Data2, "123123");
+ }
+
Y_UNIT_TEST(TestInstantiationWithConstructorParams) {
- UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(10)->Data1, 10);
- UNIT_ASSERT_VALUES_EQUAL(HugeSingleton<TWithParams>(20, "123123")->Data2, "123123");
- {
- const auto value = SingletonWithPriority<TWithParams, 12312>(30, "456")->Data1;
- UNIT_ASSERT_VALUES_EQUAL(value, 30);
- }
- {
- const auto value = HugeSingletonWithPriority<TWithParams, 12311>(40, "789")->Data2;
- UNIT_ASSERT_VALUES_EQUAL(value, "789");
- }
- UNIT_ASSERT_VALUES_EQUAL(Default<TWithParams>().Data1, 0);
- }
+ UNIT_ASSERT_VALUES_EQUAL(Singleton<TWithParams>(10)->Data1, 10);
+ UNIT_ASSERT_VALUES_EQUAL(HugeSingleton<TWithParams>(20, "123123")->Data2, "123123");
+ {
+ const auto value = SingletonWithPriority<TWithParams, 12312>(30, "456")->Data1;
+ UNIT_ASSERT_VALUES_EQUAL(value, 30);
+ }
+ {
+ const auto value = HugeSingletonWithPriority<TWithParams, 12311>(40, "789")->Data2;
+ UNIT_ASSERT_VALUES_EQUAL(value, "789");
+ }
+ UNIT_ASSERT_VALUES_EQUAL(Default<TWithParams>().Data1, 0);
+ }
}