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,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_GENERATE_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_GENERATE_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 FwdIt, class Sent, class Generator>
|
|
31
|
+
void segmented_generate(FwdIt first, Sent last, Generator gen);
|
|
32
|
+
|
|
33
|
+
namespace detail_algo {
|
|
34
|
+
|
|
35
|
+
template <class FwdIt, class Sent, class Generator, class Tag, class Cat>
|
|
36
|
+
BOOST_CONTAINER_FORCEINLINE typename algo_enable_if_c<
|
|
37
|
+
!Tag::value || is_sentinel<Sent, FwdIt>::value>::type
|
|
38
|
+
segmented_generate_dispatch(FwdIt first, const Sent last, Generator & BOOST_RESTRICT gen, Tag, Cat)
|
|
39
|
+
{
|
|
40
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
41
|
+
for(; first != last; ++first)
|
|
42
|
+
*first = gen();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
template <class SegIter, class Generator, class Cat>
|
|
46
|
+
void segmented_generate_dispatch
|
|
47
|
+
(SegIter first, SegIter last, Generator & BOOST_RESTRICT gen, segmented_iterator_tag, Cat)
|
|
48
|
+
{
|
|
49
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
50
|
+
typedef typename traits::local_iterator local_iterator;
|
|
51
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
52
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
53
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
54
|
+
|
|
55
|
+
segment_iterator sfirst = traits::segment(first);
|
|
56
|
+
segment_iterator slast = traits::segment(last);
|
|
57
|
+
|
|
58
|
+
if(sfirst == slast) {
|
|
59
|
+
(segmented_generate_dispatch)(traits::local(first), traits::local(last), gen, is_local_seg_t(), local_cat_t());
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
(segmented_generate_dispatch)(traits::local(first), traits::end(sfirst), gen, is_local_seg_t(), local_cat_t());
|
|
63
|
+
|
|
64
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
65
|
+
(segmented_generate_dispatch)(traits::begin(sfirst), traits::end(sfirst), gen, is_local_seg_t(), local_cat_t());
|
|
66
|
+
|
|
67
|
+
(segmented_generate_dispatch)(traits::begin(sfirst), traits::local(last), gen, is_local_seg_t(), local_cat_t());
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
} // namespace detail_algo
|
|
72
|
+
|
|
73
|
+
//! Assigns the result of successive calls to \c gen to each
|
|
74
|
+
//! element in [first, last).
|
|
75
|
+
//! Generator state is preserved across segment boundaries.
|
|
76
|
+
template <class FwdIt, class Sent, class Generator>
|
|
77
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
78
|
+
void segmented_generate(FwdIt first, Sent last, Generator gen)
|
|
79
|
+
{
|
|
80
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
81
|
+
detail_algo::segmented_generate_dispatch
|
|
82
|
+
(first, last, gen, 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_GENERATE_HPP
|
|
@@ -0,0 +1,162 @@
|
|
|
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_GENERATE_N_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_GENERATE_N_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
|
+
#include <boost/container/detail/std_fwd.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace container {
|
|
29
|
+
|
|
30
|
+
template <class OutIt, class Size, class Generator>
|
|
31
|
+
OutIt segmented_generate_n(OutIt first, Size count, Generator gen);
|
|
32
|
+
|
|
33
|
+
namespace detail_algo {
|
|
34
|
+
|
|
35
|
+
template <class OutIter, class Size, class Generator>
|
|
36
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
37
|
+
segduo<OutIter, Size> generate_n_scan
|
|
38
|
+
( OutIter first, OutIter last, Size count
|
|
39
|
+
, Generator &BOOST_RESTRICT gen, non_segmented_iterator_tag, const std::random_access_iterator_tag &)
|
|
40
|
+
{
|
|
41
|
+
const Size range_sz = static_cast<Size>(last - first);
|
|
42
|
+
|
|
43
|
+
const Size length = count < (Size)range_sz ? count : (Size)range_sz;
|
|
44
|
+
count -= length;
|
|
45
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
46
|
+
for (Size cnt = 0; cnt != length; ++first, ++cnt){
|
|
47
|
+
*first = gen();
|
|
48
|
+
}
|
|
49
|
+
return segduo<OutIter, Size>(first, count);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
template <class OutIter, class Size, class Generator, class Cat>
|
|
53
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
54
|
+
segduo<OutIter, Size> generate_n_scan
|
|
55
|
+
(OutIter first, OutIter last, Size count, Generator &BOOST_RESTRICT gen, non_segmented_iterator_tag, const Cat &)
|
|
56
|
+
{
|
|
57
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
58
|
+
for (; count > 0 && first != last; ++first, --count)
|
|
59
|
+
*first = gen();
|
|
60
|
+
|
|
61
|
+
return segduo<OutIter, Size>(first, count);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
template <class SegIt, class Size, class Generator, class Cat>
|
|
65
|
+
segduo<SegIt, Size> generate_n_scan(SegIt first, SegIt last, Size count, Generator& BOOST_RESTRICT gen, segmented_iterator_tag, const Cat &)
|
|
66
|
+
{
|
|
67
|
+
typedef segmented_iterator_traits<SegIt> traits;
|
|
68
|
+
typedef typename traits::local_iterator local_iterator;
|
|
69
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
70
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
71
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
72
|
+
|
|
73
|
+
segment_iterator scur = traits::segment(first);
|
|
74
|
+
segment_iterator const slast = traits::segment(last);
|
|
75
|
+
|
|
76
|
+
if(scur == slast) {
|
|
77
|
+
const local_iterator ll = traits::local(last);
|
|
78
|
+
const segduo<local_iterator, Size> r = (generate_n_scan)(traits::local(first), ll, count, gen, is_local_seg_t(), local_cat_t());
|
|
79
|
+
return segduo<SegIt, Size>((r.first != ll) ? traits::compose(scur, r.first) : last, r.second);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
segduo<local_iterator, Size> r = generate_n_scan(traits::local(first), traits::end(scur), count, gen, is_local_seg_t(), local_cat_t());
|
|
83
|
+
count = r.second;
|
|
84
|
+
if (!count)
|
|
85
|
+
return segduo<SegIt, Size>(traits::compose(scur, r.first), count);
|
|
86
|
+
|
|
87
|
+
for (++scur; scur != slast; ++scur) {
|
|
88
|
+
r = generate_n_scan(traits::begin(scur), traits::end(scur), count, gen, is_local_seg_t(), local_cat_t());
|
|
89
|
+
count = r.second;
|
|
90
|
+
if (!count)
|
|
91
|
+
return segduo<SegIt, Size>(traits::compose(scur, r.first), count);
|
|
92
|
+
}
|
|
93
|
+
const local_iterator ll = traits::local(last);
|
|
94
|
+
r = generate_n_scan(traits::begin(slast), ll, count, gen, is_local_seg_t(), local_cat_t());
|
|
95
|
+
return segduo<SegIt, Size>((r.first != ll) ? traits::compose(scur, r.first) : last, r.second);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
template <class SegIter, class Size, class Generator>
|
|
100
|
+
SegIter segmented_generate_n_ref
|
|
101
|
+
(SegIter first, Size count, Generator& BOOST_RESTRICT gen, segmented_iterator_tag)
|
|
102
|
+
{
|
|
103
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
104
|
+
typedef typename traits::local_iterator local_iterator;
|
|
105
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
106
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
107
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
108
|
+
|
|
109
|
+
segment_iterator scur = traits::segment(first);
|
|
110
|
+
local_iterator lcur;
|
|
111
|
+
|
|
112
|
+
{
|
|
113
|
+
const segduo<local_iterator, Size> r = generate_n_scan(traits::local(first), traits::end(scur), count, gen, is_local_seg_t(), local_cat_t());
|
|
114
|
+
lcur = r.first;
|
|
115
|
+
count = r.second;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if(count){
|
|
119
|
+
++scur;
|
|
120
|
+
while(1) {
|
|
121
|
+
const segduo<local_iterator, Size> r = generate_n_scan(traits::begin(scur), traits::end(scur), count, gen, is_local_seg_t(), local_cat_t());
|
|
122
|
+
lcur = r.first;
|
|
123
|
+
count = r.second;
|
|
124
|
+
if(count == 0)
|
|
125
|
+
break;
|
|
126
|
+
++scur;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return traits::compose(scur, lcur);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
template <class OutIt, class Size, class Generator>
|
|
133
|
+
OutIt segmented_generate_n_ref
|
|
134
|
+
(OutIt first, Size count, Generator& BOOST_RESTRICT gen, non_segmented_iterator_tag)
|
|
135
|
+
{
|
|
136
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
137
|
+
for(; count > 0; ++first, --count)
|
|
138
|
+
*first = gen();
|
|
139
|
+
return first;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
} // namespace detail_algo
|
|
143
|
+
|
|
144
|
+
//! Assigns the result of successive calls to \c gen to the first
|
|
145
|
+
//! \c count elements starting at \c first. Generator state is
|
|
146
|
+
//! preserved across segment boundaries.
|
|
147
|
+
//! Returns an iterator past the last generated element.
|
|
148
|
+
template <class OutIt, class Size, class Generator>
|
|
149
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
150
|
+
OutIt segmented_generate_n(OutIt first, Size count, Generator gen)
|
|
151
|
+
{
|
|
152
|
+
typedef segmented_iterator_traits<OutIt> traits;
|
|
153
|
+
return detail_algo::segmented_generate_n_ref(first, count, gen,
|
|
154
|
+
typename traits::is_segmented_iterator());
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
} // namespace container
|
|
158
|
+
} // namespace boost
|
|
159
|
+
|
|
160
|
+
#include <boost/container/detail/config_end.hpp>
|
|
161
|
+
|
|
162
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_GENERATE_N_HPP
|
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
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_IS_PARTITIONED_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_IS_PARTITIONED_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
|
+
|
|
24
|
+
#include <boost/container/experimental/segmented_find_if_not.hpp>
|
|
25
|
+
#include <boost/container/experimental/segmented_none_of.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace container {
|
|
29
|
+
|
|
30
|
+
//! Returns \c true if all elements satisfying \c pred appear before
|
|
31
|
+
//! all elements that do not, i.e. the range [first, last) is
|
|
32
|
+
//! partitioned with respect to \c pred.
|
|
33
|
+
//! Exploits segmentation when available.
|
|
34
|
+
template <class InpIter, class Sent, class Pred>
|
|
35
|
+
inline bool segmented_is_partitioned(InpIter first, Sent last, Pred pred)
|
|
36
|
+
{
|
|
37
|
+
first = (segmented_find_if_not)(first, last, pred);
|
|
38
|
+
return (segmented_none_of)(first, last, pred);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
} // namespace container
|
|
42
|
+
} // namespace boost
|
|
43
|
+
|
|
44
|
+
#include <boost/container/detail/config_end.hpp>
|
|
45
|
+
|
|
46
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_IS_PARTITIONED_HPP
|
|
@@ -0,0 +1,49 @@
|
|
|
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_IS_SORTED_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_IS_SORTED_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_is_sorted_until.hpp>
|
|
24
|
+
|
|
25
|
+
namespace boost {
|
|
26
|
+
namespace container {
|
|
27
|
+
|
|
28
|
+
//! Returns true if [first, last) is sorted according to \c comp.
|
|
29
|
+
template <class FwdIt, class Sent, class Comp>
|
|
30
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
31
|
+
bool segmented_is_sorted(FwdIt first, Sent last, Comp comp)
|
|
32
|
+
{
|
|
33
|
+
return (segmented_is_sorted_until)(first, last, comp) == last;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//! Returns true if [first, last) is sorted using operator<.
|
|
37
|
+
template <class FwdIt, class Sent>
|
|
38
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
39
|
+
bool segmented_is_sorted(FwdIt first, Sent last)
|
|
40
|
+
{
|
|
41
|
+
return (segmented_is_sorted_until)(first, last) == last;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
} // namespace container
|
|
45
|
+
} // namespace boost
|
|
46
|
+
|
|
47
|
+
#include <boost/container/detail/config_end.hpp>
|
|
48
|
+
|
|
49
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_IS_SORTED_HPP
|
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
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_IS_SORTED_UNTIL_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_IS_SORTED_UNTIL_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
|
+
namespace detail_algo {
|
|
30
|
+
|
|
31
|
+
// Recursive dispatch for `segmented_is_sorted_until`.
|
|
32
|
+
//
|
|
33
|
+
// Cross-segment state is carried by value and returned in segduo<Iter, DeepIt>:
|
|
34
|
+
// - `prev` : iterator (of the deepest non-segmented local type) pointing
|
|
35
|
+
// at the most recently examined element.
|
|
36
|
+
//
|
|
37
|
+
// All sorted_until_rec overloads return segduo<Iter, DeepIt> where .first is
|
|
38
|
+
// the result iterator and .second is the updated prev value. Passing prev by
|
|
39
|
+
// value instead of by reference avoids pointer aliasing and lets the compiler
|
|
40
|
+
// keep prev in a register throughout the inner loop.
|
|
41
|
+
|
|
42
|
+
// (1) Non-segmented base case.
|
|
43
|
+
// At this level FwdIt == DeepIt (the deepest type computed from the top).
|
|
44
|
+
template <class FwdIt, class Sent, class Comp, class DeepIt, class Cat>
|
|
45
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
46
|
+
segduo<FwdIt, DeepIt> sorted_until_rec
|
|
47
|
+
(FwdIt first, Sent last, Comp comp,
|
|
48
|
+
DeepIt prev, const non_segmented_iterator_tag &, Cat)
|
|
49
|
+
{
|
|
50
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
51
|
+
for (; first != last; ++first) {
|
|
52
|
+
if (comp(*first, *prev))
|
|
53
|
+
break;
|
|
54
|
+
prev = detail_algo::deepest_local_iterator<FwdIt>::get(first);
|
|
55
|
+
}
|
|
56
|
+
return segduo<FwdIt, DeepIt>(first, prev);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// (2) Segmented iterator with a heterogeneous sentinel as end.
|
|
60
|
+
// Cannot locate `last`'s segment, so falls back to a simple linear loop.
|
|
61
|
+
template <class SegIter, class Sent, class Comp, class DeepIt, class Tag, class Cat>
|
|
62
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
63
|
+
typename algo_enable_if_c< is_sentinel<Sent, SegIter>::value
|
|
64
|
+
, segduo<SegIter, DeepIt> >::type
|
|
65
|
+
sorted_until_rec
|
|
66
|
+
(SegIter first, Sent last, Comp comp,
|
|
67
|
+
DeepIt prev, const Tag &, const Cat &cat)
|
|
68
|
+
{
|
|
69
|
+
return sorted_until_rec
|
|
70
|
+
(first, last, comp, prev, non_segmented_iterator_tag(), cat);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// (3) Segmented iterator with a matching segmented iterator as end.
|
|
74
|
+
// Recursive: decomposes the range and dispatches each sub-range back to
|
|
75
|
+
// `sorted_until_rec`, so recursive segmentation is exploited at every
|
|
76
|
+
// level. `prev` is threaded by value through the segduo return type.
|
|
77
|
+
template <class SegIter, class Comp, class DeepIt, class Cat>
|
|
78
|
+
segduo<SegIter, DeepIt> sorted_until_rec
|
|
79
|
+
(SegIter first, SegIter last, Comp comp,
|
|
80
|
+
DeepIt prev,
|
|
81
|
+
const segmented_iterator_tag &, Cat)
|
|
82
|
+
{
|
|
83
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
84
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
85
|
+
typedef typename traits::local_iterator local_iterator;
|
|
86
|
+
typedef typename segmented_iterator_traits<local_iterator>::is_segmented_iterator
|
|
87
|
+
is_local_seg_t;
|
|
88
|
+
typedef typename iterator_traits<local_iterator>::iterator_category local_cat_t;
|
|
89
|
+
typedef segduo<local_iterator, DeepIt> local_result_t;
|
|
90
|
+
|
|
91
|
+
segment_iterator sfirst = traits::segment(first);
|
|
92
|
+
const segment_iterator slast = traits::segment(last);
|
|
93
|
+
|
|
94
|
+
if (sfirst == slast) {
|
|
95
|
+
const local_iterator ll = traits::local(last);
|
|
96
|
+
const local_result_t r = (sorted_until_rec)
|
|
97
|
+
(traits::local(first), ll, comp, prev, is_local_seg_t(), local_cat_t());
|
|
98
|
+
return segduo<SegIter, DeepIt>(traits::compose(sfirst, r.first), r.second);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
local_iterator le = traits::end(sfirst);
|
|
102
|
+
local_result_t r = (sorted_until_rec)
|
|
103
|
+
(traits::local(first), le, comp, prev, is_local_seg_t(), local_cat_t());
|
|
104
|
+
if (r.first != le)
|
|
105
|
+
return segduo<SegIter, DeepIt>(traits::compose(sfirst, r.first), r.second);
|
|
106
|
+
|
|
107
|
+
for (++sfirst; sfirst != slast; ++sfirst) {
|
|
108
|
+
le = traits::end(sfirst);
|
|
109
|
+
r = (sorted_until_rec)
|
|
110
|
+
(traits::begin(sfirst), le, comp, r.second, is_local_seg_t(), local_cat_t());
|
|
111
|
+
if (r.first != le)
|
|
112
|
+
return segduo<SegIter, DeepIt>(traits::compose(sfirst, r.first), r.second);
|
|
113
|
+
}
|
|
114
|
+
r = (sorted_until_rec)
|
|
115
|
+
(traits::begin(slast), traits::local(last), comp, r.second, is_local_seg_t(), local_cat_t());
|
|
116
|
+
return segduo<SegIter, DeepIt>(traits::compose(sfirst, r.first), r.second);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
} // namespace detail_algo
|
|
121
|
+
|
|
122
|
+
//! Returns an iterator to the first element that is less than its predecessor
|
|
123
|
+
//! in [first, last), using \c comp for comparison.
|
|
124
|
+
//! Returns \c last if the range is sorted.
|
|
125
|
+
template <class FwdIt, class Sent, class Comp>
|
|
126
|
+
inline
|
|
127
|
+
FwdIt segmented_is_sorted_until(FwdIt first, Sent last, Comp comp)
|
|
128
|
+
{
|
|
129
|
+
if (first == last)
|
|
130
|
+
return first;
|
|
131
|
+
|
|
132
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
133
|
+
typedef detail_algo::deepest_local_iterator<FwdIt> deep_it_helper;
|
|
134
|
+
typedef typename deep_it_helper::type deep_it;
|
|
135
|
+
|
|
136
|
+
deep_it prev = deep_it_helper::get(first);
|
|
137
|
+
return detail_algo::sorted_until_rec
|
|
138
|
+
(++first, last, comp, prev,
|
|
139
|
+
typename traits::is_segmented_iterator(),
|
|
140
|
+
typename iterator_traits<FwdIt>::iterator_category()).first;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
//! Returns an iterator to the first element that is less than its predecessor
|
|
144
|
+
//! in [first, last), using operator<.
|
|
145
|
+
//! Returns \c last if the range is sorted.
|
|
146
|
+
template <class FwdIt, class Sent>
|
|
147
|
+
inline
|
|
148
|
+
FwdIt segmented_is_sorted_until(FwdIt first, Sent last)
|
|
149
|
+
{
|
|
150
|
+
if (first == last)
|
|
151
|
+
return first;
|
|
152
|
+
|
|
153
|
+
typedef segmented_iterator_traits<FwdIt> traits;
|
|
154
|
+
typedef detail_algo::deepest_local_iterator<FwdIt> deep_it_helper;
|
|
155
|
+
typedef typename deep_it_helper::type deep_it;
|
|
156
|
+
|
|
157
|
+
deep_it prev = deep_it_helper::get(first);
|
|
158
|
+
return detail_algo::sorted_until_rec
|
|
159
|
+
(++first, last, detail_algo::segmented_default_less(), prev,
|
|
160
|
+
typename traits::is_segmented_iterator(),
|
|
161
|
+
typename iterator_traits<FwdIt>::iterator_category()).first;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
} // namespace container
|
|
165
|
+
} // namespace boost
|
|
166
|
+
|
|
167
|
+
#include <boost/container/detail/config_end.hpp>
|
|
168
|
+
|
|
169
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_IS_SORTED_UNTIL_HPP
|