passenger 6.2.1 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +37 -15
- data/build/cxx_tests.rb +2 -0
- data/build/support/cxx_dependency_map.rb +3 -63
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Shared/ApiServerUtils.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/apache2_module/Hooks.cpp +13 -0
- data/src/apache2_module/Utils.h +14 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/FileTools/FileManip.cpp +27 -3
- data/src/cxx_supportlib/InstanceDirectory.h +30 -3
- data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
- data/src/cxx_supportlib/ServerKit/llerrors.h +3 -3
- data/src/cxx_supportlib/ServerKit/llversion.h +1 -1
- data/src/cxx_supportlib/{ServerKit/llhttp_api.c → vendor-copy/llhttp/api.c} +30 -23
- data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.c +1756 -1645
- data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.h +35 -13
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/debug.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +57 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +176 -2287
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +13 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +186 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/aligned_allocation.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/bit_utilities.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +20 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/deque_impl.hpp +2744 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +202 -104
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +161 -85
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_constructible.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +18 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +256 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +75 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +1 -56
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +16 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/range_utils.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +124 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +109 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +168 -162
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/nest.hpp +2978 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/pmr/nest.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_all_of.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_any_of.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_if.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_n.hpp +308 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count_if.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_equal.hpp +268 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill_n.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if_not.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if_not.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_for_each.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate_n.hpp +162 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_iterator_traits.hpp +382 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_merge.hpp +428 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_mismatch.hpp +350 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_none_of.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp +223 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_if.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace_if.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse.hpp +245 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse_copy.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search.hpp +211 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search_n.hpp +476 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_difference.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_intersection.hpp +287 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_symmetric_difference.hpp +306 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_union.hpp +294 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp +153 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_transform.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/wrapped_iterator.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +642 -417
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +141 -30
- data/src/cxx_supportlib/vendor-modified/boost/container/hub.hpp +2426 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +65 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +247 -68
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +39 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +156 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/hub.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/segtor.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/segtor.hpp +905 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +148 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +59 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +632 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +66 -60
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +46 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +612 -317
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +54 -111
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_construction.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +233 -116
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +17 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/encoder.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +211 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +29 -174
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +18 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +42 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +58 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/config.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +23 -11
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/{detail → lexical_cast/detail}/lcast_precision.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +15 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +48 -46
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +58 -37
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +17 -9
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_common_defs.hpp +188 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_nonmember_interface.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +108 -83
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_select_implementation.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/union_optional.hpp +724 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +93 -220
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/system/api_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +30 -28
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +196 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +191 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +196 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +192 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +52 -16
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/ranges_support.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unordered_printers.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +121 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +118 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +338 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +121 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +118 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +333 -1
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +276 -143
- data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1262 -771
- data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1704 -1586
- data/src/nginx_module/ContentHandler.c +35 -0
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +25 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +12 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- metadata +73 -8
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +0 -41
- /data/src/cxx_supportlib/{ServerKit/llhttp_http.c → vendor-copy/llhttp/http.c} +0 -0
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
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_STABLE_PARTITION_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_STABLE_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/move/utility_core.hpp>
|
|
25
|
+
#include <boost/container/detail/iterator.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace container {
|
|
29
|
+
|
|
30
|
+
template <class BidirIt, class Pred>
|
|
31
|
+
BidirIt segmented_stable_partition(BidirIt first, BidirIt last, Pred pred);
|
|
32
|
+
|
|
33
|
+
namespace detail_algo {
|
|
34
|
+
|
|
35
|
+
template <class BidirIt, class T>
|
|
36
|
+
BidirIt stable_partition_shift( BidirIt it, BidirIt result, T& tmp)
|
|
37
|
+
{
|
|
38
|
+
BidirIt cur = it;
|
|
39
|
+
while(cur != result) {
|
|
40
|
+
BidirIt prev = cur; --prev;
|
|
41
|
+
*cur = boost::move(*prev);
|
|
42
|
+
cur = prev;
|
|
43
|
+
}
|
|
44
|
+
*result = boost::move(tmp);
|
|
45
|
+
return ++result;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Composes a local iterator back to the outermost segmented iterator.
|
|
49
|
+
// At the top level, identity_composer just returns the iterator as-is.
|
|
50
|
+
// At each recursion level, chained_composer calls traits::compose to go
|
|
51
|
+
// one level up, then delegates to the outer composer.
|
|
52
|
+
template <class SegIter>
|
|
53
|
+
struct sp_identity_composer
|
|
54
|
+
{
|
|
55
|
+
typedef SegIter result_type;
|
|
56
|
+
BOOST_CONTAINER_FORCEINLINE result_type operator()(SegIter it) const { return it; }
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
template <class OuterComposer, class Traits>
|
|
60
|
+
struct sp_chained_composer
|
|
61
|
+
{
|
|
62
|
+
typedef typename OuterComposer::result_type result_type;
|
|
63
|
+
OuterComposer outer_;
|
|
64
|
+
typename Traits::segment_iterator seg_;
|
|
65
|
+
|
|
66
|
+
BOOST_CONTAINER_FORCEINLINE sp_chained_composer(OuterComposer o, typename Traits::segment_iterator s)
|
|
67
|
+
: outer_(o), seg_(s) {}
|
|
68
|
+
|
|
69
|
+
BOOST_CONTAINER_FORCEINLINE result_type operator()(typename Traits::local_iterator l) const
|
|
70
|
+
{ return outer_(Traits::compose(seg_, l)); }
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
template <class FwdIt, class OuterIter, class Composer, class Pred>
|
|
74
|
+
OuterIter stable_partition_scan(FwdIt first, FwdIt last, OuterIter result, Composer composer, Pred pred, non_segmented_iterator_tag)
|
|
75
|
+
{
|
|
76
|
+
typedef typename boost::container::iterator_traits<OuterIter>::value_type value_type;
|
|
77
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
78
|
+
for(; first != last; ++first) {
|
|
79
|
+
if(pred(*first)) {
|
|
80
|
+
value_type tmp = boost::move(*first);
|
|
81
|
+
OuterIter it = composer(first);
|
|
82
|
+
result = stable_partition_shift(it, result, tmp);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
template <class SegIt, class OuterIter, class Composer, class Pred>
|
|
89
|
+
OuterIter stable_partition_scan(SegIt first, SegIt last, OuterIter result,
|
|
90
|
+
Composer composer, Pred& pred, segmented_iterator_tag)
|
|
91
|
+
{
|
|
92
|
+
typedef segmented_iterator_traits<SegIt> traits;
|
|
93
|
+
typedef typename traits::local_iterator local_iterator;
|
|
94
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
95
|
+
typedef typename segmented_iterator_traits
|
|
96
|
+
<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
97
|
+
|
|
98
|
+
typedef sp_chained_composer<Composer, traits> composer_t;
|
|
99
|
+
|
|
100
|
+
segment_iterator scur = traits::segment(first);
|
|
101
|
+
segment_iterator const slast = traits::segment(last);
|
|
102
|
+
local_iterator lcur = traits::local(first);
|
|
103
|
+
|
|
104
|
+
if(scur == slast) {
|
|
105
|
+
result = stable_partition_scan(lcur, traits::local(last), result, composer_t(composer, scur), pred, is_local_seg_t());
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
result = stable_partition_scan(lcur, traits::end(scur), result, composer_t(composer, scur), pred, is_local_seg_t());
|
|
109
|
+
for(++scur; scur != slast; ++scur) {
|
|
110
|
+
result = stable_partition_scan(traits::begin(scur), traits::end(scur), result, composer_t(composer, scur), pred, is_local_seg_t());
|
|
111
|
+
}
|
|
112
|
+
result = stable_partition_scan(traits::begin(scur), traits::local(last), result, composer_t(composer, scur), pred,is_local_seg_t());
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
template <class SegIter, class Pred>
|
|
118
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
119
|
+
SegIter segmented_stable_partition_dispatch (SegIter first, SegIter last, Pred pred, segmented_iterator_tag)
|
|
120
|
+
{
|
|
121
|
+
return (stable_partition_scan)(first, last, first, sp_identity_composer<SegIter>(), pred, segmented_iterator_tag());
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
template <class BidirIt, class Pred>
|
|
125
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
126
|
+
BidirIt segmented_stable_partition_dispatch (BidirIt first, BidirIt last, Pred pred, non_segmented_iterator_tag)
|
|
127
|
+
{
|
|
128
|
+
return (stable_partition_scan)(first, last, first, sp_identity_composer<BidirIt>(), pred, non_segmented_iterator_tag());
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
} // namespace detail_algo
|
|
132
|
+
|
|
133
|
+
//! Note: This version is suboptimal only supports bidirectional iterators,
|
|
134
|
+
//! as it relies on stable_partition_shift.
|
|
135
|
+
//!
|
|
136
|
+
//! Reorders elements in [first, last) so that elements satisfying
|
|
137
|
+
//! \c pred come before those that do not, preserving relative order
|
|
138
|
+
//! within each group. Returns an iterator to the partition point.
|
|
139
|
+
template <class BidirIt, class Pred>
|
|
140
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
141
|
+
BidirIt segmented_stable_partition(BidirIt first, BidirIt last, Pred pred)
|
|
142
|
+
{
|
|
143
|
+
typedef segmented_iterator_traits<BidirIt> traits;
|
|
144
|
+
return detail_algo::segmented_stable_partition_dispatch
|
|
145
|
+
(first, last, pred, typename traits::is_segmented_iterator());
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
} // namespace container
|
|
149
|
+
} // namespace boost
|
|
150
|
+
|
|
151
|
+
#include <boost/container/detail/config_end.hpp>
|
|
152
|
+
|
|
153
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_STABLE_PARTITION_HPP
|
data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
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_SWAP_RANGES_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_SWAP_RANGES_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/move/adl_move_swap.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
template <class FwdIt1, class Sent, class FwdIt2>
|
|
30
|
+
FwdIt2 segmented_swap_ranges(FwdIt1 first1, Sent last1, FwdIt2 first2);
|
|
31
|
+
|
|
32
|
+
namespace detail_algo {
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
template <class FwdIt1, class Sent, class FwdIt2, class Tag>
|
|
36
|
+
typename algo_enable_if_c<
|
|
37
|
+
!Tag::value || is_sentinel<Sent, FwdIt1>::value, FwdIt2>::type
|
|
38
|
+
segmented_swap_ranges_dispatch (FwdIt1 first1, Sent last1, FwdIt2 first2, Tag)
|
|
39
|
+
{
|
|
40
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
41
|
+
for(; first1 != last1; ++first1, ++first2) {
|
|
42
|
+
boost::adl_move_swap(*first1, *first2);
|
|
43
|
+
}
|
|
44
|
+
return first2;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
template <class SegIter, class FwdIt2>
|
|
48
|
+
FwdIt2 segmented_swap_ranges_dispatch (SegIter first1, SegIter last1, FwdIt2 first2, segmented_iterator_tag)
|
|
49
|
+
{
|
|
50
|
+
typedef segmented_iterator_traits<SegIter> traits;
|
|
51
|
+
typedef typename traits::local_iterator local_iterator;
|
|
52
|
+
typedef typename traits::segment_iterator segment_iterator;
|
|
53
|
+
typedef typename segmented_iterator_traits
|
|
54
|
+
<local_iterator>::is_segmented_iterator is_local_seg_t;
|
|
55
|
+
|
|
56
|
+
segment_iterator sfirst = traits::segment(first1);
|
|
57
|
+
segment_iterator const slast = traits::segment(last1);
|
|
58
|
+
|
|
59
|
+
if(sfirst == slast) {
|
|
60
|
+
first2 = (segmented_swap_ranges_dispatch)(traits::local(first1), traits::local(last1), first2, is_local_seg_t());
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
first2 = (segmented_swap_ranges_dispatch)(traits::local(first1), traits::end(sfirst), first2, is_local_seg_t());
|
|
64
|
+
|
|
65
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
66
|
+
first2 = (segmented_swap_ranges_dispatch)(traits::begin(sfirst), traits::end(sfirst), first2, is_local_seg_t());
|
|
67
|
+
|
|
68
|
+
first2 = (segmented_swap_ranges_dispatch)(traits::begin(sfirst), traits::local(last1), first2, is_local_seg_t());
|
|
69
|
+
}
|
|
70
|
+
return first2;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
} // namespace detail_algo
|
|
74
|
+
|
|
75
|
+
//! Swaps elements in [first1, last1) with the range starting at \c first2.
|
|
76
|
+
//! Returns an iterator past the last swapped element in the second range.
|
|
77
|
+
//! Segmentation is exploited on the first range.
|
|
78
|
+
template <class FwdIt1, class Sent, class FwdIt2>
|
|
79
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
80
|
+
FwdIt2 segmented_swap_ranges(FwdIt1 first1, Sent last1, FwdIt2 first2)
|
|
81
|
+
{
|
|
82
|
+
typedef segmented_iterator_traits<FwdIt1> traits;
|
|
83
|
+
return detail_algo::segmented_swap_ranges_dispatch
|
|
84
|
+
(first1, last1, first2, typename traits::is_segmented_iterator());
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
} // namespace container
|
|
88
|
+
} // namespace boost
|
|
89
|
+
|
|
90
|
+
#include <boost/container/detail/config_end.hpp>
|
|
91
|
+
|
|
92
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_SWAP_RANGES_HPP
|
|
@@ -0,0 +1,93 @@
|
|
|
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_TRANSFORM_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_TRANSFORM_HPP
|
|
12
|
+
|
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
|
14
|
+
# include <boost/config.hpp>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
18
|
+
# pragma once
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <boost/container/detail/config_begin.hpp>
|
|
22
|
+
#include <boost/container/detail/workaround.hpp>
|
|
23
|
+
#include <boost/container/experimental/segmented_iterator_traits.hpp>
|
|
24
|
+
#include <boost/container/detail/iterator.hpp>
|
|
25
|
+
|
|
26
|
+
namespace boost {
|
|
27
|
+
namespace container {
|
|
28
|
+
|
|
29
|
+
template <class InIter, class Sent, class OutIter, class UnaryOp>
|
|
30
|
+
OutIter segmented_transform(InIter first, Sent last, OutIter result, UnaryOp op);
|
|
31
|
+
|
|
32
|
+
namespace detail_algo {
|
|
33
|
+
|
|
34
|
+
template <class InIter, class Sent, class OutIter, class UnaryOp, class Tag, class Cat>
|
|
35
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
36
|
+
typename algo_enable_if_c<
|
|
37
|
+
!Tag::value || is_sentinel<Sent, InIter>::value, OutIter>::type
|
|
38
|
+
segmented_transform_dispatch
|
|
39
|
+
(InIter first, Sent last, OutIter result, UnaryOp op, Tag, Cat)
|
|
40
|
+
{
|
|
41
|
+
BOOST_CONTAINER_SEGMENTED_UNROLL(4)
|
|
42
|
+
for(; first != last; ++first, ++result)
|
|
43
|
+
*result = op(*first);
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
template <class SegIter, class OutIter, class UnaryOp, class Cat>
|
|
48
|
+
OutIter segmented_transform_dispatch
|
|
49
|
+
(SegIter first, SegIter last, OutIter result, UnaryOp op, 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 sfirst = traits::segment(first);
|
|
59
|
+
segment_iterator const slast = traits::segment(last);
|
|
60
|
+
|
|
61
|
+
if(sfirst == slast) {
|
|
62
|
+
return (segmented_transform_dispatch)(traits::local(first), traits::local(last), result, op, is_local_seg_t(), local_cat_t());
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
result = (segmented_transform_dispatch)(traits::local(first), traits::end(sfirst), result, op, is_local_seg_t(), local_cat_t());
|
|
66
|
+
|
|
67
|
+
for(++sfirst; sfirst != slast; ++sfirst)
|
|
68
|
+
result = (segmented_transform_dispatch)(traits::begin(sfirst), traits::end(sfirst), result, op, is_local_seg_t(), local_cat_t());
|
|
69
|
+
|
|
70
|
+
return (segmented_transform_dispatch)(traits::begin(sfirst), traits::local(last), result, op, is_local_seg_t(), local_cat_t());
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
} // namespace detail_algo
|
|
75
|
+
|
|
76
|
+
//! Applies \c op to each element in [first, last) and writes the result
|
|
77
|
+
//! to the range beginning at \c result.
|
|
78
|
+
//! Segmentation is exploited on the input range only.
|
|
79
|
+
template <class InIter, class Sent, class OutIter, class UnaryOp>
|
|
80
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
81
|
+
OutIter segmented_transform (InIter first, Sent last, OutIter result, UnaryOp op)
|
|
82
|
+
{
|
|
83
|
+
typedef segmented_iterator_traits<InIter> traits;
|
|
84
|
+
return detail_algo::segmented_transform_dispatch
|
|
85
|
+
(first, last, result, op, typename traits::is_segmented_iterator(), typename iterator_traits<InIter>::iterator_category());
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
} // namespace container
|
|
89
|
+
} // namespace boost
|
|
90
|
+
|
|
91
|
+
#include <boost/container/detail/config_end.hpp>
|
|
92
|
+
|
|
93
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_SEGMENTED_TRANSFORM_HPP
|
|
@@ -0,0 +1,142 @@
|
|
|
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_WRAPPED_ITERATOR_HPP
|
|
11
|
+
#define BOOST_CONTAINER_EXPERIMENTAL_WRAPPED_ITERATOR_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/detail/iterator.hpp>
|
|
24
|
+
|
|
25
|
+
namespace boost {
|
|
26
|
+
namespace container {
|
|
27
|
+
|
|
28
|
+
namespace detail_algo {
|
|
29
|
+
|
|
30
|
+
template<class Category, class Iterator>
|
|
31
|
+
struct wrapped_iter_category
|
|
32
|
+
{ typedef Category type; };
|
|
33
|
+
|
|
34
|
+
template<class Iterator>
|
|
35
|
+
struct wrapped_iter_category<void, Iterator>
|
|
36
|
+
{ typedef typename iterator_traits<Iterator>::iterator_category type; };
|
|
37
|
+
|
|
38
|
+
} // namespace detail_algo
|
|
39
|
+
|
|
40
|
+
//! Iterator adaptor that wraps an existing iterator and re-declares its
|
|
41
|
+
//! \c iterator_category to \c Category. All underlying iterator operations
|
|
42
|
+
//! are forwarded; only the category seen by tag-dispatching algorithms changes.
|
|
43
|
+
//!
|
|
44
|
+
//! When \c Category is \c void, the wrapped iterator preserves the original
|
|
45
|
+
//! \c iterator_category from \c iterator_traits<Iterator>.
|
|
46
|
+
//!
|
|
47
|
+
//! \tparam Iterator The type of the wrapped iterator.
|
|
48
|
+
//! \tparam Category The iterator category tag declared by the wrapper
|
|
49
|
+
//! (\c std::forward_iterator_tag, \c std::bidirectional_iterator_tag,
|
|
50
|
+
//! \c std::random_access_iterator_tag, or \c void to keep the original).
|
|
51
|
+
template<class Iterator, class Category = void>
|
|
52
|
+
class wrapped_iterator
|
|
53
|
+
{
|
|
54
|
+
Iterator m_it;
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
typedef typename iterator_traits<Iterator>::value_type value_type;
|
|
58
|
+
typedef typename iterator_traits<Iterator>::difference_type difference_type;
|
|
59
|
+
typedef typename iterator_traits<Iterator>::pointer pointer;
|
|
60
|
+
typedef typename iterator_traits<Iterator>::reference reference;
|
|
61
|
+
typedef typename detail_algo::wrapped_iter_category<Category, Iterator>::type iterator_category;
|
|
62
|
+
|
|
63
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator() BOOST_NOEXCEPT : m_it() {}
|
|
64
|
+
BOOST_CONTAINER_FORCEINLINE explicit wrapped_iterator(Iterator it) BOOST_NOEXCEPT : m_it(it) {}
|
|
65
|
+
|
|
66
|
+
BOOST_CONTAINER_FORCEINLINE operator Iterator () const BOOST_NOEXCEPT { return m_it; }
|
|
67
|
+
|
|
68
|
+
// Forward operations
|
|
69
|
+
BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT { return *m_it; }
|
|
70
|
+
BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT { return &(*m_it); }
|
|
71
|
+
|
|
72
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator& operator++() BOOST_NOEXCEPT
|
|
73
|
+
{ ++m_it; return *this; }
|
|
74
|
+
|
|
75
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator operator++(int) BOOST_NOEXCEPT
|
|
76
|
+
{ wrapped_iterator tmp(*this); ++m_it; return tmp; }
|
|
77
|
+
|
|
78
|
+
// Bidirectional operations
|
|
79
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator& operator--() BOOST_NOEXCEPT
|
|
80
|
+
{ --m_it; return *this; }
|
|
81
|
+
|
|
82
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator operator--(int) BOOST_NOEXCEPT
|
|
83
|
+
{ wrapped_iterator tmp(*this); --m_it; return tmp; }
|
|
84
|
+
|
|
85
|
+
// Random-access operations
|
|
86
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator& operator+=(difference_type n) BOOST_NOEXCEPT
|
|
87
|
+
{ m_it += n; return *this; }
|
|
88
|
+
|
|
89
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator& operator-=(difference_type n) BOOST_NOEXCEPT
|
|
90
|
+
{ m_it -= n; return *this; }
|
|
91
|
+
|
|
92
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator operator+(difference_type n) const BOOST_NOEXCEPT
|
|
93
|
+
{ wrapped_iterator tmp(*this); tmp += n; return tmp; }
|
|
94
|
+
|
|
95
|
+
BOOST_CONTAINER_FORCEINLINE wrapped_iterator operator-(difference_type n) const BOOST_NOEXCEPT
|
|
96
|
+
{ wrapped_iterator tmp(*this); tmp -= n; return tmp; }
|
|
97
|
+
|
|
98
|
+
BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type n) const BOOST_NOEXCEPT
|
|
99
|
+
{ return m_it[n]; }
|
|
100
|
+
|
|
101
|
+
BOOST_CONTAINER_FORCEINLINE friend wrapped_iterator operator+(difference_type n, const wrapped_iterator& x) BOOST_NOEXCEPT
|
|
102
|
+
{ wrapped_iterator tmp(x); tmp += n; return tmp; }
|
|
103
|
+
|
|
104
|
+
BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
105
|
+
{ return x.m_it - y.m_it; }
|
|
106
|
+
|
|
107
|
+
// Comparisons
|
|
108
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
109
|
+
{ return x.m_it == y.m_it; }
|
|
110
|
+
|
|
111
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
112
|
+
{ return x.m_it != y.m_it; }
|
|
113
|
+
|
|
114
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
115
|
+
{ return x.m_it < y.m_it; }
|
|
116
|
+
|
|
117
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
118
|
+
{ return y < x; }
|
|
119
|
+
|
|
120
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
121
|
+
{ return !(y < x); }
|
|
122
|
+
|
|
123
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const wrapped_iterator& x, const wrapped_iterator& y) BOOST_NOEXCEPT
|
|
124
|
+
{ return !(x < y); }
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
//! Factory function: wraps \c it in a \c wrapped_iterator with the given
|
|
128
|
+
//! \c Category. \c Iterator is deduced; \c Category must be specified
|
|
129
|
+
//! explicitly, e.g.
|
|
130
|
+
//! \code make_wrapped_iterator<std::forward_iterator_tag>(ra_iter) \endcode
|
|
131
|
+
template<class Category, class Iterator>
|
|
132
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
133
|
+
wrapped_iterator<Iterator, Category>
|
|
134
|
+
make_wrapped_iterator(Iterator it) BOOST_NOEXCEPT
|
|
135
|
+
{ return wrapped_iterator<Iterator, Category>(it); }
|
|
136
|
+
|
|
137
|
+
} // namespace container
|
|
138
|
+
} // namespace boost
|
|
139
|
+
|
|
140
|
+
#include <boost/container/detail/config_end.hpp>
|
|
141
|
+
|
|
142
|
+
#endif // BOOST_CONTAINER_EXPERIMENTAL_WRAPPED_ITERATOR_HPP
|