////////////////////////////////////////////////////////////////////////////// // // (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 #include #include #include #include #include #include #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 , rbtree_best_fit, iset_index > my_managed_shared_memory; //Alias allocator type typedef allocator shmem_allocator_t; typedef allocator shmem_movable_allocator_t; typedef allocator, my_managed_shared_memory::segment_manager> shmem_pair_allocator_t; typedef allocator, my_managed_shared_memory::segment_manager> shmem_movable_pair_allocator_t; typedef allocator shmem_move_copy_allocator_t; typedef allocator shmem_copy_allocator_t; typedef allocator, my_managed_shared_memory::segment_manager> shmem_move_copy_pair_allocator_t; //Alias set types typedef std::set MyStdSet; typedef std::multiset MyStdMultiSet; typedef std::map MyStdMap; typedef std::multimap MyStdMultiMap; typedef flat_set, shmem_allocator_t> MyShmSet; typedef flat_multiset, shmem_allocator_t> MyShmMultiSet; typedef flat_map, shmem_pair_allocator_t> MyShmMap; typedef flat_multimap, shmem_pair_allocator_t> MyShmMultiMap; typedef flat_set ,shmem_movable_allocator_t> MyMovableShmSet; typedef flat_multiset ,shmem_movable_allocator_t> MyMovableShmMultiSet; typedef flat_map ,shmem_movable_pair_allocator_t> MyMovableShmMap; typedef flat_multimap ,shmem_movable_pair_allocator_t> MyMovableShmMultiMap; typedef flat_set ,shmem_move_copy_allocator_t> MyMoveCopyShmSet; typedef flat_multiset ,shmem_move_copy_allocator_t> MyMoveCopyShmMultiSet; typedef flat_set ,shmem_copy_allocator_t> MyCopyShmSet; typedef flat_multiset ,shmem_copy_allocator_t> MyCopyShmMultiSet; typedef flat_map ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMap; typedef flat_multimap ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMultiMap; int main() { using namespace boost::interprocess::test; if (0 != set_test()){ std::cout << "Error in set_test" << std::endl; return 1; } if (0 != set_test_copyable()){ std::cout << "Error in set_test" << std::endl; return 1; } if (0 != set_test()){ std::cout << "Error in set_test" << std::endl; return 1; } if (0 != set_test()){ std::cout << "Error in set_test" << std::endl; return 1; } if (0 != set_test()){ std::cout << "Error in set_test" << std::endl; return 1; } if (0 != map_test()){ std::cout << "Error in map_test" << std::endl; return 1; } if (0 != map_test_copyable()){ std::cout << "Error in map_test" << std::endl; return 1; } // if (0 != map_test()){ // return 1; // } if (0 != map_test()){ std::cout << "Error in map_test" << 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, MapOptions>()) return 1; if(!boost::interprocess::test::test_emplace, MapOptions>()) return 1; if(!boost::interprocess::test::test_emplace, SetOptions>()) return 1; if(!boost::interprocess::test::test_emplace, SetOptions>()) return 1; //#endif //!defined(__GNUC__) return 0; } #include