summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/interprocess/test/flat_tree_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/interprocess/test/flat_tree_test.cpp')
-rw-r--r--src/boost/libs/interprocess/test/flat_tree_test.cpp202
1 files changed, 202 insertions, 0 deletions
diff --git a/src/boost/libs/interprocess/test/flat_tree_test.cpp b/src/boost/libs/interprocess/test/flat_tree_test.cpp
new file mode 100644
index 00000000..bd4af0f7
--- /dev/null
+++ b/src/boost/libs/interprocess/test/flat_tree_test.cpp
@@ -0,0 +1,202 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2004-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/interprocess for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include <boost/interprocess/detail/config_begin.hpp>
+#include <set>
+#include <boost/interprocess/managed_shared_memory.hpp>
+#include <boost/interprocess/containers/flat_set.hpp>
+#include <boost/interprocess/containers/flat_map.hpp>
+#include <boost/interprocess/allocators/allocator.hpp>
+#include <boost/interprocess/indexes/flat_map_index.hpp>
+#include "print_container.hpp"
+#include "dummy_test_allocator.hpp"
+#include "movable_int.hpp"
+#include "set_test.hpp"
+#include "map_test.hpp"
+#include "emplace_test.hpp"
+
+/////////////////////////////////////////////////////////////////
+//
+// This example repeats the same operations with std::set and
+// shmem_set using the node allocator
+// and compares the values of both containers
+//
+/////////////////////////////////////////////////////////////////
+
+using namespace boost::interprocess;
+
+//Customize managed_shared_memory class
+typedef basic_managed_shared_memory
+ <char,
+ //simple_seq_fit<mutex_family>,
+ rbtree_best_fit<mutex_family>,
+ iset_index
+ > my_managed_shared_memory;
+
+//Alias allocator type
+typedef allocator<int, my_managed_shared_memory::segment_manager>
+ shmem_allocator_t;
+typedef allocator<test::movable_int, my_managed_shared_memory::segment_manager>
+ shmem_movable_allocator_t;
+typedef allocator<std::pair<int, int>, my_managed_shared_memory::segment_manager>
+ shmem_pair_allocator_t;
+typedef allocator<std::pair<test::movable_int, test::movable_int>, my_managed_shared_memory::segment_manager>
+ shmem_movable_pair_allocator_t;
+
+typedef allocator<test::movable_and_copyable_int, my_managed_shared_memory::segment_manager>
+ shmem_move_copy_allocator_t;
+
+typedef allocator<test::copyable_int, my_managed_shared_memory::segment_manager>
+ shmem_copy_allocator_t;
+
+typedef allocator<std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int>, my_managed_shared_memory::segment_manager>
+ shmem_move_copy_pair_allocator_t;
+
+//Alias set types
+typedef std::set<int> MyStdSet;
+typedef std::multiset<int> MyStdMultiSet;
+typedef std::map<int, int> MyStdMap;
+typedef std::multimap<int, int> MyStdMultiMap;
+
+typedef flat_set<int, std::less<int>, shmem_allocator_t> MyShmSet;
+typedef flat_multiset<int, std::less<int>, shmem_allocator_t> MyShmMultiSet;
+typedef flat_map<int, int, std::less<int>, shmem_pair_allocator_t> MyShmMap;
+typedef flat_multimap<int, int, std::less<int>, shmem_pair_allocator_t> MyShmMultiMap;
+
+typedef flat_set<test::movable_int, std::less<test::movable_int>
+ ,shmem_movable_allocator_t> MyMovableShmSet;
+typedef flat_multiset<test::movable_int,std::less<test::movable_int>
+ ,shmem_movable_allocator_t> MyMovableShmMultiSet;
+typedef flat_map<test::movable_int, test::movable_int
+ ,std::less<test::movable_int>
+ ,shmem_movable_pair_allocator_t> MyMovableShmMap;
+typedef flat_multimap<test::movable_int, test::movable_int
+ ,std::less<test::movable_int>
+ ,shmem_movable_pair_allocator_t> MyMovableShmMultiMap;
+
+typedef flat_set<test::movable_and_copyable_int, std::less<test::movable_and_copyable_int>
+ ,shmem_move_copy_allocator_t> MyMoveCopyShmSet;
+typedef flat_multiset<test::movable_and_copyable_int,std::less<test::movable_and_copyable_int>
+ ,shmem_move_copy_allocator_t> MyMoveCopyShmMultiSet;
+
+typedef flat_set<test::copyable_int, std::less<test::copyable_int>
+ ,shmem_copy_allocator_t> MyCopyShmSet;
+typedef flat_multiset<test::copyable_int,std::less<test::copyable_int>
+ ,shmem_copy_allocator_t> MyCopyShmMultiSet;
+
+typedef flat_map<test::movable_and_copyable_int, test::movable_and_copyable_int
+ ,std::less<test::movable_and_copyable_int>
+ ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMap;
+typedef flat_multimap<test::movable_and_copyable_int, test::movable_and_copyable_int
+ ,std::less<test::movable_and_copyable_int>
+ ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMultiMap;
+
+int main()
+{
+ using namespace boost::interprocess::test;
+
+ if (0 != set_test<my_managed_shared_memory
+ ,MyShmSet
+ ,MyStdSet
+ ,MyShmMultiSet
+ ,MyStdMultiSet>()){
+ std::cout << "Error in set_test<MyShmSet>" << std::endl;
+ return 1;
+ }
+
+ if (0 != set_test_copyable<my_managed_shared_memory
+ ,MyShmSet
+ ,MyStdSet
+ ,MyShmMultiSet
+ ,MyStdMultiSet>()){
+ std::cout << "Error in set_test<MyShmSet>" << std::endl;
+ return 1;
+ }
+
+ if (0 != set_test<my_managed_shared_memory
+ ,MyMovableShmSet
+ ,MyStdSet
+ ,MyMovableShmMultiSet
+ ,MyStdMultiSet>()){
+ std::cout << "Error in set_test<MyMovableShmSet>" << std::endl;
+ return 1;
+ }
+
+ if (0 != set_test<my_managed_shared_memory
+ ,MyMoveCopyShmSet
+ ,MyStdSet
+ ,MyMoveCopyShmMultiSet
+ ,MyStdMultiSet>()){
+ std::cout << "Error in set_test<MyMoveCopyShmSet>" << std::endl;
+ return 1;
+ }
+
+ if (0 != set_test<my_managed_shared_memory
+ ,MyCopyShmSet
+ ,MyStdSet
+ ,MyCopyShmMultiSet
+ ,MyStdMultiSet>()){
+ std::cout << "Error in set_test<MyCopyShmSet>" << std::endl;
+ return 1;
+ }
+
+ if (0 != map_test<my_managed_shared_memory
+ ,MyShmMap
+ ,MyStdMap
+ ,MyShmMultiMap
+ ,MyStdMultiMap>()){
+ std::cout << "Error in map_test<MyShmMap>" << std::endl;
+ return 1;
+ }
+
+ if (0 != map_test_copyable<my_managed_shared_memory
+ ,MyShmMap
+ ,MyStdMap
+ ,MyShmMultiMap
+ ,MyStdMultiMap>()){
+ std::cout << "Error in map_test<MyShmMap>" << std::endl;
+ return 1;
+ }
+
+// if (0 != map_test<my_managed_shared_memory
+// ,MyMovableShmMap
+// ,MyStdMap
+// ,MyMovableShmMultiMap
+// ,MyStdMultiMap>()){
+// return 1;
+// }
+
+ if (0 != map_test<my_managed_shared_memory
+ ,MyMoveCopyShmMap
+ ,MyStdMap
+ ,MyMoveCopyShmMultiMap
+ ,MyStdMultiMap>()){
+ std::cout << "Error in map_test<MyMoveCopyShmMap>" << std::endl;
+ return 1;
+ }
+
+ //#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC_MINOR__ < 3)
+ const test::EmplaceOptions SetOptions = (test::EmplaceOptions)(test::EMPLACE_HINT | test::EMPLACE_ASSOC);
+ const test::EmplaceOptions MapOptions = (test::EmplaceOptions)(test::EMPLACE_HINT_PAIR | test::EMPLACE_ASSOC_PAIR);
+
+ if(!boost::interprocess::test::test_emplace<flat_map<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
+ return 1;
+ if(!boost::interprocess::test::test_emplace<flat_multimap<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
+ return 1;
+ if(!boost::interprocess::test::test_emplace<flat_set<test::EmplaceInt>, SetOptions>())
+ return 1;
+ if(!boost::interprocess::test::test_emplace<flat_multiset<test::EmplaceInt>, SetOptions>())
+ return 1;
+ //#endif //!defined(__GNUC__)
+ return 0;
+
+}
+
+#include <boost/interprocess/detail/config_end.hpp>