diff options
author | yurial <yurial@yandex-team.ru> | 2022-02-10 16:46:12 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:12 +0300 |
commit | 0d92051305ae5b348f0abc6506b1a93a1d66bf94 (patch) | |
tree | acca4ef8c4dad18588d4d0d3ccfd0d4a44d33de5 /contrib/restricted/boost | |
parent | 480eebba2142866e78db15cd7600bb3f452a2dbc (diff) | |
download | ydb-0d92051305ae5b348f0abc6506b1a93a1d66bf94.tar.gz |
Restoring authorship annotation for <yurial@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/restricted/boost')
4 files changed, 84 insertions, 84 deletions
diff --git a/contrib/restricted/boost/arcadia_test/test_shared_ptr.cpp b/contrib/restricted/boost/arcadia_test/test_shared_ptr.cpp index 10d0589248..997d632e3e 100644 --- a/contrib/restricted/boost/arcadia_test/test_shared_ptr.cpp +++ b/contrib/restricted/boost/arcadia_test/test_shared_ptr.cpp @@ -1,68 +1,68 @@ -/* - * Иногда требуется создать умные указатели (shared_ptr) на константные объекты. - * Если при этом используется enable_shared_from_this, то первый shared_ptr не - * инициализирует weak_ptr лежищий внутри enable_shared_from_this. - * Это приводит к тому, что метод shared_from_this() кидает исключение. - * Это происходит из-за того, что шаблонная функция ipcdetails::sp_enable_shared_from_this, - * вызываемая в конструкторе shared_ptr не может сматчить входящие аргументы. - * Данная ошибка исправляется путем довления константности к типу входящего артумента 'pe'. - */ - +/* + * Иногда требуется создать умные указатели (shared_ptr) на константные объекты. + * Если при этом используется enable_shared_from_this, то первый shared_ptr не + * инициализирует weak_ptr лежищий внутри enable_shared_from_this. + * Это приводит к тому, что метод shared_from_this() кидает исключение. + * Это происходит из-за того, что шаблонная функция ipcdetails::sp_enable_shared_from_this, + * вызываемая в конструкторе shared_ptr не может сматчить входящие аргументы. + * Данная ошибка исправляется путем довления константности к типу входящего артумента 'pe'. + */ + #include <library/cpp/testing/unittest/registar.h> -#include <boost/interprocess/smart_ptr/shared_ptr.hpp> -#include <boost/interprocess/smart_ptr/enable_shared_from_this.hpp> -#include <type_traits> -#include <stdlib.h> - -using Allocator = std::allocator<void>; - -template <bool Const> -struct TestTypes { - class TestClass; - - class Deleter { - public: - using const_pointer = TestClass const*; - using pointer = const_pointer; - - Deleter& operator ()(pointer p) { - delete p; - return *this; - } - }; - - class TestClass: - public boost::interprocess::enable_shared_from_this<typename std::conditional<Const, const TestClass, TestClass>::type, Allocator, Deleter> - { - }; - - using shared_ptr = boost::interprocess::shared_ptr<typename std::conditional<Const, const TestClass, TestClass>::type, Allocator, Deleter>; -}; - -template <bool ConstPtr, bool ConstSharedPtr> -void test() { - using T = typename TestTypes<ConstSharedPtr>::TestClass; - using shared_ptr = typename TestTypes<ConstSharedPtr>::shared_ptr; - T* p = new T; - typename std::conditional<ConstPtr, T* const, T*>::type ptr = p; - shared_ptr sptr1(ptr); - UNIT_ASSERT_VALUES_EQUAL(sptr1.use_count(), 1); - { - shared_ptr sptr2 = p->shared_from_this(); - UNIT_ASSERT_VALUES_EQUAL(sptr2.use_count(), 2); - } - UNIT_ASSERT_VALUES_EQUAL(sptr1.use_count(), 1); -} - -Y_UNIT_TEST_SUITE(TestSharedPtr) { - Y_UNIT_TEST(NonConst_NonConst) { - test<false, false>(); - } - Y_UNIT_TEST(NonConst_Const) { - test<false, true>(); - } - Y_UNIT_TEST(Const_Const) { - test<true, true>(); - } -}; - +#include <boost/interprocess/smart_ptr/shared_ptr.hpp> +#include <boost/interprocess/smart_ptr/enable_shared_from_this.hpp> +#include <type_traits> +#include <stdlib.h> + +using Allocator = std::allocator<void>; + +template <bool Const> +struct TestTypes { + class TestClass; + + class Deleter { + public: + using const_pointer = TestClass const*; + using pointer = const_pointer; + + Deleter& operator ()(pointer p) { + delete p; + return *this; + } + }; + + class TestClass: + public boost::interprocess::enable_shared_from_this<typename std::conditional<Const, const TestClass, TestClass>::type, Allocator, Deleter> + { + }; + + using shared_ptr = boost::interprocess::shared_ptr<typename std::conditional<Const, const TestClass, TestClass>::type, Allocator, Deleter>; +}; + +template <bool ConstPtr, bool ConstSharedPtr> +void test() { + using T = typename TestTypes<ConstSharedPtr>::TestClass; + using shared_ptr = typename TestTypes<ConstSharedPtr>::shared_ptr; + T* p = new T; + typename std::conditional<ConstPtr, T* const, T*>::type ptr = p; + shared_ptr sptr1(ptr); + UNIT_ASSERT_VALUES_EQUAL(sptr1.use_count(), 1); + { + shared_ptr sptr2 = p->shared_from_this(); + UNIT_ASSERT_VALUES_EQUAL(sptr2.use_count(), 2); + } + UNIT_ASSERT_VALUES_EQUAL(sptr1.use_count(), 1); +} + +Y_UNIT_TEST_SUITE(TestSharedPtr) { + Y_UNIT_TEST(NonConst_NonConst) { + test<false, false>(); + } + Y_UNIT_TEST(NonConst_Const) { + test<false, true>(); + } + Y_UNIT_TEST(Const_Const) { + test<true, true>(); + } +}; + diff --git a/contrib/restricted/boost/arcadia_test/ya.make b/contrib/restricted/boost/arcadia_test/ya.make index 9d9ba18de9..ab9caec7bc 100644 --- a/contrib/restricted/boost/arcadia_test/ya.make +++ b/contrib/restricted/boost/arcadia_test/ya.make @@ -1,15 +1,15 @@ -OWNER(rb:yatool) - -UNITTEST() - +OWNER(rb:yatool) + +UNITTEST() + WITHOUT_LICENSE_TEXTS() -SRCS( - test_shared_ptr.cpp -) - -PEERDIR( +SRCS( + test_shared_ptr.cpp +) + +PEERDIR( contrib/restricted/boost -) - -END() +) + +END() diff --git a/contrib/restricted/boost/boost/interprocess/smart_ptr/shared_ptr.hpp b/contrib/restricted/boost/boost/interprocess/smart_ptr/shared_ptr.hpp index f29030b0a4..14bff948e2 100644 --- a/contrib/restricted/boost/boost/interprocess/smart_ptr/shared_ptr.hpp +++ b/contrib/restricted/boost/boost/interprocess/smart_ptr/shared_ptr.hpp @@ -56,7 +56,7 @@ namespace ipcdetail{ template<class T, class VoidAllocator, class Deleter> inline void sp_enable_shared_from_this (shared_count<T, VoidAllocator, Deleter> const & pn - ,enable_shared_from_this<T, VoidAllocator, Deleter> const *pe + ,enable_shared_from_this<T, VoidAllocator, Deleter> const *pe ,T *ptr) { diff --git a/contrib/restricted/boost/ya.make b/contrib/restricted/boost/ya.make index 77e2dc66c0..db0566ed2d 100644 --- a/contrib/restricted/boost/ya.make +++ b/contrib/restricted/boost/ya.make @@ -31,11 +31,11 @@ ADDINCL( ) END() - + RECURSE( libs ) -RECURSE_FOR_TESTS( - arcadia_test -) +RECURSE_FOR_TESTS( + arcadia_test +) |