From cad3509a17fca87fb1dc212f654640631eef6f1e Mon Sep 17 00:00:00 2001 From: joaquintides Date: Sat, 16 Sep 2023 11:18:39 +0200 Subject: [PATCH] added boost::concurrent_flat_set to mmap_tests --- test/Jamfile.v2 | 1 + test/unordered/mmap_tests.cpp | 35 +++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 79883626..9313c7c1 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -260,6 +260,7 @@ local MMAP_CONTAINERS = unordered_multimap unordered_multiset concurrent_flat_map + concurrent_flat_set ; for local container in $(MMAP_CONTAINERS) diff --git a/test/unordered/mmap_tests.cpp b/test/unordered/mmap_tests.cpp index 1e900bc6..73838544 100644 --- a/test/unordered/mmap_tests.cpp +++ b/test/unordered/mmap_tests.cpp @@ -1,4 +1,5 @@ // Copyright 2023 Christian Mazakas. +// Copyright 2023 Joaquin M Lopez Munoz. // 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) @@ -21,6 +22,7 @@ int main() {} #include #include +#include #include #include @@ -82,10 +84,25 @@ get_container_type() using concurrent_map = decltype( get_container_type()); +using concurrent_set = decltype( + get_container_type()); + +template +struct is_concurrent_container: std::false_type {}; + +template +struct is_concurrent_container >: + std::true_type {}; + +template +struct is_concurrent_container >: + std::true_type {}; + static char const* shm_map_name = "shared_map"; template -void parent(std::string const& shm_name_, char const* exe_name, C*) +typename std::enable_if::value, void>::type +parent(std::string const& shm_name_, char const* exe_name, C*) { struct shm_remove { @@ -151,7 +168,9 @@ void parent(std::string const& shm_name_, char const* exe_name, C*) segment.destroy(shm_map_name); } -template void child(std::string const& shm_name, C*) +template +typename std::enable_if::value, void>::type +child(std::string const& shm_name, C*) { using container_type = C; using iterator = typename container_type::iterator; @@ -184,7 +203,9 @@ template void child(std::string const& shm_name, C*) } } -void parent(std::string const& shm_name_, char const* exe_name, concurrent_map*) +template +typename std::enable_if::value, void>::type +parent(std::string const& shm_name_, char const* exe_name, C*) { struct shm_remove { @@ -200,7 +221,7 @@ void parent(std::string const& shm_name_, char const* exe_name, concurrent_map*) } } remover{shm_name_.c_str()}; - using container_type = concurrent_map; + using container_type = C; std::size_t const shm_size = 64 * 1024; @@ -239,9 +260,11 @@ void parent(std::string const& shm_name_, char const* exe_name, concurrent_map*) segment.destroy(shm_map_name); } -void child(std::string const& shm_name, concurrent_map*) +template +typename std::enable_if::value, void>::type +child(std::string const& shm_name, C*) { - using container_type = concurrent_map; + using container_type = C; boost::interprocess::managed_shared_memory segment( boost::interprocess::open_only, shm_name.c_str());