passenger 6.2.1 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +37 -15
- data/build/cxx_tests.rb +2 -0
- data/build/support/cxx_dependency_map.rb +3 -63
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Shared/ApiServerUtils.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/apache2_module/Hooks.cpp +13 -0
- data/src/apache2_module/Utils.h +14 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/FileTools/FileManip.cpp +27 -3
- data/src/cxx_supportlib/InstanceDirectory.h +30 -3
- data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
- data/src/cxx_supportlib/ServerKit/llerrors.h +3 -3
- data/src/cxx_supportlib/ServerKit/llversion.h +1 -1
- data/src/cxx_supportlib/{ServerKit/llhttp_api.c → vendor-copy/llhttp/api.c} +30 -23
- data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.c +1756 -1645
- data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.h +35 -13
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/debug.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +57 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +176 -2287
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +13 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +186 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/aligned_allocation.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/bit_utilities.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +20 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/deque_impl.hpp +2744 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +202 -104
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +161 -85
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_constructible.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +18 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +256 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +75 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +1 -56
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +16 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/range_utils.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +124 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +109 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +168 -162
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/nest.hpp +2978 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/pmr/nest.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_all_of.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_any_of.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_if.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_n.hpp +308 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count_if.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_equal.hpp +268 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill_n.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if_not.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if_not.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_for_each.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate_n.hpp +162 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_iterator_traits.hpp +382 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_merge.hpp +428 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_mismatch.hpp +350 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_none_of.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp +223 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_if.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace_if.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse.hpp +245 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse_copy.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search.hpp +211 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search_n.hpp +476 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_difference.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_intersection.hpp +287 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_symmetric_difference.hpp +306 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_union.hpp +294 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp +153 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_transform.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/wrapped_iterator.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +642 -417
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +141 -30
- data/src/cxx_supportlib/vendor-modified/boost/container/hub.hpp +2426 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +65 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +247 -68
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +39 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +156 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/hub.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/segtor.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/segtor.hpp +905 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +148 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +59 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +632 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +66 -60
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +46 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +612 -317
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +54 -111
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_construction.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +233 -116
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +17 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/encoder.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +211 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +29 -174
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +18 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +42 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +58 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/config.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +23 -11
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/{detail → lexical_cast/detail}/lcast_precision.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +15 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +48 -46
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +58 -37
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +17 -9
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_common_defs.hpp +188 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_nonmember_interface.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +108 -83
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_select_implementation.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/union_optional.hpp +724 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +93 -220
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/system/api_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +30 -28
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +196 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +191 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +196 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +192 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +52 -16
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/ranges_support.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unordered_printers.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +121 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +118 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +338 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +121 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +118 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +333 -1
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +276 -143
- data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1262 -771
- data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1704 -1586
- data/src/nginx_module/ContentHandler.c +35 -0
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +25 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +12 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- metadata +73 -8
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +0 -41
- /data/src/cxx_supportlib/{ServerKit/llhttp_http.c → vendor-copy/llhttp/http.c} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* Fast open-addressing concurrent hashset.
|
|
2
2
|
*
|
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
|
4
|
-
* Copyright 2023-
|
|
4
|
+
* Copyright 2023-2026 Joaquin M Lopez Munoz.
|
|
5
|
+
* Copyright 2026 Braden Ganetsky
|
|
5
6
|
* Distributed under the Boost Software License, Version 1.0.
|
|
6
7
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
7
8
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -16,6 +17,7 @@
|
|
|
16
17
|
#include <boost/unordered/detail/concurrent_static_asserts.hpp>
|
|
17
18
|
#include <boost/unordered/detail/foa/concurrent_table.hpp>
|
|
18
19
|
#include <boost/unordered/detail/foa/flat_set_types.hpp>
|
|
20
|
+
#include <boost/unordered/detail/ranges_support.hpp>
|
|
19
21
|
#include <boost/unordered/detail/type_traits.hpp>
|
|
20
22
|
#include <boost/unordered/unordered_flat_set_fwd.hpp>
|
|
21
23
|
|
|
@@ -98,6 +100,21 @@ namespace boost {
|
|
|
98
100
|
this->insert(f, l);
|
|
99
101
|
}
|
|
100
102
|
|
|
103
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
104
|
+
template<
|
|
105
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
106
|
+
detail::container_compatible_range<value_type> R
|
|
107
|
+
>
|
|
108
|
+
concurrent_flat_set(FromRangeT&&, R&& rg,
|
|
109
|
+
size_type n = detail::foa::default_bucket_count,
|
|
110
|
+
const hasher& hf = hasher(), const key_equal& eql = key_equal(),
|
|
111
|
+
const allocator_type& a = allocator_type())
|
|
112
|
+
: table_(n, hf, eql, a)
|
|
113
|
+
{
|
|
114
|
+
this->insert_range(std::forward<R>(rg));
|
|
115
|
+
}
|
|
116
|
+
#endif
|
|
117
|
+
|
|
101
118
|
concurrent_flat_set(concurrent_flat_set const& rhs)
|
|
102
119
|
: table_(rhs.table_,
|
|
103
120
|
boost::allocator_select_on_container_copy_construction(
|
|
@@ -117,6 +134,19 @@ namespace boost {
|
|
|
117
134
|
{
|
|
118
135
|
}
|
|
119
136
|
|
|
137
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
138
|
+
template<
|
|
139
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
140
|
+
detail::container_compatible_range<value_type> R
|
|
141
|
+
>
|
|
142
|
+
concurrent_flat_set(
|
|
143
|
+
FromRangeT&& fr, R&& rg, allocator_type const& a)
|
|
144
|
+
: concurrent_flat_set(
|
|
145
|
+
fr, std::forward<R>(rg), 0, hasher(), key_equal(), a)
|
|
146
|
+
{
|
|
147
|
+
}
|
|
148
|
+
#endif
|
|
149
|
+
|
|
120
150
|
explicit concurrent_flat_set(allocator_type const& a)
|
|
121
151
|
: table_(detail::foa::default_bucket_count, hasher(), key_equal(), a)
|
|
122
152
|
{
|
|
@@ -167,6 +197,29 @@ namespace boost {
|
|
|
167
197
|
{
|
|
168
198
|
}
|
|
169
199
|
|
|
200
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
201
|
+
template<
|
|
202
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
203
|
+
detail::container_compatible_range<value_type> R
|
|
204
|
+
>
|
|
205
|
+
concurrent_flat_set(
|
|
206
|
+
FromRangeT&& fr, R&& rg, size_type n, const allocator_type& a)
|
|
207
|
+
: concurrent_flat_set(
|
|
208
|
+
fr, std::forward<R>(rg), n, hasher(), key_equal(), a)
|
|
209
|
+
{
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
template<
|
|
213
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
214
|
+
detail::container_compatible_range<value_type> R
|
|
215
|
+
>
|
|
216
|
+
concurrent_flat_set(FromRangeT&& fr, R&& rg, size_type n,
|
|
217
|
+
const hasher& hf, const allocator_type& a)
|
|
218
|
+
: concurrent_flat_set(fr, std::forward<R>(rg), n, hf, key_equal(), a)
|
|
219
|
+
{
|
|
220
|
+
}
|
|
221
|
+
#endif
|
|
222
|
+
|
|
170
223
|
concurrent_flat_set(
|
|
171
224
|
std::initializer_list<value_type> il, const allocator_type& a)
|
|
172
225
|
: concurrent_flat_set(
|
|
@@ -186,10 +239,10 @@ namespace boost {
|
|
|
186
239
|
{
|
|
187
240
|
}
|
|
188
241
|
|
|
189
|
-
|
|
190
|
-
|
|
242
|
+
template <typename Key2,
|
|
243
|
+
typename std::enable_if<std::is_same<Key, Key2>::value, int>::type = 0>
|
|
191
244
|
concurrent_flat_set(
|
|
192
|
-
unordered_flat_set<
|
|
245
|
+
unordered_flat_set<Key2, Hash, Pred, Allocator>&& other)
|
|
193
246
|
: table_(std::move(other.table_))
|
|
194
247
|
{
|
|
195
248
|
}
|
|
@@ -429,11 +482,25 @@ namespace boost {
|
|
|
429
482
|
size_type insert(InputIterator begin, InputIterator end)
|
|
430
483
|
{
|
|
431
484
|
size_type count_elements = 0;
|
|
432
|
-
for (auto pos = begin; pos != end; ++pos
|
|
433
|
-
table_.emplace(*pos);
|
|
485
|
+
for (auto pos = begin; pos != end; ++pos) {
|
|
486
|
+
if (table_.emplace(*pos)) ++count_elements;
|
|
487
|
+
}
|
|
488
|
+
return count_elements;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
492
|
+
template<detail::container_compatible_range<value_type> R>
|
|
493
|
+
size_type insert_range(R&& rg)
|
|
494
|
+
{
|
|
495
|
+
size_type count_elements = 0;
|
|
496
|
+
auto first = std::ranges::begin(rg);
|
|
497
|
+
auto last = std::ranges::end(rg);
|
|
498
|
+
while (first != last) {
|
|
499
|
+
if (table_.emplace(*first++)) ++count_elements;
|
|
434
500
|
}
|
|
435
501
|
return count_elements;
|
|
436
502
|
}
|
|
503
|
+
#endif
|
|
437
504
|
|
|
438
505
|
size_type insert(std::initializer_list<value_type> ilist)
|
|
439
506
|
{
|
|
@@ -475,6 +542,21 @@ namespace boost {
|
|
|
475
542
|
return count_elements;
|
|
476
543
|
}
|
|
477
544
|
|
|
545
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
546
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
547
|
+
size_type insert_range_or_visit(R&& rg, F f)
|
|
548
|
+
{
|
|
549
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F)
|
|
550
|
+
size_type count_elements = 0;
|
|
551
|
+
auto first = std::ranges::begin(rg);
|
|
552
|
+
auto last = std::ranges::end(rg);
|
|
553
|
+
for (; first != last; ++first, ++count_elements) {
|
|
554
|
+
table_.emplace_or_visit(*first, f);
|
|
555
|
+
}
|
|
556
|
+
return count_elements;
|
|
557
|
+
}
|
|
558
|
+
#endif
|
|
559
|
+
|
|
478
560
|
template <class F>
|
|
479
561
|
size_type insert_or_visit(std::initializer_list<value_type> ilist, F f)
|
|
480
562
|
{
|
|
@@ -517,6 +599,21 @@ namespace boost {
|
|
|
517
599
|
return count_elements;
|
|
518
600
|
}
|
|
519
601
|
|
|
602
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
603
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
604
|
+
size_type insert_range_or_cvisit(R&& rg, F f)
|
|
605
|
+
{
|
|
606
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F)
|
|
607
|
+
size_type count_elements = 0;
|
|
608
|
+
auto first = std::ranges::begin(rg);
|
|
609
|
+
auto last = std::ranges::end(rg);
|
|
610
|
+
for (; first != last; ++first, ++count_elements) {
|
|
611
|
+
table_.emplace_or_cvisit(*first, f);
|
|
612
|
+
}
|
|
613
|
+
return count_elements;
|
|
614
|
+
}
|
|
615
|
+
#endif
|
|
616
|
+
|
|
520
617
|
template <class F>
|
|
521
618
|
size_type insert_or_cvisit(std::initializer_list<value_type> ilist, F f)
|
|
522
619
|
{
|
|
@@ -565,6 +662,24 @@ namespace boost {
|
|
|
565
662
|
return count_elements;
|
|
566
663
|
}
|
|
567
664
|
|
|
665
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
666
|
+
template<
|
|
667
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
668
|
+
>
|
|
669
|
+
size_type insert_range_and_visit(R&& rg, F1 f1, F2 f2)
|
|
670
|
+
{
|
|
671
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F1)
|
|
672
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F2)
|
|
673
|
+
size_type count_elements = 0;
|
|
674
|
+
auto first = std::ranges::begin(rg);
|
|
675
|
+
auto last = std::ranges::end(rg);
|
|
676
|
+
for (; first != last; ++first, ++count_elements) {
|
|
677
|
+
table_.emplace_and_visit(*first, f1, f2);
|
|
678
|
+
}
|
|
679
|
+
return count_elements;
|
|
680
|
+
}
|
|
681
|
+
#endif
|
|
682
|
+
|
|
568
683
|
template <class F1, class F2>
|
|
569
684
|
size_type insert_and_visit(std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
570
685
|
{
|
|
@@ -615,6 +730,24 @@ namespace boost {
|
|
|
615
730
|
return count_elements;
|
|
616
731
|
}
|
|
617
732
|
|
|
733
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
734
|
+
template<
|
|
735
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
736
|
+
>
|
|
737
|
+
size_type insert_range_and_cvisit(R&& rg, F1 f1, F2 f2)
|
|
738
|
+
{
|
|
739
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F1)
|
|
740
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F2)
|
|
741
|
+
size_type count_elements = 0;
|
|
742
|
+
auto first = std::ranges::begin(rg);
|
|
743
|
+
auto last = std::ranges::end(rg);
|
|
744
|
+
for (; first != last; ++first, ++count_elements) {
|
|
745
|
+
table_.emplace_and_cvisit(*first, f1, f2);
|
|
746
|
+
}
|
|
747
|
+
return count_elements;
|
|
748
|
+
}
|
|
749
|
+
#endif
|
|
750
|
+
|
|
618
751
|
template <class F1, class F2>
|
|
619
752
|
size_type insert_and_cvisit(
|
|
620
753
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -852,6 +985,25 @@ namespace boost {
|
|
|
852
985
|
typename std::iterator_traits<InputIterator>::value_type, Hash, Pred,
|
|
853
986
|
Allocator>;
|
|
854
987
|
|
|
988
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
989
|
+
template <
|
|
990
|
+
boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
991
|
+
std::ranges::input_range R,
|
|
992
|
+
class Hash =
|
|
993
|
+
boost::hash<std::ranges::range_value_t<R> >,
|
|
994
|
+
class Pred =
|
|
995
|
+
std::equal_to<std::ranges::range_value_t<R> >,
|
|
996
|
+
class Allocator = std::allocator<std::ranges::range_value_t<R> >,
|
|
997
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
998
|
+
class = std::enable_if_t<detail::is_pred_v<Pred> >,
|
|
999
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1000
|
+
concurrent_flat_set(FromRangeT&&, R&&,
|
|
1001
|
+
std::size_t = boost::unordered::detail::foa::default_bucket_count,
|
|
1002
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
1003
|
+
-> concurrent_flat_set<std::ranges::range_value_t<R>,
|
|
1004
|
+
Hash, Pred, Allocator>;
|
|
1005
|
+
#endif
|
|
1006
|
+
|
|
855
1007
|
template <class T, class Hash = boost::hash<T>,
|
|
856
1008
|
class Pred = std::equal_to<T>, class Allocator = std::allocator<T>,
|
|
857
1009
|
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
@@ -893,6 +1045,39 @@ namespace boost {
|
|
|
893
1045
|
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
894
1046
|
Allocator>;
|
|
895
1047
|
|
|
1048
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1049
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1050
|
+
std::ranges::input_range R,
|
|
1051
|
+
class Allocator,
|
|
1052
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1053
|
+
concurrent_flat_set(FromRangeT&&, R&&, std::size_t, Allocator)
|
|
1054
|
+
-> concurrent_flat_set<std::ranges::range_value_t<R>,
|
|
1055
|
+
boost::hash<std::ranges::range_value_t<R> >,
|
|
1056
|
+
std::equal_to<std::ranges::range_value_t<R> >,
|
|
1057
|
+
Allocator>;
|
|
1058
|
+
|
|
1059
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1060
|
+
std::ranges::input_range R,
|
|
1061
|
+
class Hash, class Allocator,
|
|
1062
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1063
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1064
|
+
concurrent_flat_set(
|
|
1065
|
+
FromRangeT&&, R&&, std::size_t, Hash, Allocator)
|
|
1066
|
+
-> concurrent_flat_set<std::ranges::range_value_t<R>,
|
|
1067
|
+
Hash, std::equal_to<std::ranges::range_value_t<R> >,
|
|
1068
|
+
Allocator>;
|
|
1069
|
+
|
|
1070
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1071
|
+
std::ranges::input_range R,
|
|
1072
|
+
class Allocator,
|
|
1073
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1074
|
+
concurrent_flat_set(FromRangeT&&, R&&, Allocator)
|
|
1075
|
+
-> concurrent_flat_set<std::ranges::range_value_t<R>,
|
|
1076
|
+
boost::hash<std::ranges::range_value_t<R> >,
|
|
1077
|
+
std::equal_to<std::ranges::range_value_t<R> >,
|
|
1078
|
+
Allocator>;
|
|
1079
|
+
#endif
|
|
1080
|
+
|
|
896
1081
|
template <class T, class Allocator,
|
|
897
1082
|
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
898
1083
|
concurrent_flat_set(std::initializer_list<T>, std::size_t, Allocator)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* Fast open-addressing, node-based concurrent hashmap.
|
|
2
2
|
*
|
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
|
4
|
-
* Copyright 2023-
|
|
4
|
+
* Copyright 2023-2026 Joaquin M Lopez Munoz.
|
|
5
|
+
* Copyright 2026 Braden Ganetsky
|
|
5
6
|
* Distributed under the Boost Software License, Version 1.0.
|
|
6
7
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
7
8
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
#include <boost/unordered/detail/foa/element_type.hpp>
|
|
19
20
|
#include <boost/unordered/detail/foa/node_map_handle.hpp>
|
|
20
21
|
#include <boost/unordered/detail/foa/node_map_types.hpp>
|
|
22
|
+
#include <boost/unordered/detail/ranges_support.hpp>
|
|
21
23
|
#include <boost/unordered/detail/type_traits.hpp>
|
|
22
24
|
#include <boost/unordered/unordered_node_map_fwd.hpp>
|
|
23
25
|
|
|
@@ -109,6 +111,21 @@ namespace boost {
|
|
|
109
111
|
this->insert(f, l);
|
|
110
112
|
}
|
|
111
113
|
|
|
114
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
115
|
+
template<
|
|
116
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
117
|
+
detail::container_compatible_range<value_type> R
|
|
118
|
+
>
|
|
119
|
+
concurrent_node_map(FromRangeT&&, R&& rg,
|
|
120
|
+
size_type n = detail::foa::default_bucket_count,
|
|
121
|
+
const hasher& hf = hasher(), const key_equal& eql = key_equal(),
|
|
122
|
+
const allocator_type& a = allocator_type())
|
|
123
|
+
: table_(n, hf, eql, a)
|
|
124
|
+
{
|
|
125
|
+
this->insert_range(std::forward<R>(rg));
|
|
126
|
+
}
|
|
127
|
+
#endif
|
|
128
|
+
|
|
112
129
|
concurrent_node_map(concurrent_node_map const& rhs)
|
|
113
130
|
: table_(rhs.table_,
|
|
114
131
|
boost::allocator_select_on_container_copy_construction(
|
|
@@ -128,6 +145,19 @@ namespace boost {
|
|
|
128
145
|
{
|
|
129
146
|
}
|
|
130
147
|
|
|
148
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
149
|
+
template<
|
|
150
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
151
|
+
detail::container_compatible_range<value_type> R
|
|
152
|
+
>
|
|
153
|
+
concurrent_node_map(
|
|
154
|
+
FromRangeT&& fr, R&& rg, allocator_type const& a)
|
|
155
|
+
: concurrent_node_map(
|
|
156
|
+
fr, std::forward<R>(rg), 0, hasher(), key_equal(), a)
|
|
157
|
+
{
|
|
158
|
+
}
|
|
159
|
+
#endif
|
|
160
|
+
|
|
131
161
|
explicit concurrent_node_map(allocator_type const& a)
|
|
132
162
|
: table_(detail::foa::default_bucket_count, hasher(), key_equal(), a)
|
|
133
163
|
{
|
|
@@ -178,6 +208,29 @@ namespace boost {
|
|
|
178
208
|
{
|
|
179
209
|
}
|
|
180
210
|
|
|
211
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
212
|
+
template<
|
|
213
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
214
|
+
detail::container_compatible_range<value_type> R
|
|
215
|
+
>
|
|
216
|
+
concurrent_node_map(
|
|
217
|
+
FromRangeT&& fr, R&& rg, size_type n, const allocator_type& a)
|
|
218
|
+
: concurrent_node_map(
|
|
219
|
+
fr, std::forward<R>(rg), n, hasher(), key_equal(), a)
|
|
220
|
+
{
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
template<
|
|
224
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
225
|
+
detail::container_compatible_range<value_type> R
|
|
226
|
+
>
|
|
227
|
+
concurrent_node_map(FromRangeT&& fr, R&& rg, size_type n,
|
|
228
|
+
const hasher& hf, const allocator_type& a)
|
|
229
|
+
: concurrent_node_map(fr, std::forward<R>(rg), n, hf, key_equal(), a)
|
|
230
|
+
{
|
|
231
|
+
}
|
|
232
|
+
#endif
|
|
233
|
+
|
|
181
234
|
concurrent_node_map(
|
|
182
235
|
std::initializer_list<value_type> il, const allocator_type& a)
|
|
183
236
|
: concurrent_node_map(
|
|
@@ -197,9 +250,10 @@ namespace boost {
|
|
|
197
250
|
{
|
|
198
251
|
}
|
|
199
252
|
|
|
200
|
-
template <
|
|
253
|
+
template <typename Key2,
|
|
254
|
+
typename std::enable_if<std::is_same<Key, Key2>::value, int>::type = 0>
|
|
201
255
|
concurrent_node_map(
|
|
202
|
-
unordered_node_map<
|
|
256
|
+
unordered_node_map<Key2, T, Hash, Pred, Allocator>&& other)
|
|
203
257
|
: table_(std::move(other.table_))
|
|
204
258
|
{
|
|
205
259
|
}
|
|
@@ -430,12 +484,26 @@ namespace boost {
|
|
|
430
484
|
size_type insert(InputIterator begin, InputIterator end)
|
|
431
485
|
{
|
|
432
486
|
size_type count_elements = 0;
|
|
433
|
-
for (auto pos = begin; pos != end; ++pos
|
|
434
|
-
table_.emplace(*pos);
|
|
487
|
+
for (auto pos = begin; pos != end; ++pos) {
|
|
488
|
+
if (table_.emplace(*pos)) ++count_elements;
|
|
435
489
|
}
|
|
436
490
|
return count_elements;
|
|
437
491
|
}
|
|
438
492
|
|
|
493
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
494
|
+
template<detail::container_compatible_range<value_type> R>
|
|
495
|
+
size_type insert_range(R&& rg)
|
|
496
|
+
{
|
|
497
|
+
size_type count_elements = 0;
|
|
498
|
+
auto first = std::ranges::begin(rg);
|
|
499
|
+
auto last = std::ranges::end(rg);
|
|
500
|
+
while (first != last) {
|
|
501
|
+
if (table_.emplace(*first++)) ++count_elements;
|
|
502
|
+
}
|
|
503
|
+
return count_elements;
|
|
504
|
+
}
|
|
505
|
+
#endif
|
|
506
|
+
|
|
439
507
|
size_type insert(std::initializer_list<value_type> ilist)
|
|
440
508
|
{
|
|
441
509
|
return this->insert(ilist.begin(), ilist.end());
|
|
@@ -510,6 +578,21 @@ namespace boost {
|
|
|
510
578
|
return count_elements;
|
|
511
579
|
}
|
|
512
580
|
|
|
581
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
582
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
583
|
+
size_type insert_range_or_visit(R&& rg, F f)
|
|
584
|
+
{
|
|
585
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F)
|
|
586
|
+
size_type count_elements = 0;
|
|
587
|
+
auto first = std::ranges::begin(rg);
|
|
588
|
+
auto last = std::ranges::end(rg);
|
|
589
|
+
for (; first != last; ++first, ++count_elements) {
|
|
590
|
+
table_.emplace_or_visit(*first, f);
|
|
591
|
+
}
|
|
592
|
+
return count_elements;
|
|
593
|
+
}
|
|
594
|
+
#endif
|
|
595
|
+
|
|
513
596
|
template <class F>
|
|
514
597
|
size_type insert_or_visit(std::initializer_list<value_type> ilist, F f)
|
|
515
598
|
{
|
|
@@ -564,6 +647,21 @@ namespace boost {
|
|
|
564
647
|
return count_elements;
|
|
565
648
|
}
|
|
566
649
|
|
|
650
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
651
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
652
|
+
size_type insert_range_or_cvisit(R&& rg, F f)
|
|
653
|
+
{
|
|
654
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F)
|
|
655
|
+
size_type count_elements = 0;
|
|
656
|
+
auto first = std::ranges::begin(rg);
|
|
657
|
+
auto last = std::ranges::end(rg);
|
|
658
|
+
for (; first != last; ++first, ++count_elements) {
|
|
659
|
+
table_.emplace_or_cvisit(*first, f);
|
|
660
|
+
}
|
|
661
|
+
return count_elements;
|
|
662
|
+
}
|
|
663
|
+
#endif
|
|
664
|
+
|
|
567
665
|
template <class F>
|
|
568
666
|
size_type insert_or_cvisit(std::initializer_list<value_type> ilist, F f)
|
|
569
667
|
{
|
|
@@ -622,6 +720,24 @@ namespace boost {
|
|
|
622
720
|
return count_elements;
|
|
623
721
|
}
|
|
624
722
|
|
|
723
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
724
|
+
template<
|
|
725
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
726
|
+
>
|
|
727
|
+
size_type insert_range_and_visit(R&& rg, F1 f1, F2 f2)
|
|
728
|
+
{
|
|
729
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F1)
|
|
730
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F2)
|
|
731
|
+
size_type count_elements = 0;
|
|
732
|
+
auto first = std::ranges::begin(rg);
|
|
733
|
+
auto last = std::ranges::end(rg);
|
|
734
|
+
for (; first != last; ++first, ++count_elements) {
|
|
735
|
+
table_.emplace_and_visit(*first, f1, f2);
|
|
736
|
+
}
|
|
737
|
+
return count_elements;
|
|
738
|
+
}
|
|
739
|
+
#endif
|
|
740
|
+
|
|
625
741
|
template <class F1, class F2>
|
|
626
742
|
size_type insert_and_visit(
|
|
627
743
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -684,6 +800,24 @@ namespace boost {
|
|
|
684
800
|
return count_elements;
|
|
685
801
|
}
|
|
686
802
|
|
|
803
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
804
|
+
template<
|
|
805
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
806
|
+
>
|
|
807
|
+
size_type insert_range_and_cvisit(R&& rg, F1 f1, F2 f2)
|
|
808
|
+
{
|
|
809
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F1)
|
|
810
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F2)
|
|
811
|
+
size_type count_elements = 0;
|
|
812
|
+
auto first = std::ranges::begin(rg);
|
|
813
|
+
auto last = std::ranges::end(rg);
|
|
814
|
+
for (; first != last; ++first, ++count_elements) {
|
|
815
|
+
table_.emplace_and_cvisit(*first, f1, f2);
|
|
816
|
+
}
|
|
817
|
+
return count_elements;
|
|
818
|
+
}
|
|
819
|
+
#endif
|
|
820
|
+
|
|
687
821
|
template <class F1, class F2>
|
|
688
822
|
size_type insert_and_cvisit(
|
|
689
823
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -1126,6 +1260,27 @@ namespace boost {
|
|
|
1126
1260
|
boost::unordered::detail::iter_val_t<InputIterator>, Hash, Pred,
|
|
1127
1261
|
Allocator>;
|
|
1128
1262
|
|
|
1263
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1264
|
+
template <
|
|
1265
|
+
boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1266
|
+
std::ranges::input_range R,
|
|
1267
|
+
class Hash =
|
|
1268
|
+
boost::hash<boost::unordered::detail::range_key_t<R> >,
|
|
1269
|
+
class Pred =
|
|
1270
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1271
|
+
class Allocator = std::allocator<
|
|
1272
|
+
boost::unordered::detail::range_to_alloc_t<R> >,
|
|
1273
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1274
|
+
class = std::enable_if_t<detail::is_pred_v<Pred> >,
|
|
1275
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1276
|
+
concurrent_node_map(FromRangeT&&, R&&,
|
|
1277
|
+
std::size_t = boost::unordered::detail::foa::default_bucket_count,
|
|
1278
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
1279
|
+
-> concurrent_node_map<boost::unordered::detail::range_key_t<R>,
|
|
1280
|
+
boost::unordered::detail::range_mapped_t<R>, Hash, Pred,
|
|
1281
|
+
Allocator>;
|
|
1282
|
+
#endif
|
|
1283
|
+
|
|
1129
1284
|
template <class Key, class T,
|
|
1130
1285
|
class Hash = boost::hash<std::remove_const_t<Key> >,
|
|
1131
1286
|
class Pred = std::equal_to<std::remove_const_t<Key> >,
|
|
@@ -1173,6 +1328,42 @@ namespace boost {
|
|
|
1173
1328
|
std::equal_to<boost::unordered::detail::iter_key_t<InputIterator> >,
|
|
1174
1329
|
Allocator>;
|
|
1175
1330
|
|
|
1331
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1332
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1333
|
+
std::ranges::input_range R,
|
|
1334
|
+
class Allocator,
|
|
1335
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1336
|
+
concurrent_node_map(FromRangeT&&, R&&, std::size_t, Allocator)
|
|
1337
|
+
-> concurrent_node_map<boost::unordered::detail::range_key_t<R>,
|
|
1338
|
+
boost::unordered::detail::range_mapped_t<R>,
|
|
1339
|
+
boost::hash<boost::unordered::detail::range_key_t<R> >,
|
|
1340
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1341
|
+
Allocator>;
|
|
1342
|
+
|
|
1343
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1344
|
+
std::ranges::input_range R,
|
|
1345
|
+
class Allocator,
|
|
1346
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1347
|
+
concurrent_node_map(FromRangeT&&, R&&, Allocator)
|
|
1348
|
+
-> concurrent_node_map<boost::unordered::detail::range_key_t<R>,
|
|
1349
|
+
boost::unordered::detail::range_mapped_t<R>,
|
|
1350
|
+
boost::hash<boost::unordered::detail::range_key_t<R> >,
|
|
1351
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1352
|
+
Allocator>;
|
|
1353
|
+
|
|
1354
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1355
|
+
std::ranges::input_range R,
|
|
1356
|
+
class Hash, class Allocator,
|
|
1357
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1358
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1359
|
+
concurrent_node_map(
|
|
1360
|
+
FromRangeT&&, R&&, std::size_t, Hash, Allocator)
|
|
1361
|
+
-> concurrent_node_map<boost::unordered::detail::range_key_t<R>,
|
|
1362
|
+
boost::unordered::detail::range_mapped_t<R>, Hash,
|
|
1363
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1364
|
+
Allocator>;
|
|
1365
|
+
#endif
|
|
1366
|
+
|
|
1176
1367
|
template <class Key, class T, class Allocator,
|
|
1177
1368
|
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1178
1369
|
concurrent_node_map(std::initializer_list<std::pair<Key, T> >, std::size_t,
|