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
|
@@ -275,9 +275,9 @@ namespace boost {
|
|
|
275
275
|
inline void shared_mutex::lock()
|
|
276
276
|
{
|
|
277
277
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
278
|
-
gate1_.wait(lk, boost::bind(&shared_mutex::no_writer,
|
|
278
|
+
gate1_.wait(lk, boost::bind(&shared_mutex::no_writer, this));
|
|
279
279
|
state_ |= write_entered_;
|
|
280
|
-
gate2_.wait(lk, boost::bind(&shared_mutex::no_readers,
|
|
280
|
+
gate2_.wait(lk, boost::bind(&shared_mutex::no_readers, this));
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
inline bool shared_mutex::try_lock()
|
|
@@ -298,13 +298,13 @@ namespace boost {
|
|
|
298
298
|
{
|
|
299
299
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
300
300
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
301
|
-
&shared_mutex::no_writer,
|
|
301
|
+
&shared_mutex::no_writer, this)))
|
|
302
302
|
{
|
|
303
303
|
return false;
|
|
304
304
|
}
|
|
305
305
|
state_ |= write_entered_;
|
|
306
306
|
if (!gate2_.wait_until(lk, abs_time, boost::bind(
|
|
307
|
-
&shared_mutex::no_readers,
|
|
307
|
+
&shared_mutex::no_readers, this)))
|
|
308
308
|
{
|
|
309
309
|
state_ &= ~write_entered_;
|
|
310
310
|
return false;
|
|
@@ -319,13 +319,13 @@ namespace boost {
|
|
|
319
319
|
{
|
|
320
320
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
321
321
|
if (!gate1_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
322
|
-
&shared_mutex::no_writer,
|
|
322
|
+
&shared_mutex::no_writer, this)))
|
|
323
323
|
{
|
|
324
324
|
return false;
|
|
325
325
|
}
|
|
326
326
|
state_ |= write_entered_;
|
|
327
327
|
if (!gate2_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
328
|
-
&shared_mutex::no_readers,
|
|
328
|
+
&shared_mutex::no_readers, this)))
|
|
329
329
|
{
|
|
330
330
|
state_ &= ~write_entered_;
|
|
331
331
|
return false;
|
|
@@ -350,7 +350,7 @@ namespace boost {
|
|
|
350
350
|
inline void shared_mutex::lock_shared()
|
|
351
351
|
{
|
|
352
352
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
353
|
-
gate1_.wait(lk, boost::bind(&shared_mutex::no_writer_no_max_readers,
|
|
353
|
+
gate1_.wait(lk, boost::bind(&shared_mutex::no_writer_no_max_readers, this));
|
|
354
354
|
count_t num_readers = (state_ & n_readers_) + 1;
|
|
355
355
|
state_ &= ~n_readers_;
|
|
356
356
|
state_ |= num_readers;
|
|
@@ -376,7 +376,7 @@ namespace boost {
|
|
|
376
376
|
{
|
|
377
377
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
378
378
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
379
|
-
&shared_mutex::no_writer_no_max_readers,
|
|
379
|
+
&shared_mutex::no_writer_no_max_readers, this)))
|
|
380
380
|
{
|
|
381
381
|
return false;
|
|
382
382
|
}
|
|
@@ -393,7 +393,7 @@ namespace boost {
|
|
|
393
393
|
{
|
|
394
394
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
395
395
|
if (!gate1_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
396
|
-
&shared_mutex::no_writer_no_max_readers,
|
|
396
|
+
&shared_mutex::no_writer_no_max_readers, this)))
|
|
397
397
|
{
|
|
398
398
|
return false;
|
|
399
399
|
}
|
|
@@ -653,9 +653,9 @@ namespace boost {
|
|
|
653
653
|
inline void upgrade_mutex::lock()
|
|
654
654
|
{
|
|
655
655
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
656
|
-
gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_upgrader,
|
|
656
|
+
gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_upgrader, this));
|
|
657
657
|
state_ |= write_entered_;
|
|
658
|
-
gate2_.wait(lk, boost::bind(&upgrade_mutex::no_readers,
|
|
658
|
+
gate2_.wait(lk, boost::bind(&upgrade_mutex::no_readers, this));
|
|
659
659
|
}
|
|
660
660
|
|
|
661
661
|
inline bool upgrade_mutex::try_lock()
|
|
@@ -676,13 +676,13 @@ namespace boost {
|
|
|
676
676
|
{
|
|
677
677
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
678
678
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
679
|
-
&upgrade_mutex::no_writer_no_upgrader,
|
|
679
|
+
&upgrade_mutex::no_writer_no_upgrader, this)))
|
|
680
680
|
{
|
|
681
681
|
return false;
|
|
682
682
|
}
|
|
683
683
|
state_ |= write_entered_;
|
|
684
684
|
if (!gate2_.wait_until(lk, abs_time, boost::bind(
|
|
685
|
-
&upgrade_mutex::no_readers,
|
|
685
|
+
&upgrade_mutex::no_readers, this)))
|
|
686
686
|
{
|
|
687
687
|
state_ &= ~write_entered_;
|
|
688
688
|
return false;
|
|
@@ -697,13 +697,13 @@ namespace boost {
|
|
|
697
697
|
{
|
|
698
698
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
699
699
|
if (!gate1_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
700
|
-
&upgrade_mutex::no_writer_no_upgrader,
|
|
700
|
+
&upgrade_mutex::no_writer_no_upgrader, this)))
|
|
701
701
|
{
|
|
702
702
|
return false;
|
|
703
703
|
}
|
|
704
704
|
state_ |= write_entered_;
|
|
705
705
|
if (!gate2_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
706
|
-
&upgrade_mutex::no_readers,
|
|
706
|
+
&upgrade_mutex::no_readers, this)))
|
|
707
707
|
{
|
|
708
708
|
state_ &= ~write_entered_;
|
|
709
709
|
return false;
|
|
@@ -729,7 +729,7 @@ namespace boost {
|
|
|
729
729
|
inline void upgrade_mutex::lock_shared()
|
|
730
730
|
{
|
|
731
731
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
732
|
-
gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_max_readers,
|
|
732
|
+
gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_max_readers, this));
|
|
733
733
|
count_t num_readers = (state_ & n_readers_) + 1;
|
|
734
734
|
state_ &= ~n_readers_;
|
|
735
735
|
state_ |= num_readers;
|
|
@@ -755,7 +755,7 @@ namespace boost {
|
|
|
755
755
|
{
|
|
756
756
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
757
757
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
758
|
-
&upgrade_mutex::no_writer_no_max_readers,
|
|
758
|
+
&upgrade_mutex::no_writer_no_max_readers, this)))
|
|
759
759
|
{
|
|
760
760
|
return false;
|
|
761
761
|
}
|
|
@@ -772,7 +772,7 @@ namespace boost {
|
|
|
772
772
|
{
|
|
773
773
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
774
774
|
if (!gate1_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
775
|
-
&upgrade_mutex::no_writer_no_max_readers,
|
|
775
|
+
&upgrade_mutex::no_writer_no_max_readers, this)))
|
|
776
776
|
{
|
|
777
777
|
return false;
|
|
778
778
|
}
|
|
@@ -807,7 +807,7 @@ namespace boost {
|
|
|
807
807
|
inline void upgrade_mutex::lock_upgrade()
|
|
808
808
|
{
|
|
809
809
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
810
|
-
gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_upgrader_no_max_readers,
|
|
810
|
+
gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_upgrader_no_max_readers, this));
|
|
811
811
|
count_t num_readers = (state_ & n_readers_) + 1;
|
|
812
812
|
state_ &= ~n_readers_;
|
|
813
813
|
state_ |= upgradable_entered_ | num_readers;
|
|
@@ -833,7 +833,7 @@ namespace boost {
|
|
|
833
833
|
{
|
|
834
834
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
835
835
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
836
|
-
&upgrade_mutex::no_writer_no_upgrader_no_max_readers,
|
|
836
|
+
&upgrade_mutex::no_writer_no_upgrader_no_max_readers, this)))
|
|
837
837
|
{
|
|
838
838
|
return false;
|
|
839
839
|
}
|
|
@@ -850,7 +850,7 @@ namespace boost {
|
|
|
850
850
|
{
|
|
851
851
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
852
852
|
if (!gate1_.timed_wait(lk, abs_or_rel_time, boost::bind(
|
|
853
|
-
&upgrade_mutex::no_writer_no_upgrader_no_max_readers,
|
|
853
|
+
&upgrade_mutex::no_writer_no_upgrader_no_max_readers, this)))
|
|
854
854
|
{
|
|
855
855
|
return false;
|
|
856
856
|
}
|
|
@@ -898,7 +898,7 @@ namespace boost {
|
|
|
898
898
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
899
899
|
BOOST_ASSERT(one_or_more_readers());
|
|
900
900
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
901
|
-
&upgrade_mutex::no_writer_no_upgrader,
|
|
901
|
+
&upgrade_mutex::no_writer_no_upgrader, this)))
|
|
902
902
|
{
|
|
903
903
|
return false;
|
|
904
904
|
}
|
|
@@ -906,7 +906,7 @@ namespace boost {
|
|
|
906
906
|
state_ &= ~n_readers_;
|
|
907
907
|
state_ |= (write_entered_ | num_readers);
|
|
908
908
|
if (!gate2_.wait_until(lk, abs_time, boost::bind(
|
|
909
|
-
&upgrade_mutex::no_readers,
|
|
909
|
+
&upgrade_mutex::no_readers, this)))
|
|
910
910
|
{
|
|
911
911
|
++num_readers;
|
|
912
912
|
state_ &= ~(write_entered_ | n_readers_);
|
|
@@ -953,7 +953,7 @@ namespace boost {
|
|
|
953
953
|
boost::unique_lock<mutex_t> lk(mut_);
|
|
954
954
|
BOOST_ASSERT(one_or_more_readers());
|
|
955
955
|
if (!gate1_.wait_until(lk, abs_time, boost::bind(
|
|
956
|
-
&upgrade_mutex::no_writer_no_upgrader,
|
|
956
|
+
&upgrade_mutex::no_writer_no_upgrader, this)))
|
|
957
957
|
{
|
|
958
958
|
return false;
|
|
959
959
|
}
|
|
@@ -987,7 +987,7 @@ namespace boost {
|
|
|
987
987
|
count_t num_readers = (state_ & n_readers_) - 1;
|
|
988
988
|
state_ &= ~(upgradable_entered_ | n_readers_);
|
|
989
989
|
state_ |= write_entered_ | num_readers;
|
|
990
|
-
gate2_.wait(lk, boost::bind(&upgrade_mutex::no_readers,
|
|
990
|
+
gate2_.wait(lk, boost::bind(&upgrade_mutex::no_readers, this));
|
|
991
991
|
}
|
|
992
992
|
|
|
993
993
|
inline bool upgrade_mutex::try_unlock_upgrade_and_lock()
|
|
@@ -1017,7 +1017,7 @@ namespace boost {
|
|
|
1017
1017
|
state_ &= ~(upgradable_entered_ | n_readers_);
|
|
1018
1018
|
state_ |= (write_entered_ | num_readers);
|
|
1019
1019
|
if (!gate2_.wait_until(lk, abs_time, boost::bind(
|
|
1020
|
-
&upgrade_mutex::no_readers,
|
|
1020
|
+
&upgrade_mutex::no_readers, this)))
|
|
1021
1021
|
{
|
|
1022
1022
|
++num_readers;
|
|
1023
1023
|
state_ &= ~(write_entered_ | n_readers_);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* Fast open-addressing 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)
|
|
@@ -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_map_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_map_fwd.hpp>
|
|
21
23
|
|
|
@@ -101,6 +103,21 @@ namespace boost {
|
|
|
101
103
|
this->insert(f, l);
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
107
|
+
template<
|
|
108
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
109
|
+
detail::container_compatible_range<value_type> R
|
|
110
|
+
>
|
|
111
|
+
concurrent_flat_map(FromRangeT&&, R&& rg,
|
|
112
|
+
size_type n = detail::foa::default_bucket_count,
|
|
113
|
+
const hasher& hf = hasher(), const key_equal& eql = key_equal(),
|
|
114
|
+
const allocator_type& a = allocator_type())
|
|
115
|
+
: table_(n, hf, eql, a)
|
|
116
|
+
{
|
|
117
|
+
this->insert_range(std::forward<R>(rg));
|
|
118
|
+
}
|
|
119
|
+
#endif
|
|
120
|
+
|
|
104
121
|
concurrent_flat_map(concurrent_flat_map const& rhs)
|
|
105
122
|
: table_(rhs.table_,
|
|
106
123
|
boost::allocator_select_on_container_copy_construction(
|
|
@@ -120,6 +137,19 @@ namespace boost {
|
|
|
120
137
|
{
|
|
121
138
|
}
|
|
122
139
|
|
|
140
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
141
|
+
template<
|
|
142
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
143
|
+
detail::container_compatible_range<value_type> R
|
|
144
|
+
>
|
|
145
|
+
concurrent_flat_map(
|
|
146
|
+
FromRangeT&& fr, R&& rg, allocator_type const& a)
|
|
147
|
+
: concurrent_flat_map(
|
|
148
|
+
fr, std::forward<R>(rg), 0, hasher(), key_equal(), a)
|
|
149
|
+
{
|
|
150
|
+
}
|
|
151
|
+
#endif
|
|
152
|
+
|
|
123
153
|
explicit concurrent_flat_map(allocator_type const& a)
|
|
124
154
|
: table_(detail::foa::default_bucket_count, hasher(), key_equal(), a)
|
|
125
155
|
{
|
|
@@ -170,6 +200,29 @@ namespace boost {
|
|
|
170
200
|
{
|
|
171
201
|
}
|
|
172
202
|
|
|
203
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
204
|
+
template<
|
|
205
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
206
|
+
detail::container_compatible_range<value_type> R
|
|
207
|
+
>
|
|
208
|
+
concurrent_flat_map(
|
|
209
|
+
FromRangeT&& fr, R&& rg, size_type n, const allocator_type& a)
|
|
210
|
+
: concurrent_flat_map(
|
|
211
|
+
fr, std::forward<R>(rg), n, hasher(), key_equal(), a)
|
|
212
|
+
{
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
template<
|
|
216
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
217
|
+
detail::container_compatible_range<value_type> R
|
|
218
|
+
>
|
|
219
|
+
concurrent_flat_map(FromRangeT&& fr, R&& rg, size_type n,
|
|
220
|
+
const hasher& hf, const allocator_type& a)
|
|
221
|
+
: concurrent_flat_map(fr, std::forward<R>(rg), n, hf, key_equal(), a)
|
|
222
|
+
{
|
|
223
|
+
}
|
|
224
|
+
#endif
|
|
225
|
+
|
|
173
226
|
concurrent_flat_map(
|
|
174
227
|
std::initializer_list<value_type> il, const allocator_type& a)
|
|
175
228
|
: concurrent_flat_map(
|
|
@@ -189,10 +242,10 @@ namespace boost {
|
|
|
189
242
|
{
|
|
190
243
|
}
|
|
191
244
|
|
|
192
|
-
|
|
193
|
-
|
|
245
|
+
template <typename Key2,
|
|
246
|
+
typename std::enable_if<std::is_same<Key, Key2>::value, int>::type = 0>
|
|
194
247
|
concurrent_flat_map(
|
|
195
|
-
unordered_flat_map<
|
|
248
|
+
unordered_flat_map<Key2, T, Hash, Pred, Allocator>&& other)
|
|
196
249
|
: table_(std::move(other.table_))
|
|
197
250
|
{
|
|
198
251
|
}
|
|
@@ -423,12 +476,26 @@ namespace boost {
|
|
|
423
476
|
size_type insert(InputIterator begin, InputIterator end)
|
|
424
477
|
{
|
|
425
478
|
size_type count_elements = 0;
|
|
426
|
-
for (auto pos = begin; pos != end; ++pos
|
|
427
|
-
table_.emplace(*pos);
|
|
479
|
+
for (auto pos = begin; pos != end; ++pos) {
|
|
480
|
+
if (table_.emplace(*pos)) ++count_elements;
|
|
428
481
|
}
|
|
429
482
|
return count_elements;
|
|
430
483
|
}
|
|
431
484
|
|
|
485
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
486
|
+
template<detail::container_compatible_range<value_type> R>
|
|
487
|
+
size_type insert_range(R&& rg)
|
|
488
|
+
{
|
|
489
|
+
size_type count_elements = 0;
|
|
490
|
+
auto first = std::ranges::begin(rg);
|
|
491
|
+
auto last = std::ranges::end(rg);
|
|
492
|
+
while (first != last) {
|
|
493
|
+
if (table_.emplace(*first++)) ++count_elements;
|
|
494
|
+
}
|
|
495
|
+
return count_elements;
|
|
496
|
+
}
|
|
497
|
+
#endif
|
|
498
|
+
|
|
432
499
|
size_type insert(std::initializer_list<value_type> ilist)
|
|
433
500
|
{
|
|
434
501
|
return this->insert(ilist.begin(), ilist.end());
|
|
@@ -484,6 +551,21 @@ namespace boost {
|
|
|
484
551
|
return count_elements;
|
|
485
552
|
}
|
|
486
553
|
|
|
554
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
555
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
556
|
+
size_type insert_range_or_visit(R&& rg, F f)
|
|
557
|
+
{
|
|
558
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F)
|
|
559
|
+
size_type count_elements = 0;
|
|
560
|
+
auto first = std::ranges::begin(rg);
|
|
561
|
+
auto last = std::ranges::end(rg);
|
|
562
|
+
for (; first != last; ++first, ++count_elements) {
|
|
563
|
+
table_.emplace_or_visit(*first, f);
|
|
564
|
+
}
|
|
565
|
+
return count_elements;
|
|
566
|
+
}
|
|
567
|
+
#endif
|
|
568
|
+
|
|
487
569
|
template <class F>
|
|
488
570
|
size_type insert_or_visit(std::initializer_list<value_type> ilist, F f)
|
|
489
571
|
{
|
|
@@ -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
|
{
|
|
@@ -554,6 +651,24 @@ namespace boost {
|
|
|
554
651
|
return count_elements;
|
|
555
652
|
}
|
|
556
653
|
|
|
654
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
655
|
+
template<
|
|
656
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
657
|
+
>
|
|
658
|
+
size_type insert_range_and_visit(R&& rg, F1 f1, F2 f2)
|
|
659
|
+
{
|
|
660
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F1)
|
|
661
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F2)
|
|
662
|
+
size_type count_elements = 0;
|
|
663
|
+
auto first = std::ranges::begin(rg);
|
|
664
|
+
auto last = std::ranges::end(rg);
|
|
665
|
+
for (; first != last; ++first, ++count_elements) {
|
|
666
|
+
table_.emplace_and_visit(*first, f1, f2);
|
|
667
|
+
}
|
|
668
|
+
return count_elements;
|
|
669
|
+
}
|
|
670
|
+
#endif
|
|
671
|
+
|
|
557
672
|
template <class F1, class F2>
|
|
558
673
|
size_type insert_and_visit(
|
|
559
674
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -594,6 +709,24 @@ namespace boost {
|
|
|
594
709
|
return count_elements;
|
|
595
710
|
}
|
|
596
711
|
|
|
712
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
713
|
+
template<
|
|
714
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
715
|
+
>
|
|
716
|
+
size_type insert_range_and_cvisit(R&& rg, F1 f1, F2 f2)
|
|
717
|
+
{
|
|
718
|
+
BOOST_UNORDERED_STATIC_ASSERT_INVOCABLE(F1)
|
|
719
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F2)
|
|
720
|
+
size_type count_elements = 0;
|
|
721
|
+
auto first = std::ranges::begin(rg);
|
|
722
|
+
auto last = std::ranges::end(rg);
|
|
723
|
+
for (; first != last; ++first, ++count_elements) {
|
|
724
|
+
table_.emplace_and_cvisit(*first, f1, f2);
|
|
725
|
+
}
|
|
726
|
+
return count_elements;
|
|
727
|
+
}
|
|
728
|
+
#endif
|
|
729
|
+
|
|
597
730
|
template <class F1, class F2>
|
|
598
731
|
size_type insert_and_cvisit(
|
|
599
732
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -979,6 +1112,27 @@ namespace boost {
|
|
|
979
1112
|
boost::unordered::detail::iter_val_t<InputIterator>, Hash, Pred,
|
|
980
1113
|
Allocator>;
|
|
981
1114
|
|
|
1115
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1116
|
+
template <
|
|
1117
|
+
boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1118
|
+
std::ranges::input_range R,
|
|
1119
|
+
class Hash =
|
|
1120
|
+
boost::hash<boost::unordered::detail::range_key_t<R> >,
|
|
1121
|
+
class Pred =
|
|
1122
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1123
|
+
class Allocator = std::allocator<
|
|
1124
|
+
boost::unordered::detail::range_to_alloc_t<R> >,
|
|
1125
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1126
|
+
class = std::enable_if_t<detail::is_pred_v<Pred> >,
|
|
1127
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1128
|
+
concurrent_flat_map(FromRangeT&&, R&&,
|
|
1129
|
+
std::size_t = boost::unordered::detail::foa::default_bucket_count,
|
|
1130
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
1131
|
+
-> concurrent_flat_map<boost::unordered::detail::range_key_t<R>,
|
|
1132
|
+
boost::unordered::detail::range_mapped_t<R>, Hash, Pred,
|
|
1133
|
+
Allocator>;
|
|
1134
|
+
#endif
|
|
1135
|
+
|
|
982
1136
|
template <class Key, class T,
|
|
983
1137
|
class Hash = boost::hash<std::remove_const_t<Key> >,
|
|
984
1138
|
class Pred = std::equal_to<std::remove_const_t<Key> >,
|
|
@@ -1026,6 +1180,42 @@ namespace boost {
|
|
|
1026
1180
|
std::equal_to<boost::unordered::detail::iter_key_t<InputIterator> >,
|
|
1027
1181
|
Allocator>;
|
|
1028
1182
|
|
|
1183
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1184
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1185
|
+
std::ranges::input_range R,
|
|
1186
|
+
class Allocator,
|
|
1187
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1188
|
+
concurrent_flat_map(FromRangeT&&, R&&, std::size_t, Allocator)
|
|
1189
|
+
-> concurrent_flat_map<boost::unordered::detail::range_key_t<R>,
|
|
1190
|
+
boost::unordered::detail::range_mapped_t<R>,
|
|
1191
|
+
boost::hash<boost::unordered::detail::range_key_t<R> >,
|
|
1192
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1193
|
+
Allocator>;
|
|
1194
|
+
|
|
1195
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1196
|
+
std::ranges::input_range R,
|
|
1197
|
+
class Allocator,
|
|
1198
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1199
|
+
concurrent_flat_map(FromRangeT&&, R&&, Allocator)
|
|
1200
|
+
-> concurrent_flat_map<boost::unordered::detail::range_key_t<R>,
|
|
1201
|
+
boost::unordered::detail::range_mapped_t<R>,
|
|
1202
|
+
boost::hash<boost::unordered::detail::range_key_t<R> >,
|
|
1203
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1204
|
+
Allocator>;
|
|
1205
|
+
|
|
1206
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1207
|
+
std::ranges::input_range R,
|
|
1208
|
+
class Hash, class Allocator,
|
|
1209
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1210
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1211
|
+
concurrent_flat_map(
|
|
1212
|
+
FromRangeT&&, R&&, std::size_t, Hash, Allocator)
|
|
1213
|
+
-> concurrent_flat_map<boost::unordered::detail::range_key_t<R>,
|
|
1214
|
+
boost::unordered::detail::range_mapped_t<R>, Hash,
|
|
1215
|
+
std::equal_to<boost::unordered::detail::range_key_t<R> >,
|
|
1216
|
+
Allocator>;
|
|
1217
|
+
#endif
|
|
1218
|
+
|
|
1029
1219
|
template <class Key, class T, class Allocator,
|
|
1030
1220
|
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1031
1221
|
concurrent_flat_map(std::initializer_list<std::pair<Key, T> >, std::size_t,
|