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
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// (C) Copyright Ion Gaztanaga 2025-2026. Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
6
|
+
//
|
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
|
8
|
+
//
|
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
10
|
+
#ifndef BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_COPY_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_COPY_HPP
|
|
12
|
+
|
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
|
14
|
+
# include <boost/config.hpp>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
18
|
+
# pragma once
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <boost/container/detail/config_begin.hpp>
|
|
22
|
+
#include <boost/container/detail/workaround.hpp>
|
|
23
|
+
#include <boost/container/experimental/segmented_iterator_traits.hpp>
|
|
24
|
+
#include <boost/container/detail/iterator.hpp>
|
|
25
|
+
#include <boost/move/utility_core.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace container {
|
|
29
|
+
|
|
30
|
+
template <class InIter, class Sent, class OutIter, class T>
|
|
31
|
+
OutIter segmented_remove_copy(InIter first, Sent last, OutIter result, const T& value);
|
|
32
|
+
|
|
33
|
+
namespace detail_algo {
|
|
34
|
+
|
|
35
|
+
template <bool Move, class SrcIter, class Sent, class DstIter, class DstSent, class T, class DstTag, class SrcCat>
|
|
36
|
+
BOOST_CONTAINER_FORCEINLINE typename algo_enable_if_c<!DstTag::value, segduo<SrcIter, DstIter> >::type
|
|
37
|
+
segmented_remove_copy_dst_bounded
|
|
38
|
+
(SrcIter first, Sent last, DstIter dst_first, DstSent dst_last, const T& value, DstTag, SrcCat)
|
|
39
|
+
{
|
|
40
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
41
|
+
for(; first != last; ++first) {
|
|
42
|
+
if(!(*first == value)) {
|
|
43
|
+
if(dst_first == dst_last)
|
|
44
|
+
goto out_path;
|
|
45
|
+
transfer_op<Move>::apply(*dst_first, *first);
|
|
46
|
+
++dst_first;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
out_path:
|
|
50
|
+
return segduo<SrcIter, DstIter>(first, dst_first);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
template <bool Move, class SrcIter, class Sent, class SegDstIter, class T, class SrcCat>
|
|
54
|
+
segduo<SrcIter, SegDstIter> segmented_remove_copy_dst_bounded
|
|
55
|
+
(SrcIter first, Sent last, SegDstIter dst_first, SegDstIter dst_last, const T& value,
|
|
56
|
+
segmented_iterator_tag, SrcCat)
|
|
57
|
+
{
|
|
58
|
+
typedef segmented_iterator_traits<SegDstIter> dst_traits;
|
|
59
|
+
typedef typename dst_traits::local_iterator dst_local_iterator;
|
|
60
|
+
typedef typename dst_traits::segment_iterator dst_segment_iterator;
|
|
61
|
+
typedef typename segmented_iterator_traits<dst_local_iterator>::is_segmented_iterator dst_is_local_seg_t;
|
|
62
|
+
|
|
63
|
+
dst_segment_iterator sfirst = dst_traits::segment(dst_first);
|
|
64
|
+
const dst_segment_iterator slast = dst_traits::segment(dst_last);
|
|
65
|
+
|
|
66
|
+
if(sfirst == slast) {
|
|
67
|
+
segduo<SrcIter, dst_local_iterator> r = (segmented_remove_copy_dst_bounded<Move>)
|
|
68
|
+
(first, last, dst_traits::local(dst_first), dst_traits::local(dst_last), value, dst_is_local_seg_t(), SrcCat());
|
|
69
|
+
return segduo<SrcIter, SegDstIter>(r.first, dst_traits::compose(sfirst, r.second));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
segduo<SrcIter, dst_local_iterator> r = (segmented_remove_copy_dst_bounded<Move>)
|
|
73
|
+
(first, last, dst_traits::local(dst_first), dst_traits::end(sfirst), value, dst_is_local_seg_t(), SrcCat());
|
|
74
|
+
first = r.first;
|
|
75
|
+
if(first == last)
|
|
76
|
+
return segduo<SrcIter, SegDstIter>(first, dst_traits::compose(sfirst, r.second));
|
|
77
|
+
|
|
78
|
+
for(++sfirst; sfirst != slast; ++sfirst) {
|
|
79
|
+
r = (segmented_remove_copy_dst_bounded<Move>)
|
|
80
|
+
(first, last, dst_traits::begin(sfirst), dst_traits::end(sfirst), value, dst_is_local_seg_t(), SrcCat());
|
|
81
|
+
first = r.first;
|
|
82
|
+
if(first == last)
|
|
83
|
+
return segduo<SrcIter, SegDstIter>(first, dst_traits::compose(sfirst, r.second));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
r = (segmented_remove_copy_dst_bounded<Move>)
|
|
87
|
+
(first, last, dst_traits::begin(slast), dst_traits::local(dst_last), value, dst_is_local_seg_t(), SrcCat());
|
|
88
|
+
return segduo<SrcIter, SegDstIter>(r.first, dst_traits::compose(sfirst, r.second));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
93
|
+
// Destination dispatch
|
|
94
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
95
|
+
|
|
96
|
+
template <bool Move, class SrcIter, class Sent, class DstIter, class T, class Cat>
|
|
97
|
+
BOOST_CONTAINER_FORCEINLINE DstIter segmented_remove_copy_dst_dispatch
|
|
98
|
+
(SrcIter first, Sent last, DstIter result, const T& value,
|
|
99
|
+
const non_segmented_iterator_tag &, Cat)
|
|
100
|
+
{
|
|
101
|
+
return (segmented_remove_copy_dst_bounded<Move>)
|
|
102
|
+
(first, last, result, unreachable_sentinel_t(), value, non_segmented_iterator_tag(), Cat()).second;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
template <bool Move, class SrcIter, class Sent, class SegDstIter, class T, class Cat>
|
|
106
|
+
SegDstIter segmented_remove_copy_dst_dispatch
|
|
107
|
+
(SrcIter first, const Sent last, SegDstIter result, const T& value,
|
|
108
|
+
const segmented_iterator_tag &, Cat)
|
|
109
|
+
{
|
|
110
|
+
typedef segmented_iterator_traits<SegDstIter> dst_traits;
|
|
111
|
+
typedef typename dst_traits::local_iterator dst_local_iterator;
|
|
112
|
+
typedef typename dst_traits::segment_iterator dst_segment_iterator;
|
|
113
|
+
typedef typename segmented_iterator_traits<dst_local_iterator>::is_segmented_iterator dst_is_local_seg_t;
|
|
114
|
+
|
|
115
|
+
if(first == last)
|
|
116
|
+
return result;
|
|
117
|
+
|
|
118
|
+
dst_segment_iterator dst_seg = dst_traits::segment(result);
|
|
119
|
+
dst_local_iterator dst_local = dst_traits::local(result);
|
|
120
|
+
|
|
121
|
+
while(1) {
|
|
122
|
+
const segduo<SrcIter, dst_local_iterator> r = (segmented_remove_copy_dst_bounded<Move>)
|
|
123
|
+
(first, last, dst_local, dst_traits::end(dst_seg), value, dst_is_local_seg_t(), Cat());
|
|
124
|
+
if(r.first != last) {
|
|
125
|
+
first = r.first;
|
|
126
|
+
++dst_seg;
|
|
127
|
+
dst_local = dst_traits::begin(dst_seg);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
dst_local = r.second;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return dst_traits::compose(dst_seg, dst_local);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
138
|
+
// Source dispatch
|
|
139
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
140
|
+
|
|
141
|
+
template <bool Move, class SrcIter, class Sent, class OutIter, class T, class Tag, class Cat>
|
|
142
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
143
|
+
typename algo_enable_if_c<
|
|
144
|
+
!Tag::value || is_sentinel<Sent, SrcIter>::value, OutIter>::type
|
|
145
|
+
segmented_remove_copy_dispatch
|
|
146
|
+
(SrcIter first, Sent last, OutIter result, const T& value, Tag, Cat)
|
|
147
|
+
{
|
|
148
|
+
#if !defined(BOOST_CONTAINER_DISABLE_MULTI_SEGMENTED_ALGO)
|
|
149
|
+
typedef segmented_iterator_traits<OutIter> dst_traits;
|
|
150
|
+
return (segmented_remove_copy_dst_dispatch<Move>)
|
|
151
|
+
(first, last, result, value, typename dst_traits::is_segmented_iterator(), Cat());
|
|
152
|
+
#else
|
|
153
|
+
return (segmented_remove_copy_dst_dispatch<Move>)
|
|
154
|
+
(first, last, result, value, non_segmented_iterator_tag(), Cat());
|
|
155
|
+
#endif
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
template <bool Move, class SegIter, class OutIter, class T, class Cat>
|
|
159
|
+
OutIter segmented_remove_copy_dispatch
|
|
160
|
+
(SegIter first, SegIter last, OutIter result, const T& value, segmented_iterator_tag, Cat)
|
|
161
|
+
{
|
|
162
|
+
typedef segmented_iterator_traits<SegIter> src_traits;
|
|
163
|
+
typedef typename src_traits::local_iterator src_local_iterator;
|
|
164
|
+
typedef typename src_traits::segment_iterator src_segment_iterator;
|
|
165
|
+
typedef typename segmented_iterator_traits<src_local_iterator>::is_segmented_iterator src_is_local_seg_t;
|
|
166
|
+
typedef typename iterator_traits<src_local_iterator>::iterator_category src_local_cat_t;
|
|
167
|
+
|
|
168
|
+
src_segment_iterator sfirst = src_traits::segment(first);
|
|
169
|
+
const src_segment_iterator slast = src_traits::segment(last);
|
|
170
|
+
|
|
171
|
+
if(sfirst == slast) {
|
|
172
|
+
return (segmented_remove_copy_dispatch<Move>)
|
|
173
|
+
(src_traits::local(first), src_traits::local(last), result, value, src_is_local_seg_t(), src_local_cat_t());
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
result = (segmented_remove_copy_dispatch<Move>)
|
|
177
|
+
(src_traits::local(first), src_traits::end(sfirst), result, value, src_is_local_seg_t(), src_local_cat_t());
|
|
178
|
+
|
|
179
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
180
|
+
result = (segmented_remove_copy_dispatch<Move>)
|
|
181
|
+
(src_traits::begin(sfirst), src_traits::end(sfirst), result, value, src_is_local_seg_t(), src_local_cat_t());
|
|
182
|
+
|
|
183
|
+
return (segmented_remove_copy_dispatch<Move>)
|
|
184
|
+
(src_traits::begin(slast), src_traits::local(last), result, value, src_is_local_seg_t(), src_local_cat_t());
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
} // namespace detail_algo
|
|
189
|
+
|
|
190
|
+
//! Copies elements from [first, last) to the range beginning at \c result,
|
|
191
|
+
//! skipping elements equal to \c value. Returns the output iterator past
|
|
192
|
+
//! the last element written.
|
|
193
|
+
template <class InIter, class Sent, class OutIter, class T>
|
|
194
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
195
|
+
OutIter segmented_remove_copy(InIter first, Sent last, OutIter result, const T& value)
|
|
196
|
+
{
|
|
197
|
+
typedef segmented_iterator_traits<InIter> traits;
|
|
198
|
+
return detail_algo::segmented_remove_copy_dispatch<false>
|
|
199
|
+
(first, last, result, value, typename traits::is_segmented_iterator(), typename iterator_traits<InIter>::iterator_category());
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
} // namespace container
|
|
203
|
+
} // namespace boost
|
|
204
|
+
|
|
205
|
+
#include <boost/container/detail/config_end.hpp>
|
|
206
|
+
|
|
207
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_COPY_HPP
|
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// (C) Copyright Ion Gaztanaga 2025-2026. Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
6
|
+
//
|
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
|
8
|
+
//
|
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
10
|
+
#ifndef BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_COPY_IF_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_COPY_IF_HPP
|
|
12
|
+
|
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
|
14
|
+
# include <boost/config.hpp>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
18
|
+
# pragma once
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <boost/container/detail/config_begin.hpp>
|
|
22
|
+
#include <boost/container/detail/workaround.hpp>
|
|
23
|
+
#include <boost/container/experimental/segmented_iterator_traits.hpp>
|
|
24
|
+
#include <boost/container/detail/iterator.hpp>
|
|
25
|
+
#include <boost/move/utility_core.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace container {
|
|
29
|
+
|
|
30
|
+
template <class InIter, class Sent, class OutIter, class Pred>
|
|
31
|
+
OutIter segmented_remove_copy_if(InIter first, Sent last, OutIter result, Pred pred);
|
|
32
|
+
|
|
33
|
+
namespace detail_algo {
|
|
34
|
+
|
|
35
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
36
|
+
// Bounded destination helper: copies non-matching elements from source into
|
|
37
|
+
// [dst_first, dst_last), stopping when source is exhausted or destination
|
|
38
|
+
// is full. Returns segduo<SrcIter, DstIter> with the final positions of
|
|
39
|
+
// both iterators. Recursively walks destination segments when dst is
|
|
40
|
+
// segmented.
|
|
41
|
+
//
|
|
42
|
+
// When dst_last is unreachable_sentinel_t the destination-full check
|
|
43
|
+
// is optimised away, giving the same code as an unbounded loop.
|
|
44
|
+
//
|
|
45
|
+
// Move (first template parameter): true = move, false = copy.
|
|
46
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
47
|
+
|
|
48
|
+
template <bool Move, class SrcIter, class Sent, class DstIter, class DstSent, class Pred, class DstTag, class SrcCat>
|
|
49
|
+
BOOST_CONTAINER_FORCEINLINE typename algo_enable_if_c<!DstTag::value, segduo<SrcIter, DstIter> >::type
|
|
50
|
+
segmented_remove_copy_if_dst_bounded
|
|
51
|
+
(SrcIter first, Sent last, DstIter dst_first, DstSent dst_last, Pred pred, DstTag, SrcCat)
|
|
52
|
+
{
|
|
53
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
54
|
+
for(; first != last; ++first) {
|
|
55
|
+
if(!pred(*first)) {
|
|
56
|
+
if(dst_first == dst_last)
|
|
57
|
+
goto out_path;
|
|
58
|
+
transfer_op<Move>::apply(*dst_first, *first);
|
|
59
|
+
++dst_first;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
out_path:
|
|
63
|
+
return segduo<SrcIter, DstIter>(first, dst_first);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
template <bool Move, class SrcIter, class Sent, class SegDstIter, class Pred, class SrcCat>
|
|
67
|
+
segduo<SrcIter, SegDstIter> segmented_remove_copy_if_dst_bounded
|
|
68
|
+
(SrcIter first, Sent last, SegDstIter dst_first, SegDstIter dst_last, Pred pred,
|
|
69
|
+
segmented_iterator_tag, SrcCat)
|
|
70
|
+
{
|
|
71
|
+
typedef segmented_iterator_traits<SegDstIter> dst_traits;
|
|
72
|
+
typedef typename dst_traits::local_iterator dst_local_iterator;
|
|
73
|
+
typedef typename dst_traits::segment_iterator dst_segment_iterator;
|
|
74
|
+
typedef typename segmented_iterator_traits<dst_local_iterator>::is_segmented_iterator dst_is_local_seg_t;
|
|
75
|
+
|
|
76
|
+
dst_segment_iterator sfirst = dst_traits::segment(dst_first);
|
|
77
|
+
const dst_segment_iterator slast = dst_traits::segment(dst_last);
|
|
78
|
+
|
|
79
|
+
if(sfirst == slast) {
|
|
80
|
+
segduo<SrcIter, dst_local_iterator> r = (segmented_remove_copy_if_dst_bounded<Move>)
|
|
81
|
+
(first, last, dst_traits::local(dst_first), dst_traits::local(dst_last), pred, dst_is_local_seg_t(), SrcCat());
|
|
82
|
+
return segduo<SrcIter, SegDstIter>(r.first, dst_traits::compose(sfirst, r.second));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
segduo<SrcIter, dst_local_iterator> r = (segmented_remove_copy_if_dst_bounded<Move>)
|
|
86
|
+
(first, last, dst_traits::local(dst_first), dst_traits::end(sfirst), pred, dst_is_local_seg_t(), SrcCat());
|
|
87
|
+
first = r.first;
|
|
88
|
+
if(first == last)
|
|
89
|
+
return segduo<SrcIter, SegDstIter>(first, dst_traits::compose(sfirst, r.second));
|
|
90
|
+
|
|
91
|
+
for(++sfirst; sfirst != slast; ++sfirst) {
|
|
92
|
+
r = (segmented_remove_copy_if_dst_bounded<Move>)
|
|
93
|
+
(first, last, dst_traits::begin(sfirst), dst_traits::end(sfirst), pred, dst_is_local_seg_t(), SrcCat());
|
|
94
|
+
first = r.first;
|
|
95
|
+
if(first == last)
|
|
96
|
+
return segduo<SrcIter, SegDstIter>(first, dst_traits::compose(sfirst, r.second));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
r = (segmented_remove_copy_if_dst_bounded<Move>)
|
|
100
|
+
(first, last, dst_traits::begin(slast), dst_traits::local(dst_last), pred, dst_is_local_seg_t(), SrcCat());
|
|
101
|
+
return segduo<SrcIter, SegDstIter>(r.first, dst_traits::compose(sfirst, r.second));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
106
|
+
// Destination dispatch: routes to bounded helper.
|
|
107
|
+
// Non-segmented destination: single unbounded call (unreachable_sentinel_t).
|
|
108
|
+
// Segmented destination: loop over destination segments, bounded per segment.
|
|
109
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
110
|
+
|
|
111
|
+
template <bool Move, class SrcIter, class Sent, class DstIter, class Pred, class Cat>
|
|
112
|
+
BOOST_CONTAINER_FORCEINLINE DstIter segmented_remove_copy_if_dst_dispatch
|
|
113
|
+
(SrcIter first, Sent last, DstIter result, Pred pred,
|
|
114
|
+
const non_segmented_iterator_tag &, Cat)
|
|
115
|
+
{
|
|
116
|
+
return (segmented_remove_copy_if_dst_bounded<Move>)
|
|
117
|
+
(first, last, result, unreachable_sentinel_t(), pred, non_segmented_iterator_tag(), Cat()).second;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
template <bool Move, class SrcIter, class Sent, class SegDstIter, class Pred, class Cat>
|
|
121
|
+
SegDstIter segmented_remove_copy_if_dst_dispatch
|
|
122
|
+
(SrcIter first, Sent last, SegDstIter result, Pred pred,
|
|
123
|
+
const segmented_iterator_tag &, Cat)
|
|
124
|
+
{
|
|
125
|
+
typedef segmented_iterator_traits<SegDstIter> dst_traits;
|
|
126
|
+
typedef typename dst_traits::local_iterator dst_local_iterator;
|
|
127
|
+
typedef typename dst_traits::segment_iterator dst_segment_iterator;
|
|
128
|
+
typedef typename segmented_iterator_traits<dst_local_iterator>::is_segmented_iterator dst_is_local_seg_t;
|
|
129
|
+
|
|
130
|
+
if(first == last)
|
|
131
|
+
return result;
|
|
132
|
+
|
|
133
|
+
dst_segment_iterator dst_seg = dst_traits::segment(result);
|
|
134
|
+
dst_local_iterator dst_local = dst_traits::local(result);
|
|
135
|
+
|
|
136
|
+
while(1) {
|
|
137
|
+
const dst_local_iterator dst_end = dst_traits::end(dst_seg);
|
|
138
|
+
const segduo<SrcIter, dst_local_iterator> r = (segmented_remove_copy_if_dst_bounded<Move>)
|
|
139
|
+
(first, last, dst_local, dst_end, pred, dst_is_local_seg_t(), Cat());
|
|
140
|
+
first = r.first;
|
|
141
|
+
if(first != last) {
|
|
142
|
+
++dst_seg;
|
|
143
|
+
dst_local = dst_traits::begin(dst_seg);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
dst_local = r.second;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return dst_traits::compose(dst_seg, dst_local);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
154
|
+
// Source dispatch: walks the source (read pointer) segments
|
|
155
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
156
|
+
|
|
157
|
+
template <bool Move, class SrcIter, class Sent, class OutIter, class Pred, class Tag, class Cat>
|
|
158
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
159
|
+
typename algo_enable_if_c<
|
|
160
|
+
!Tag::value || is_sentinel<Sent, SrcIter>::value, OutIter>::type
|
|
161
|
+
segmented_remove_copy_if_dispatch
|
|
162
|
+
(SrcIter first, Sent last, OutIter result, Pred pred, Tag, Cat)
|
|
163
|
+
{
|
|
164
|
+
#if !defined(BOOST_CONTAINER_DISABLE_MULTI_SEGMENTED_ALGO)
|
|
165
|
+
typedef segmented_iterator_traits<OutIter> dst_traits;
|
|
166
|
+
return (segmented_remove_copy_if_dst_dispatch<Move>)
|
|
167
|
+
(first, last, result, pred, typename dst_traits::is_segmented_iterator(), Cat());
|
|
168
|
+
#else
|
|
169
|
+
return (segmented_remove_copy_if_dst_dispatch<Move>)
|
|
170
|
+
(first, last, result, pred, non_segmented_iterator_tag(), Cat());
|
|
171
|
+
#endif
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
template <bool Move, class SegIter, class OutIter, class Pred, class Cat>
|
|
175
|
+
OutIter segmented_remove_copy_if_dispatch
|
|
176
|
+
(SegIter first, SegIter last, OutIter result, Pred pred, segmented_iterator_tag, Cat)
|
|
177
|
+
{
|
|
178
|
+
typedef segmented_iterator_traits<SegIter> src_traits;
|
|
179
|
+
typedef typename src_traits::local_iterator src_local_iterator;
|
|
180
|
+
typedef typename src_traits::segment_iterator src_segment_iterator;
|
|
181
|
+
typedef typename segmented_iterator_traits<src_local_iterator>::is_segmented_iterator src_is_local_seg_t;
|
|
182
|
+
typedef typename iterator_traits<src_local_iterator>::iterator_category src_local_cat_t;
|
|
183
|
+
|
|
184
|
+
src_segment_iterator sfirst = src_traits::segment(first);
|
|
185
|
+
const src_segment_iterator slast = src_traits::segment(last);
|
|
186
|
+
|
|
187
|
+
if(sfirst == slast) {
|
|
188
|
+
return (segmented_remove_copy_if_dispatch<Move>)
|
|
189
|
+
(src_traits::local(first), src_traits::local(last), result, pred, src_is_local_seg_t(), src_local_cat_t());
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
result = (segmented_remove_copy_if_dispatch<Move>)
|
|
193
|
+
(src_traits::local(first), src_traits::end(sfirst), result, pred, src_is_local_seg_t(), src_local_cat_t());
|
|
194
|
+
|
|
195
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
196
|
+
result = (segmented_remove_copy_if_dispatch<Move>)
|
|
197
|
+
(src_traits::begin(sfirst), src_traits::end(sfirst), result, pred, src_is_local_seg_t(), src_local_cat_t());
|
|
198
|
+
|
|
199
|
+
return (segmented_remove_copy_if_dispatch<Move>)
|
|
200
|
+
(src_traits::begin(slast), src_traits::local(last), result, pred, src_is_local_seg_t(), src_local_cat_t());
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
} // namespace detail_algo
|
|
205
|
+
|
|
206
|
+
//! Copies elements from [first, last) to the range beginning at \c result,
|
|
207
|
+
//! skipping elements satisfying \c pred. Returns the output iterator past
|
|
208
|
+
//! the last element written.
|
|
209
|
+
template <class InIter, class Sent, class OutIter, class Pred>
|
|
210
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
211
|
+
OutIter segmented_remove_copy_if(InIter first, Sent last, OutIter result, Pred pred)
|
|
212
|
+
{
|
|
213
|
+
typedef segmented_iterator_traits<InIter> traits;
|
|
214
|
+
return detail_algo::segmented_remove_copy_if_dispatch<false>
|
|
215
|
+
(first, last, result, pred, typename traits::is_segmented_iterator(), typename iterator_traits<InIter>::iterator_category());
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
} // namespace container
|
|
219
|
+
} // namespace boost
|
|
220
|
+
|
|
221
|
+
#include <boost/container/detail/config_end.hpp>
|
|
222
|
+
|
|
223
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_COPY_IF_HPP
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// (C) Copyright Ion Gaztanaga 2025-2026. Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
6
|
+
//
|
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
|
8
|
+
//
|
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
10
|
+
#ifndef BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_IF_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_IF_HPP
|
|
12
|
+
|
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
|
14
|
+
# include <boost/config.hpp>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
18
|
+
# pragma once
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <boost/container/detail/config_begin.hpp>
|
|
22
|
+
#include <boost/container/detail/workaround.hpp>
|
|
23
|
+
#include <boost/container/experimental/segmented_remove_copy_if.hpp>
|
|
24
|
+
#include <boost/container/experimental/segmented_find_if.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
//! Removes all elements for which \c pred returns true from [first, last),
|
|
30
|
+
//! moving retained elements forward. Returns iterator to new end.
|
|
31
|
+
template <class FwdIt, class Sent, class Predicate>
|
|
32
|
+
FwdIt segmented_remove_if(FwdIt first, Sent last, Predicate pred)
|
|
33
|
+
{
|
|
34
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
35
|
+
first = detail_algo::segmented_find_if_dispatch
|
|
36
|
+
(first, last, pred
|
|
37
|
+
, typename traits::is_segmented_iterator()
|
|
38
|
+
, typename iterator_traits<FwdIt>::iterator_category());
|
|
39
|
+
|
|
40
|
+
if(first == last)
|
|
41
|
+
return last;
|
|
42
|
+
|
|
43
|
+
FwdIt next = first;
|
|
44
|
+
++next;
|
|
45
|
+
|
|
46
|
+
return detail_algo::segmented_remove_copy_if_dispatch<true>
|
|
47
|
+
(next, last, first, pred,
|
|
48
|
+
typename traits::is_segmented_iterator(),
|
|
49
|
+
typename iterator_traits<FwdIt>::iterator_category());
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
} // namespace container
|
|
53
|
+
} // namespace boost
|
|
54
|
+
|
|
55
|
+
#include <boost/container/detail/config_end.hpp>
|
|
56
|
+
|
|
57
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_IF_HPP
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// (C) Copyright Ion Gaztanaga 2025-2026. Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
6
|
+
//
|
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
|
8
|
+
//
|
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
10
|
+
#ifndef BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REPLACE_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REPLACE_HPP
|
|
12
|
+
|
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
|
14
|
+
# include <boost/config.hpp>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
18
|
+
# pragma once
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <boost/container/detail/config_begin.hpp>
|
|
22
|
+
#include <boost/container/detail/workaround.hpp>
|
|
23
|
+
#include <boost/container/experimental/segmented_iterator_traits.hpp>
|
|
24
|
+
#include <boost/container/detail/iterator.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
template <class FwdIt, class Sent, class T>
|
|
30
|
+
void segmented_replace(FwdIt first, Sent last, const T& BOOST_RESTRICT old_val, const T& BOOST_RESTRICT new_val);
|
|
31
|
+
|
|
32
|
+
namespace detail_algo {
|
|
33
|
+
|
|
34
|
+
template <class FwdIt, class Sent, class T, class Tag, class Cat>
|
|
35
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
36
|
+
typename algo_enable_if_c<
|
|
37
|
+
!Tag::value || is_sentinel<Sent, FwdIt>::value>::type
|
|
38
|
+
segmented_replace_dispatch(FwdIt first, Sent last, const T& BOOST_RESTRICT old_val, const T& BOOST_RESTRICT new_val, Tag, Cat)
|
|
39
|
+
{
|
|
40
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
41
|
+
for(; first != last; ++first)
|
|
42
|
+
if(*first == old_val)
|
|
43
|
+
*first = new_val;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
template <class SegIter, class T, class Cat>
|
|
47
|
+
void segmented_replace_dispatch
|
|
48
|
+
(SegIter first, SegIter last, const T& BOOST_RESTRICT old_val, const T& BOOST_RESTRICT new_val, segmented_iterator_tag, Cat)
|
|
49
|
+
{
|
|
50
|
+
|
|
51
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
52
|
+
typedef typename traits::local_iterator local_iterator;
|
|
53
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
54
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
55
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
56
|
+
|
|
57
|
+
segment_iterator sfirst = traits::segment(first);
|
|
58
|
+
segment_iterator slast = traits::segment(last);
|
|
59
|
+
|
|
60
|
+
if(sfirst == slast) {
|
|
61
|
+
(segmented_replace_dispatch)(traits::local(first), traits::local(last), old_val, new_val, is_local_seg_t(), local_cat_t());
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
(segmented_replace_dispatch)(traits::local(first), traits::end(sfirst), old_val, new_val, is_local_seg_t(), local_cat_t());
|
|
65
|
+
|
|
66
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
67
|
+
(segmented_replace_dispatch)(traits::begin(sfirst), traits::end(sfirst), old_val, new_val, is_local_seg_t(), local_cat_t());
|
|
68
|
+
|
|
69
|
+
(segmented_replace_dispatch)(traits::begin(sfirst), traits::local(last), old_val, new_val, is_local_seg_t(), local_cat_t());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
} // namespace detail_algo
|
|
74
|
+
|
|
75
|
+
//! Replaces every occurrence of \c old_val with \c new_val in [first, last).
|
|
76
|
+
template <class FwdIt, class Sent, class T>
|
|
77
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
78
|
+
void segmented_replace(FwdIt first, Sent last, const T& BOOST_RESTRICT old_val, const T& BOOST_RESTRICT new_val)
|
|
79
|
+
{
|
|
80
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
81
|
+
detail_algo::segmented_replace_dispatch
|
|
82
|
+
(first, last, old_val, new_val, typename traits::is_segmented_iterator(), typename iterator_traits<FwdIt>::iterator_category());
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
} // namespace container
|
|
86
|
+
} // namespace boost
|
|
87
|
+
|
|
88
|
+
#include <boost/container/detail/config_end.hpp>
|
|
89
|
+
|
|
90
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REPLACE_HPP
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// (C) Copyright Ion Gaztanaga 2025-2026. Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
6
|
+
//
|
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
|
8
|
+
//
|
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
10
|
+
#ifndef BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REPLACE_IF_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REPLACE_IF_HPP
|
|
12
|
+
|
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
|
14
|
+
# include <boost/config.hpp>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
18
|
+
# pragma once
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <boost/container/detail/config_begin.hpp>
|
|
22
|
+
#include <boost/container/detail/workaround.hpp>
|
|
23
|
+
#include <boost/container/experimental/segmented_iterator_traits.hpp>
|
|
24
|
+
#include <boost/container/detail/iterator.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
template <class FwdIt, class Sent, class Pred, class T>
|
|
30
|
+
void segmented_replace_if(FwdIt first, Sent last, Pred pred, const T& BOOST_RESTRICT new_val);
|
|
31
|
+
|
|
32
|
+
namespace detail_algo {
|
|
33
|
+
|
|
34
|
+
template <class FwdIt, class Sent, class Pred, class T, class Tag, class Cat>
|
|
35
|
+
typename algo_enable_if_c<
|
|
36
|
+
!Tag::value || is_sentinel<Sent, FwdIt>::value>::type
|
|
37
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
38
|
+
segmented_replace_if_dispatch(FwdIt first, Sent last, Pred pred, const T& BOOST_RESTRICT new_val, Tag, Cat)
|
|
39
|
+
{
|
|
40
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
41
|
+
for(; first != last; ++first)
|
|
42
|
+
if(pred(*first))
|
|
43
|
+
*first = new_val;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
template <class SegIter, class Pred, class T, class Cat>
|
|
47
|
+
void segmented_replace_if_dispatch
|
|
48
|
+
(SegIter first, SegIter last, Pred pred, const T& BOOST_RESTRICT new_val, segmented_iterator_tag, Cat)
|
|
49
|
+
{
|
|
50
|
+
|
|
51
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
52
|
+
typedef typename traits::local_iterator local_iterator;
|
|
53
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
54
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
55
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
56
|
+
|
|
57
|
+
segment_iterator sfirst = traits::segment(first);
|
|
58
|
+
segment_iterator slast = traits::segment(last);
|
|
59
|
+
|
|
60
|
+
if(sfirst == slast) {
|
|
61
|
+
(segmented_replace_if_dispatch)(traits::local(first), traits::local(last), pred, new_val, is_local_seg_t(), local_cat_t());
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
(segmented_replace_if_dispatch)(traits::local(first), traits::end(sfirst), pred, new_val, is_local_seg_t(), local_cat_t());
|
|
65
|
+
|
|
66
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
67
|
+
(segmented_replace_if_dispatch)(traits::begin(sfirst), traits::end(sfirst), pred, new_val, is_local_seg_t(), local_cat_t());
|
|
68
|
+
|
|
69
|
+
(segmented_replace_if_dispatch)(traits::begin(sfirst), traits::local(last), pred, new_val, is_local_seg_t(), local_cat_t());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
} // namespace detail_algo
|
|
74
|
+
|
|
75
|
+
//! Replaces every element satisfying \c pred with \c new_val in [first, last).
|
|
76
|
+
template <class FwdIt, class Sent, class Pred, class T>
|
|
77
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
78
|
+
void segmented_replace_if(FwdIt first, Sent last, Pred pred, const T& BOOST_RESTRICT new_val)
|
|
79
|
+
{
|
|
80
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
81
|
+
detail_algo::segmented_replace_if_dispatch
|
|
82
|
+
(first, last, pred, new_val, typename traits::is_segmented_iterator(), typename iterator_traits<FwdIt>::iterator_category());
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
} // namespace container
|
|
86
|
+
} // namespace boost
|
|
87
|
+
|
|
88
|
+
#include <boost/container/detail/config_end.hpp>
|
|
89
|
+
|
|
90
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REPLACE_IF_HPP
|