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
|
@@ -0,0 +1,296 @@
|
|
|
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_PARTITION_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_PARTITION_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/experimental/segmented_find_if_not.hpp>
|
|
25
|
+
#include <boost/container/experimental/segmented_find_last_if.hpp>
|
|
26
|
+
#include <boost/move/adl_move_swap.hpp>
|
|
27
|
+
#include <boost/container/detail/iterator.hpp>
|
|
28
|
+
|
|
29
|
+
namespace boost {
|
|
30
|
+
namespace container {
|
|
31
|
+
|
|
32
|
+
template <class FwdIt, class Sent, class Pred>
|
|
33
|
+
FwdIt segmented_partition(FwdIt first, Sent last, Pred pred);
|
|
34
|
+
|
|
35
|
+
namespace detail_algo {
|
|
36
|
+
|
|
37
|
+
//////////////////////////////////////////////
|
|
38
|
+
// Forward (Lomuto-style) partition
|
|
39
|
+
//////////////////////////////////////////////
|
|
40
|
+
|
|
41
|
+
template <class FwdIt, class Sent, class OutIter, class Pred>
|
|
42
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
43
|
+
OutIter partition_scan(FwdIt first, Sent last, OutIter result, Pred pred, non_segmented_iterator_tag, const std::forward_iterator_tag &)
|
|
44
|
+
{
|
|
45
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
46
|
+
for(; first != last; ++first) {
|
|
47
|
+
if(pred(*first)) {
|
|
48
|
+
boost::adl_move_swap(*result, *first);
|
|
49
|
+
++result;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
template <class SegIt, class OutIter, class Pred, class Cat>
|
|
56
|
+
OutIter partition_scan(SegIt first, SegIt last, OutIter result, Pred pred, segmented_iterator_tag, const Cat &)
|
|
57
|
+
{
|
|
58
|
+
typedef segmented_iterator_traits<SegIt> traits;
|
|
59
|
+
typedef typename traits::local_iterator local_iterator;
|
|
60
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
61
|
+
|
|
62
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
63
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
64
|
+
segment_iterator scur = traits::segment(first);
|
|
65
|
+
segment_iterator slast = traits::segment(last);
|
|
66
|
+
local_iterator lcur = traits::local(first);
|
|
67
|
+
|
|
68
|
+
if(scur == slast) {
|
|
69
|
+
return partition_scan(lcur, traits::local(last), result, pred, is_local_seg_t(), local_cat_t());
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
result = partition_scan(lcur, traits::end(scur), result, pred, is_local_seg_t(), local_cat_t());
|
|
73
|
+
|
|
74
|
+
for(++scur; scur != slast; ++scur)
|
|
75
|
+
result = partition_scan(traits::begin(scur), traits::end(scur), result, pred, is_local_seg_t(), local_cat_t());
|
|
76
|
+
|
|
77
|
+
return partition_scan(traits::begin(scur), traits::local(last), result, pred, is_local_seg_t(), local_cat_t());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template <class FwdIt, class Sent, class Pred, class Tag>
|
|
82
|
+
FwdIt segmented_partition_dispatch(FwdIt first, Sent last, Pred pred, Tag tag, const std::forward_iterator_tag &cat)
|
|
83
|
+
{
|
|
84
|
+
first = (segmented_find_if_not)(first, last, pred);
|
|
85
|
+
if (first == last)
|
|
86
|
+
return first;
|
|
87
|
+
FwdIt next = first;
|
|
88
|
+
++next;
|
|
89
|
+
return (partition_scan)(next, last, first, pred, tag, cat);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//////////////////////////////////////////////
|
|
93
|
+
// Bidirectional (Hoare-style) partition
|
|
94
|
+
//////////////////////////////////////////////
|
|
95
|
+
|
|
96
|
+
template <class BidirIt, class Pred, class Cat>
|
|
97
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
98
|
+
BidirIt partition_scan(BidirIt first, BidirIt last, Pred pred, non_segmented_iterator_tag, const Cat&)
|
|
99
|
+
{
|
|
100
|
+
while (true) {
|
|
101
|
+
BOOST_CONTAINER_UNROLL(4)
|
|
102
|
+
for (; first != last; ++first) {
|
|
103
|
+
if (!pred(*first))
|
|
104
|
+
goto back_search;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
break;
|
|
108
|
+
back_search:
|
|
109
|
+
|
|
110
|
+
BOOST_CONTAINER_UNROLL(4)
|
|
111
|
+
do {
|
|
112
|
+
if (first == --last)
|
|
113
|
+
goto ret_first;
|
|
114
|
+
} while (!pred(*last));
|
|
115
|
+
|
|
116
|
+
boost::adl_move_swap(*first, *last);
|
|
117
|
+
++first;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
ret_first:
|
|
121
|
+
return first;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Hoare-style partition on two non-overlapping ranges [f, f_end) (forward) and [l_beg, l) (backward).
|
|
125
|
+
// Returns segduo with the final positions of f and l. // At least one side is fully consumed on return.
|
|
126
|
+
|
|
127
|
+
template <class It, class Pred, class Cat>
|
|
128
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
129
|
+
segduo<It, It> partition_disjoint_bidir_ranges
|
|
130
|
+
(It f, It const f_end, It const l_beg, It l, Pred pred, non_segmented_iterator_tag, const Cat &)
|
|
131
|
+
{
|
|
132
|
+
while (true) {
|
|
133
|
+
BOOST_CONTAINER_UNROLL(4)
|
|
134
|
+
for (; f != f_end; ++f) {
|
|
135
|
+
if (!pred(*f))
|
|
136
|
+
goto back_search;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
goto duo_ret;
|
|
140
|
+
|
|
141
|
+
back_search:
|
|
142
|
+
if (l != l_beg) {
|
|
143
|
+
BOOST_CONTAINER_UNROLL(4)
|
|
144
|
+
do {
|
|
145
|
+
if (pred(*(--l)))
|
|
146
|
+
goto swap_step;
|
|
147
|
+
} while (l != l_beg);
|
|
148
|
+
}
|
|
149
|
+
goto duo_ret;
|
|
150
|
+
|
|
151
|
+
swap_step:
|
|
152
|
+
boost::adl_move_swap(*f, *l);
|
|
153
|
+
++f;
|
|
154
|
+
}
|
|
155
|
+
duo_ret:
|
|
156
|
+
return segduo<It, It>(f, l);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
template <class It, class Pred, class Cat>
|
|
160
|
+
segduo<It, It> partition_disjoint_bidir_ranges(It f, It f_end, It l_beg, It l, Pred pred, segmented_iterator_tag, const Cat&)
|
|
161
|
+
{
|
|
162
|
+
typedef segmented_iterator_traits<It> traits;
|
|
163
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
164
|
+
typedef typename traits::local_iterator local_iterator;
|
|
165
|
+
typedef typename segmented_iterator_traits
|
|
166
|
+
<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
167
|
+
typedef typename iterator_traits
|
|
168
|
+
<local_iterator>::iterator_category local_cat_t;
|
|
169
|
+
|
|
170
|
+
if (f == f_end || l == l_beg)
|
|
171
|
+
return segduo<It, It>(f, l);
|
|
172
|
+
|
|
173
|
+
segment_iterator fs = traits::segment(f);
|
|
174
|
+
const segment_iterator fs_end = traits::segment(f_end);
|
|
175
|
+
local_iterator fi = traits::local(f);
|
|
176
|
+
local_iterator fi_end = (fs == fs_end) ? traits::local(f_end) : traits::end(fs);
|
|
177
|
+
|
|
178
|
+
segment_iterator ls = traits::segment(l);
|
|
179
|
+
const segment_iterator ls_beg = traits::segment(l_beg);
|
|
180
|
+
local_iterator li = traits::local(l);
|
|
181
|
+
local_iterator li_beg = (ls == ls_beg) ? traits::local(l_beg) : traits::begin(ls);
|
|
182
|
+
|
|
183
|
+
while (true) {
|
|
184
|
+
segduo<local_iterator, local_iterator> r =
|
|
185
|
+
partition_disjoint_bidir_ranges(fi, fi_end, li_beg, li, pred, is_local_seg_t(), local_cat_t());
|
|
186
|
+
fi = r.first;
|
|
187
|
+
li = r.second;
|
|
188
|
+
|
|
189
|
+
if (fi == fi_end) {
|
|
190
|
+
if (fs == fs_end)
|
|
191
|
+
return segduo<It, It>(f_end, traits::compose(ls, li));
|
|
192
|
+
++fs;
|
|
193
|
+
fi = traits::begin(fs);
|
|
194
|
+
fi_end = (fs == fs_end) ? traits::local(f_end) : traits::end(fs);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (li == li_beg) {
|
|
198
|
+
if (ls == ls_beg)
|
|
199
|
+
return segduo<It, It>(traits::compose(fs, fi), l_beg);
|
|
200
|
+
--ls;
|
|
201
|
+
li = traits::end(ls);
|
|
202
|
+
li_beg = (ls == ls_beg) ? traits::local(l_beg) : traits::begin(ls);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
template <class SegIt, class Pred>
|
|
208
|
+
SegIt partition_scan(SegIt first, SegIt last, Pred pred, segmented_iterator_tag, const std::bidirectional_iterator_tag&)
|
|
209
|
+
{
|
|
210
|
+
typedef segmented_iterator_traits<SegIt> traits;
|
|
211
|
+
typedef typename traits::local_iterator local_iterator;
|
|
212
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
213
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
214
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
215
|
+
|
|
216
|
+
segment_iterator sf = traits::segment(first);
|
|
217
|
+
segment_iterator sl = traits::segment(last);
|
|
218
|
+
local_iterator f_loc = traits::local(first);
|
|
219
|
+
local_iterator l_loc = traits::local(last);
|
|
220
|
+
|
|
221
|
+
if (sf != sl) {
|
|
222
|
+
local_iterator f_end = traits::end(sf);
|
|
223
|
+
local_iterator l_beg = traits::begin(sl);
|
|
224
|
+
|
|
225
|
+
while (true) {
|
|
226
|
+
segduo<local_iterator, local_iterator> r =
|
|
227
|
+
partition_disjoint_bidir_ranges(f_loc, f_end, l_beg, l_loc, pred, is_local_seg_t(), local_cat_t());
|
|
228
|
+
f_loc = r.first;
|
|
229
|
+
l_loc = r.second;
|
|
230
|
+
|
|
231
|
+
if (l_loc == l_beg) {
|
|
232
|
+
if (f_loc == f_end) {
|
|
233
|
+
++sf;
|
|
234
|
+
if (sf == sl) {
|
|
235
|
+
return traits::compose(sf, l_beg);
|
|
236
|
+
}
|
|
237
|
+
f_loc = traits::begin(sf);
|
|
238
|
+
f_end = traits::end(sf);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
--sl;
|
|
242
|
+
if (sf == sl) {
|
|
243
|
+
l_loc = f_end;
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
l_beg = traits::begin(sl);
|
|
247
|
+
l_loc = traits::end(sl);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
++sf;
|
|
251
|
+
if (sf == sl) {
|
|
252
|
+
f_loc = l_beg;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
f_loc = traits::begin(sf);
|
|
256
|
+
f_end = traits::end(sf);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return traits::compose(sf, partition_scan(f_loc, l_loc, pred, is_local_seg_t(), local_cat_t()));
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
template <class FwdIt, class Sent, class Pred, class Tag, class Cat>
|
|
265
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
266
|
+
FwdIt segmented_partition_dispatch(FwdIt first, Sent last, Pred pred, Tag tag, const Cat& cat)
|
|
267
|
+
{
|
|
268
|
+
return (partition_scan)(first, last, pred, tag, cat);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
} // namespace detail_algo
|
|
272
|
+
|
|
273
|
+
//! Reorders elements in [first, last) so that elements satisfying
|
|
274
|
+
//! \c pred come before those that do not.
|
|
275
|
+
//! For forward iterators, uses a Lomuto-style scan.
|
|
276
|
+
//! For bidirectional (or stronger) iterators, uses a Hoare-style
|
|
277
|
+
//! partition that swaps from both ends, reducing the number of swaps.
|
|
278
|
+
//! Returns an iterator to the partition point.
|
|
279
|
+
template <class FwdIt, class Sent, class Pred>
|
|
280
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
281
|
+
FwdIt segmented_partition(FwdIt first, Sent last, Pred pred)
|
|
282
|
+
{
|
|
283
|
+
typedef detail_algo::sent_filter<FwdIt, Sent> sf;
|
|
284
|
+
|
|
285
|
+
return detail_algo::segmented_partition_dispatch
|
|
286
|
+
( first, last, pred
|
|
287
|
+
, typename sf::seg_t()
|
|
288
|
+
, typename sf::cat_t());
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
} // namespace container
|
|
292
|
+
} // namespace boost
|
|
293
|
+
|
|
294
|
+
#include <boost/container/detail/config_end.hpp>
|
|
295
|
+
|
|
296
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_PARTITION_HPP
|
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
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_PARTITION_COPY_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_PARTITION_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 <utility>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace container {
|
|
29
|
+
|
|
30
|
+
template <class InIter, class Sent, class OutIter1, class OutIter2, class Pred>
|
|
31
|
+
std::pair<OutIter1, OutIter2>
|
|
32
|
+
segmented_partition_copy(InIter first, Sent last, OutIter1 out_true, OutIter2 out_false, Pred pred);
|
|
33
|
+
|
|
34
|
+
namespace detail_algo {
|
|
35
|
+
|
|
36
|
+
template <class InIter, class Sent, class OutIter1, class OutIter2, class Pred, class Tag, class Cat>
|
|
37
|
+
typename algo_enable_if_c<
|
|
38
|
+
!Tag::value || is_sentinel<Sent, InIter>::value, std::pair<OutIter1, OutIter2> >::type
|
|
39
|
+
segmented_partition_copy_dispatch
|
|
40
|
+
(InIter first, Sent last, OutIter1 out_true, OutIter2 out_false, Pred pred, Tag, Cat)
|
|
41
|
+
{
|
|
42
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
43
|
+
for(; first != last; ++first) {
|
|
44
|
+
if(pred(*first)) {
|
|
45
|
+
*out_true = *first;
|
|
46
|
+
++out_true;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
*out_false = *first;
|
|
50
|
+
++out_false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return std::pair<OutIter1, OutIter2>(out_true, out_false);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <class SegIter, class OutIter1, class OutIter2, class Pred, class Cat>
|
|
57
|
+
std::pair<OutIter1, OutIter2>
|
|
58
|
+
segmented_partition_copy_dispatch
|
|
59
|
+
(SegIter first, SegIter last, OutIter1 out_true, OutIter2 out_false, Pred pred, segmented_iterator_tag, Cat)
|
|
60
|
+
{
|
|
61
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
62
|
+
typedef typename traits::local_iterator local_iterator;
|
|
63
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
64
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
65
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
66
|
+
typedef std::pair<OutIter1, OutIter2> pair_t;
|
|
67
|
+
|
|
68
|
+
segment_iterator sfirst = traits::segment(first);
|
|
69
|
+
segment_iterator slast = traits::segment(last);
|
|
70
|
+
|
|
71
|
+
if(sfirst == slast) {
|
|
72
|
+
return (segmented_partition_copy_dispatch)(traits::local(first), traits::local(last), out_true, out_false, pred, is_local_seg_t(), local_cat_t());
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
pair_t p = (segmented_partition_copy_dispatch)(traits::local(first), traits::end(sfirst), out_true, out_false, pred, is_local_seg_t(), local_cat_t());
|
|
76
|
+
|
|
77
|
+
for(++sfirst; sfirst != slast; ++sfirst) {
|
|
78
|
+
p = (segmented_partition_copy_dispatch)(traits::begin(sfirst), traits::end(sfirst), p.first, p.second, pred, is_local_seg_t(), local_cat_t());
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return (segmented_partition_copy_dispatch)(traits::begin(sfirst), traits::local(last), p.first, p.second, pred, is_local_seg_t(), local_cat_t());
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
} // namespace detail_algo
|
|
86
|
+
|
|
87
|
+
//! Copies elements from [first, last) to one of two output ranges
|
|
88
|
+
//! depending on whether \c pred returns true or false.
|
|
89
|
+
//! Returns a pair of output iterators past the last elements written.
|
|
90
|
+
template <class InIter, class Sent, class OutIter1, class OutIter2, class Pred>
|
|
91
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
92
|
+
std::pair<OutIter1, OutIter2>
|
|
93
|
+
segmented_partition_copy(InIter first, Sent last, OutIter1 out_true, OutIter2 out_false, Pred pred)
|
|
94
|
+
{
|
|
95
|
+
typedef segmented_iterator_traits<InIter> traits;
|
|
96
|
+
return detail_algo::segmented_partition_copy_dispatch
|
|
97
|
+
(first, last, out_true, out_false, pred, typename traits::is_segmented_iterator(), typename iterator_traits<InIter>::iterator_category());
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
} // namespace container
|
|
101
|
+
} // namespace boost
|
|
102
|
+
|
|
103
|
+
#include <boost/container/detail/config_end.hpp>
|
|
104
|
+
|
|
105
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_PARTITION_COPY_HPP
|
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
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_PARTITION_POINT_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_PARTITION_POINT_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/iterators.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
template <class FwdIt, class Sent, class Predicate>
|
|
30
|
+
FwdIt segmented_partition_point(FwdIt first, Sent last, Predicate pred);
|
|
31
|
+
|
|
32
|
+
namespace detail_algo {
|
|
33
|
+
|
|
34
|
+
template <class FwdIt, class Sent, class Predicate, class Tag, class Cat>
|
|
35
|
+
typename algo_enable_if_c<
|
|
36
|
+
!Tag::value || is_sentinel<Sent, FwdIt>::value, FwdIt>::type
|
|
37
|
+
segmented_partition_point_dispatch
|
|
38
|
+
(FwdIt first, Sent last, Predicate pred, Tag, Cat)
|
|
39
|
+
{
|
|
40
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
41
|
+
for(; first != last; ++first)
|
|
42
|
+
if(!pred(*first))
|
|
43
|
+
return first;
|
|
44
|
+
return last;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
template <class SegIter, class Predicate, class Cat>
|
|
48
|
+
SegIter segmented_partition_point_dispatch
|
|
49
|
+
(SegIter first, SegIter last, Predicate pred, segmented_iterator_tag, Cat)
|
|
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
|
|
55
|
+
<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
56
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
57
|
+
|
|
58
|
+
segment_iterator scur = traits::segment(first);
|
|
59
|
+
segment_iterator const slast = traits::segment(last);
|
|
60
|
+
|
|
61
|
+
if(scur == slast) {
|
|
62
|
+
const local_iterator ll = traits::local(last);
|
|
63
|
+
const local_iterator r = (segmented_partition_point_dispatch)
|
|
64
|
+
(traits::local(first), ll, pred, is_local_seg_t(), local_cat_t());
|
|
65
|
+
if (r != ll)
|
|
66
|
+
return traits::compose(scur, r);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
{ //first segment
|
|
70
|
+
const local_iterator le = traits::end(scur);
|
|
71
|
+
const local_iterator r = (segmented_partition_point_dispatch)
|
|
72
|
+
(traits::local(first), le, pred, is_local_seg_t(), local_cat_t());
|
|
73
|
+
if (r != le)
|
|
74
|
+
return traits::compose(scur, r);
|
|
75
|
+
}
|
|
76
|
+
//middle segments
|
|
77
|
+
for(++scur; scur != slast; ++scur) {
|
|
78
|
+
const local_iterator le = traits::end(scur);
|
|
79
|
+
const local_iterator r = (segmented_partition_point_dispatch)
|
|
80
|
+
(traits::begin(scur), le, pred, is_local_seg_t(), local_cat_t());
|
|
81
|
+
if (r != le)
|
|
82
|
+
return traits::compose(scur, r);
|
|
83
|
+
}
|
|
84
|
+
{ //last segment
|
|
85
|
+
const local_iterator ll = traits::local(last);
|
|
86
|
+
const local_iterator r = (segmented_partition_point_dispatch)
|
|
87
|
+
(traits::begin(scur), ll, pred, is_local_seg_t(), local_cat_t());
|
|
88
|
+
if (r != ll)
|
|
89
|
+
return traits::compose(scur, r);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return last;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
} // namespace detail_algo
|
|
96
|
+
|
|
97
|
+
//! Note: This version is suboptimal, and does not fulfill OlogN comparisons
|
|
98
|
+
//!
|
|
99
|
+
//! Finds the partition point in [first, last): the first element
|
|
100
|
+
//! for which \c pred returns false. The range must be partitioned
|
|
101
|
+
//! with respect to \c pred.
|
|
102
|
+
template <class FwdIt, class Sent, class Predicate>
|
|
103
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
104
|
+
FwdIt segmented_partition_point(FwdIt first, Sent last, Predicate pred)
|
|
105
|
+
{
|
|
106
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
107
|
+
return detail_algo::segmented_partition_point_dispatch
|
|
108
|
+
(first, last, pred, typename traits::is_segmented_iterator(), typename iterator_traits<FwdIt>::iterator_category());
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
} // namespace container
|
|
112
|
+
} // namespace boost
|
|
113
|
+
|
|
114
|
+
#include <boost/container/detail/config_end.hpp>
|
|
115
|
+
|
|
116
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_PARTITION_POINT_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_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_REMOVE_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_find.hpp>
|
|
24
|
+
#include <boost/container/experimental/segmented_remove_copy.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
//! Removes all elements equal to \c value from [first, last),
|
|
30
|
+
//! moving retained elements forward. Returns iterator to new end.
|
|
31
|
+
template <class FwdIt, class Sent, class T>
|
|
32
|
+
FwdIt segmented_remove(FwdIt first, Sent last, const T& value)
|
|
33
|
+
{
|
|
34
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
35
|
+
first = detail_algo::segmented_find_dispatch
|
|
36
|
+
(first, last, value
|
|
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_dispatch<true>
|
|
47
|
+
(next, last, first, value,
|
|
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_HPP
|