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
|
@@ -12,6 +12,14 @@
|
|
|
12
12
|
#ifndef BOOST_CONTAINER_DEVECTOR_HPP
|
|
13
13
|
#define BOOST_CONTAINER_DEVECTOR_HPP
|
|
14
14
|
|
|
15
|
+
#ifndef BOOST_CONFIG_HPP
|
|
16
|
+
# include <boost/config.hpp>
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
20
|
+
# pragma once
|
|
21
|
+
#endif
|
|
22
|
+
|
|
15
23
|
#include <boost/container/detail/config_begin.hpp>
|
|
16
24
|
#include <boost/container/detail/workaround.hpp>
|
|
17
25
|
|
|
@@ -271,8 +279,9 @@ class devector
|
|
|
271
279
|
explicit devector(size_type n, const allocator_type& allocator = allocator_type())
|
|
272
280
|
: m_(reserve_uninitialized_t(), allocator, n)
|
|
273
281
|
{
|
|
274
|
-
|
|
275
|
-
|
|
282
|
+
allocator_type &al = this->get_allocator_ref();
|
|
283
|
+
allocation_guard buffer_guard(m_.buffer, m_.capacity, al);
|
|
284
|
+
boost::container::uninitialized_value_init_alloc_n(al, n, this->priv_raw_begin());
|
|
276
285
|
buffer_guard.release();
|
|
277
286
|
BOOST_ASSERT(invariants_ok());
|
|
278
287
|
}
|
|
@@ -291,8 +300,9 @@ class devector
|
|
|
291
300
|
explicit devector(size_type n, default_init_t, const allocator_type& allocator = allocator_type())
|
|
292
301
|
: m_(reserve_uninitialized_t(), allocator, n)
|
|
293
302
|
{
|
|
294
|
-
|
|
295
|
-
|
|
303
|
+
allocator_type &al = this->get_allocator_ref();
|
|
304
|
+
allocation_guard buffer_guard(m_.buffer, m_.capacity, al);
|
|
305
|
+
boost::container::uninitialized_default_init_alloc_n(al, n, this->priv_raw_begin());
|
|
296
306
|
buffer_guard.release();
|
|
297
307
|
BOOST_ASSERT(invariants_ok());
|
|
298
308
|
}
|
|
@@ -324,14 +334,14 @@ class devector
|
|
|
324
334
|
* iterator does not meet the forward iterator requirements, `T` shall also be [MoveInsertable]
|
|
325
335
|
* into `*this`.
|
|
326
336
|
*
|
|
327
|
-
* **Postcondition**: `size() == boost::container::iterator_distance(first, last)
|
|
337
|
+
* **Postcondition**: `size() == boost::container::iterator_distance(first, last)`
|
|
328
338
|
*
|
|
329
339
|
* **Exceptions**: Strong exception guarantee.
|
|
330
340
|
*
|
|
331
341
|
* **Complexity**: Makes only `N` calls to the copy constructor of `T` (where `N` is the distance between `first`
|
|
332
342
|
* and `last`), at most one allocation and no reallocations if iterators first and last are of forward,
|
|
333
343
|
* bidirectional, or random access categories. It makes `O(N)` calls to the copy constructor of `T`
|
|
334
|
-
* and `O(log(N)) reallocations if they are just input iterators.
|
|
344
|
+
* and `O(log(N))` reallocations if they are just input iterators.
|
|
335
345
|
*
|
|
336
346
|
* **Remarks**: Each iterator in the range `[first,last)` shall be dereferenced exactly once,
|
|
337
347
|
* unless an exception is thrown.
|
|
@@ -415,7 +425,7 @@ class devector
|
|
|
415
425
|
*
|
|
416
426
|
* **Complexity**: Linear in the size of `x`.
|
|
417
427
|
*/
|
|
418
|
-
devector(const devector& x, const allocator_type& allocator)
|
|
428
|
+
devector(const devector& x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type)& allocator)
|
|
419
429
|
: m_(reserve_uninitialized_t(), allocator, x.size())
|
|
420
430
|
{
|
|
421
431
|
this->construct_from_range(x.begin(), x.end());
|
|
@@ -453,7 +463,7 @@ class devector
|
|
|
453
463
|
*
|
|
454
464
|
* **Complexity**: Linear if allocator != rhs.get_allocator(), otherwise constant.
|
|
455
465
|
*/
|
|
456
|
-
devector(BOOST_RV_REF(devector) rhs, const allocator_type& allocator)
|
|
466
|
+
devector(BOOST_RV_REF(devector) rhs, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type)& allocator)
|
|
457
467
|
: m_(review_implementation_t(), allocator, rhs.m_.buffer, rhs.m_.front_idx, rhs.m_.back_idx, rhs.m_.capacity)
|
|
458
468
|
{
|
|
459
469
|
// TODO should move elems-by-elems if the two allocators differ
|
|
@@ -486,8 +496,8 @@ class devector
|
|
|
486
496
|
*/
|
|
487
497
|
~devector() BOOST_NOEXCEPT
|
|
488
498
|
{
|
|
489
|
-
destroy_elements(m_.buffer + m_.front_idx, m_.buffer + m_.back_idx);
|
|
490
|
-
deallocate_buffer();
|
|
499
|
+
this->destroy_elements(m_.buffer + m_.front_idx, m_.buffer + m_.back_idx);
|
|
500
|
+
this->deallocate_buffer();
|
|
491
501
|
}
|
|
492
502
|
|
|
493
503
|
/**
|
|
@@ -535,13 +545,11 @@ class devector
|
|
|
535
545
|
}
|
|
536
546
|
|
|
537
547
|
size_type n = x.size();
|
|
538
|
-
if (m_.capacity >= n)
|
|
539
|
-
|
|
540
|
-
this->overwrite_buffer(x.begin(), x.end());
|
|
548
|
+
if (m_.capacity >= n) {
|
|
549
|
+
this->overwrite_buffer(x.begin(), x.end());
|
|
541
550
|
}
|
|
542
|
-
else
|
|
543
|
-
|
|
544
|
-
this->allocate_and_copy_range(x.begin(), x.end());
|
|
551
|
+
else {
|
|
552
|
+
this->allocate_and_copy_range(x.begin(), x.end());
|
|
545
553
|
}
|
|
546
554
|
|
|
547
555
|
BOOST_ASSERT(invariants_ok());
|
|
@@ -667,13 +675,11 @@ class devector
|
|
|
667
675
|
{
|
|
668
676
|
const size_type n = boost::container::iterator_udistance(first, last);
|
|
669
677
|
|
|
670
|
-
if (m_.capacity >= n)
|
|
671
|
-
|
|
672
|
-
overwrite_buffer(first, last);
|
|
678
|
+
if (m_.capacity >= n) {
|
|
679
|
+
this->overwrite_buffer(first, last);
|
|
673
680
|
}
|
|
674
|
-
else
|
|
675
|
-
|
|
676
|
-
allocate_and_copy_range(first, last);
|
|
681
|
+
else {
|
|
682
|
+
this->allocate_and_copy_range(first, last);
|
|
677
683
|
}
|
|
678
684
|
|
|
679
685
|
BOOST_ASSERT(invariants_ok());
|
|
@@ -721,19 +727,19 @@ class devector
|
|
|
721
727
|
*
|
|
722
728
|
* **Complexity**: Constant.
|
|
723
729
|
*/
|
|
724
|
-
|
|
730
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
725
731
|
allocator_type get_allocator() const BOOST_NOEXCEPT
|
|
726
732
|
{
|
|
727
733
|
return static_cast<const allocator_type&>(m_);
|
|
728
734
|
}
|
|
729
735
|
|
|
730
|
-
|
|
736
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
731
737
|
const allocator_type &get_stored_allocator() const BOOST_NOEXCEPT
|
|
732
738
|
{
|
|
733
739
|
return static_cast<const allocator_type&>(m_);
|
|
734
740
|
}
|
|
735
741
|
|
|
736
|
-
|
|
742
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
737
743
|
allocator_type &get_stored_allocator() BOOST_NOEXCEPT
|
|
738
744
|
{
|
|
739
745
|
return static_cast<allocator_type&>(m_);
|
|
@@ -747,7 +753,7 @@ class devector
|
|
|
747
753
|
*
|
|
748
754
|
* **Complexity**: Constant.
|
|
749
755
|
*/
|
|
750
|
-
|
|
756
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
751
757
|
iterator begin() BOOST_NOEXCEPT
|
|
752
758
|
{
|
|
753
759
|
return m_.buffer + m_.front_idx;
|
|
@@ -759,7 +765,7 @@ class devector
|
|
|
759
765
|
*
|
|
760
766
|
* **Complexity**: Constant.
|
|
761
767
|
*/
|
|
762
|
-
|
|
768
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
763
769
|
const_iterator begin() const BOOST_NOEXCEPT
|
|
764
770
|
{
|
|
765
771
|
return m_.buffer + m_.front_idx;
|
|
@@ -770,7 +776,7 @@ class devector
|
|
|
770
776
|
*
|
|
771
777
|
* **Complexity**: Constant.
|
|
772
778
|
*/
|
|
773
|
-
|
|
779
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
774
780
|
iterator end() BOOST_NOEXCEPT
|
|
775
781
|
{
|
|
776
782
|
return m_.buffer + m_.back_idx;
|
|
@@ -781,7 +787,7 @@ class devector
|
|
|
781
787
|
*
|
|
782
788
|
* **Complexity**: Constant.
|
|
783
789
|
*/
|
|
784
|
-
|
|
790
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
785
791
|
const_iterator end() const BOOST_NOEXCEPT
|
|
786
792
|
{
|
|
787
793
|
return m_.buffer + m_.back_idx;
|
|
@@ -793,7 +799,7 @@ class devector
|
|
|
793
799
|
*
|
|
794
800
|
* **Complexity**: Constant.
|
|
795
801
|
*/
|
|
796
|
-
|
|
802
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
797
803
|
reverse_iterator rbegin() BOOST_NOEXCEPT
|
|
798
804
|
{
|
|
799
805
|
return reverse_iterator(m_.buffer + m_.back_idx);
|
|
@@ -806,7 +812,7 @@ class devector
|
|
|
806
812
|
*
|
|
807
813
|
* **Complexity**: Constant.
|
|
808
814
|
*/
|
|
809
|
-
|
|
815
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
810
816
|
const_reverse_iterator rbegin() const BOOST_NOEXCEPT
|
|
811
817
|
{
|
|
812
818
|
return const_reverse_iterator(m_.buffer + m_.back_idx);
|
|
@@ -818,7 +824,7 @@ class devector
|
|
|
818
824
|
*
|
|
819
825
|
* **Complexity**: Constant.
|
|
820
826
|
*/
|
|
821
|
-
|
|
827
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
822
828
|
reverse_iterator rend() BOOST_NOEXCEPT
|
|
823
829
|
{
|
|
824
830
|
return reverse_iterator(m_.buffer + m_.front_idx);
|
|
@@ -830,7 +836,7 @@ class devector
|
|
|
830
836
|
*
|
|
831
837
|
* **Complexity**: Constant.
|
|
832
838
|
*/
|
|
833
|
-
|
|
839
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
834
840
|
const_reverse_iterator rend() const BOOST_NOEXCEPT
|
|
835
841
|
{
|
|
836
842
|
return const_reverse_iterator(m_.buffer + m_.front_idx);
|
|
@@ -842,7 +848,7 @@ class devector
|
|
|
842
848
|
*
|
|
843
849
|
* **Complexity**: Constant.
|
|
844
850
|
*/
|
|
845
|
-
|
|
851
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
846
852
|
const_iterator cbegin() const BOOST_NOEXCEPT
|
|
847
853
|
{
|
|
848
854
|
return m_.buffer + m_.front_idx;
|
|
@@ -865,7 +871,7 @@ class devector
|
|
|
865
871
|
*
|
|
866
872
|
* **Complexity**: Constant.
|
|
867
873
|
*/
|
|
868
|
-
|
|
874
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
869
875
|
const_reverse_iterator crbegin() const BOOST_NOEXCEPT
|
|
870
876
|
{
|
|
871
877
|
return const_reverse_iterator(m_.buffer + m_.back_idx);
|
|
@@ -877,7 +883,7 @@ class devector
|
|
|
877
883
|
*
|
|
878
884
|
* **Complexity**: Constant.
|
|
879
885
|
*/
|
|
880
|
-
|
|
886
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
881
887
|
const_reverse_iterator crend() const BOOST_NOEXCEPT
|
|
882
888
|
{
|
|
883
889
|
return const_reverse_iterator(m_.buffer + m_.front_idx);
|
|
@@ -890,7 +896,7 @@ class devector
|
|
|
890
896
|
*
|
|
891
897
|
* **Complexity**: Constant.
|
|
892
898
|
*/
|
|
893
|
-
|
|
899
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
894
900
|
bool empty() const BOOST_NOEXCEPT
|
|
895
901
|
{
|
|
896
902
|
return m_.front_idx == m_.back_idx;
|
|
@@ -901,7 +907,7 @@ class devector
|
|
|
901
907
|
*
|
|
902
908
|
* **Complexity**: Constant.
|
|
903
909
|
*/
|
|
904
|
-
|
|
910
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
905
911
|
size_type size() const BOOST_NOEXCEPT
|
|
906
912
|
{
|
|
907
913
|
return size_type(m_.back_idx - m_.front_idx);
|
|
@@ -912,7 +918,7 @@ class devector
|
|
|
912
918
|
*
|
|
913
919
|
* **Complexity**: Constant.
|
|
914
920
|
*/
|
|
915
|
-
|
|
921
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
916
922
|
size_type max_size() const BOOST_NOEXCEPT
|
|
917
923
|
{
|
|
918
924
|
size_type alloc_max = allocator_traits_type::max_size(get_allocator_ref());
|
|
@@ -929,7 +935,7 @@ class devector
|
|
|
929
935
|
*
|
|
930
936
|
* **Complexity**: Constant.
|
|
931
937
|
*/
|
|
932
|
-
|
|
938
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
933
939
|
size_type capacity() const BOOST_NOEXCEPT
|
|
934
940
|
{
|
|
935
941
|
size_type const cap_reserve = m_.capacity/devector_min_free_fraction;
|
|
@@ -942,7 +948,7 @@ class devector
|
|
|
942
948
|
*
|
|
943
949
|
* **Complexity**: Constant.
|
|
944
950
|
*/
|
|
945
|
-
|
|
951
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
946
952
|
size_type front_free_capacity() const BOOST_NOEXCEPT
|
|
947
953
|
{
|
|
948
954
|
return m_.front_idx;
|
|
@@ -954,7 +960,7 @@ class devector
|
|
|
954
960
|
*
|
|
955
961
|
* **Complexity**: Constant.
|
|
956
962
|
*/
|
|
957
|
-
|
|
963
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
958
964
|
size_type back_free_capacity() const BOOST_NOEXCEPT
|
|
959
965
|
{
|
|
960
966
|
return size_type(m_.capacity - m_.back_idx);
|
|
@@ -1266,7 +1272,7 @@ class devector
|
|
|
1266
1272
|
*
|
|
1267
1273
|
* **Complexity**: Constant.
|
|
1268
1274
|
*/
|
|
1269
|
-
|
|
1275
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1270
1276
|
reference operator[](size_type n) BOOST_NOEXCEPT
|
|
1271
1277
|
{
|
|
1272
1278
|
BOOST_ASSERT(n < size());
|
|
@@ -1280,7 +1286,7 @@ class devector
|
|
|
1280
1286
|
*
|
|
1281
1287
|
* **Complexity**: Constant.
|
|
1282
1288
|
*/
|
|
1283
|
-
|
|
1289
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1284
1290
|
const_reference operator[](size_type n) const BOOST_NOEXCEPT
|
|
1285
1291
|
{
|
|
1286
1292
|
BOOST_ASSERT(n < size());
|
|
@@ -1298,7 +1304,7 @@ class devector
|
|
|
1298
1304
|
//! <b>Complexity</b>: Constant.
|
|
1299
1305
|
//!
|
|
1300
1306
|
//! <b>Note</b>: Non-standard extension
|
|
1301
|
-
|
|
1307
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1302
1308
|
iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
|
1303
1309
|
{
|
|
1304
1310
|
BOOST_ASSERT(n <= size());
|
|
@@ -1316,7 +1322,7 @@ class devector
|
|
|
1316
1322
|
//! <b>Complexity</b>: Constant.
|
|
1317
1323
|
//!
|
|
1318
1324
|
//! <b>Note</b>: Non-standard extension
|
|
1319
|
-
|
|
1325
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1320
1326
|
const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
|
1321
1327
|
{
|
|
1322
1328
|
BOOST_ASSERT(n <= size());
|
|
@@ -1333,7 +1339,7 @@ class devector
|
|
|
1333
1339
|
//! <b>Complexity</b>: Constant.
|
|
1334
1340
|
//!
|
|
1335
1341
|
//! <b>Note</b>: Non-standard extension
|
|
1336
|
-
|
|
1342
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1337
1343
|
size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
|
1338
1344
|
{
|
|
1339
1345
|
BOOST_ASSERT(p >= begin());
|
|
@@ -1351,7 +1357,7 @@ class devector
|
|
|
1351
1357
|
//! <b>Complexity</b>: Constant.
|
|
1352
1358
|
//!
|
|
1353
1359
|
//! <b>Note</b>: Non-standard extension
|
|
1354
|
-
|
|
1360
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1355
1361
|
size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
|
1356
1362
|
{
|
|
1357
1363
|
BOOST_ASSERT(p >= cbegin());
|
|
@@ -1366,7 +1372,7 @@ class devector
|
|
|
1366
1372
|
*
|
|
1367
1373
|
* **Complexity**: Constant.
|
|
1368
1374
|
*/
|
|
1369
|
-
|
|
1375
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1370
1376
|
reference at(size_type n)
|
|
1371
1377
|
{
|
|
1372
1378
|
if (size() <= n)
|
|
@@ -1381,7 +1387,7 @@ class devector
|
|
|
1381
1387
|
*
|
|
1382
1388
|
* **Complexity**: Constant.
|
|
1383
1389
|
*/
|
|
1384
|
-
|
|
1390
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1385
1391
|
const_reference at(size_type n) const
|
|
1386
1392
|
{
|
|
1387
1393
|
if (size() <= n)
|
|
@@ -1396,7 +1402,7 @@ class devector
|
|
|
1396
1402
|
*
|
|
1397
1403
|
* **Complexity**: Constant.
|
|
1398
1404
|
*/
|
|
1399
|
-
|
|
1405
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1400
1406
|
reference front() BOOST_NOEXCEPT
|
|
1401
1407
|
{
|
|
1402
1408
|
BOOST_ASSERT(!empty());
|
|
@@ -1411,7 +1417,7 @@ class devector
|
|
|
1411
1417
|
*
|
|
1412
1418
|
* **Complexity**: Constant.
|
|
1413
1419
|
*/
|
|
1414
|
-
|
|
1420
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1415
1421
|
const_reference front() const BOOST_NOEXCEPT
|
|
1416
1422
|
{
|
|
1417
1423
|
BOOST_ASSERT(!empty());
|
|
@@ -1426,7 +1432,7 @@ class devector
|
|
|
1426
1432
|
*
|
|
1427
1433
|
* **Complexity**: Constant.
|
|
1428
1434
|
*/
|
|
1429
|
-
|
|
1435
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1430
1436
|
reference back() BOOST_NOEXCEPT
|
|
1431
1437
|
{
|
|
1432
1438
|
BOOST_ASSERT(!empty());
|
|
@@ -1441,7 +1447,7 @@ class devector
|
|
|
1441
1447
|
*
|
|
1442
1448
|
* **Complexity**: Constant.
|
|
1443
1449
|
*/
|
|
1444
|
-
|
|
1450
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1445
1451
|
const_reference back() const BOOST_NOEXCEPT
|
|
1446
1452
|
{
|
|
1447
1453
|
BOOST_ASSERT(!empty());
|
|
@@ -1456,7 +1462,7 @@ class devector
|
|
|
1456
1462
|
*
|
|
1457
1463
|
* **Complexity**: Constant.
|
|
1458
1464
|
*/
|
|
1459
|
-
|
|
1465
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1460
1466
|
T* data() BOOST_NOEXCEPT
|
|
1461
1467
|
{
|
|
1462
1468
|
return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx;
|
|
@@ -1469,7 +1475,7 @@ class devector
|
|
|
1469
1475
|
*
|
|
1470
1476
|
* **Complexity**: Constant.
|
|
1471
1477
|
*/
|
|
1472
|
-
|
|
1478
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
1473
1479
|
const T* data() const BOOST_NOEXCEPT
|
|
1474
1480
|
{
|
|
1475
1481
|
return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx;
|
|
@@ -1493,7 +1499,7 @@ class devector
|
|
|
1493
1499
|
* [EmplaceConstructible]: http://en.cppreference.com/w/cpp/concept/EmplaceConstructible
|
|
1494
1500
|
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
|
|
1495
1501
|
*/
|
|
1496
|
-
#if
|
|
1502
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1497
1503
|
template <class... Args>
|
|
1498
1504
|
reference emplace_front(Args&&... args)
|
|
1499
1505
|
{
|
|
@@ -1512,7 +1518,7 @@ class devector
|
|
|
1512
1518
|
}
|
|
1513
1519
|
}
|
|
1514
1520
|
|
|
1515
|
-
#else
|
|
1521
|
+
#else //defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1516
1522
|
|
|
1517
1523
|
#define BOOST_CONTAINER_DEVECTOR_EMPLACE_FRONT(N) \
|
|
1518
1524
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
@@ -1609,7 +1615,7 @@ class devector
|
|
|
1609
1615
|
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
|
|
1610
1616
|
* [MoveAssignable]: http://en.cppreference.com/w/cpp/concept/MoveAssignable
|
|
1611
1617
|
*/
|
|
1612
|
-
#if
|
|
1618
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1613
1619
|
template <class... Args>
|
|
1614
1620
|
inline reference emplace_back(Args&&... args)
|
|
1615
1621
|
{
|
|
@@ -1626,7 +1632,7 @@ class devector
|
|
|
1626
1632
|
}
|
|
1627
1633
|
}
|
|
1628
1634
|
|
|
1629
|
-
#else
|
|
1635
|
+
#else //defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1630
1636
|
|
|
1631
1637
|
#define BOOST_CONTAINER_DEVECTOR_EMPLACE_BACK(N) \
|
|
1632
1638
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
@@ -1647,7 +1653,7 @@ class devector
|
|
|
1647
1653
|
BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DEVECTOR_EMPLACE_BACK)
|
|
1648
1654
|
#undef BOOST_CONTAINER_DEVECTOR_EMPLACE_BACK
|
|
1649
1655
|
|
|
1650
|
-
#endif
|
|
1656
|
+
#endif //defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1651
1657
|
|
|
1652
1658
|
|
|
1653
1659
|
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
@@ -1723,7 +1729,7 @@ class devector
|
|
|
1723
1729
|
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
|
|
1724
1730
|
* [MoveAssignable]: http://en.cppreference.com/w/cpp/concept/MoveAssignable
|
|
1725
1731
|
*/
|
|
1726
|
-
#if
|
|
1732
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1727
1733
|
template <class... Args>
|
|
1728
1734
|
iterator emplace(const_iterator position, Args&&... args)
|
|
1729
1735
|
{
|
|
@@ -1754,11 +1760,12 @@ class devector
|
|
|
1754
1760
|
else{
|
|
1755
1761
|
iterator nonconst_pos = unconst_iterator(position);
|
|
1756
1762
|
prefer_move_back = should_move_back(position);
|
|
1763
|
+
allocator_type &al = this->get_allocator_ref();
|
|
1757
1764
|
|
|
1758
1765
|
if(prefer_move_back){
|
|
1759
1766
|
if(back_free_capacity()){
|
|
1760
1767
|
boost::container::expand_forward_and_insert_nonempty_middle_alloc
|
|
1761
|
-
(
|
|
1768
|
+
( al
|
|
1762
1769
|
, boost::movelib::to_raw_pointer(nonconst_pos)
|
|
1763
1770
|
, this->priv_raw_end()
|
|
1764
1771
|
, 1, proxy_t(::boost::forward<Args>(args)...));
|
|
@@ -1769,7 +1776,7 @@ class devector
|
|
|
1769
1776
|
else{
|
|
1770
1777
|
if (front_free_capacity()){
|
|
1771
1778
|
boost::container::expand_backward_and_insert_nonempty_middle_alloc
|
|
1772
|
-
(
|
|
1779
|
+
(al
|
|
1773
1780
|
, this->priv_raw_begin()
|
|
1774
1781
|
, boost::movelib::to_raw_pointer(nonconst_pos)
|
|
1775
1782
|
, 1, proxy_t(::boost::forward<Args>(args)...));
|
|
@@ -1781,7 +1788,7 @@ class devector
|
|
|
1781
1788
|
return this->insert_range_slow_path(position, 1, proxy_t(::boost::forward<Args>(args)...));
|
|
1782
1789
|
}
|
|
1783
1790
|
|
|
1784
|
-
#else
|
|
1791
|
+
#else //defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1785
1792
|
|
|
1786
1793
|
#define BOOST_CONTAINER_DEVECTOR_EMPLACE(N) \
|
|
1787
1794
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
@@ -1814,11 +1821,12 @@ class devector
|
|
|
1814
1821
|
else{\
|
|
1815
1822
|
iterator nonconst_pos = unconst_iterator(position);\
|
|
1816
1823
|
prefer_move_back = should_move_back(position);\
|
|
1824
|
+
allocator_type &al = this->get_allocator_ref();\
|
|
1817
1825
|
\
|
|
1818
1826
|
if(prefer_move_back){\
|
|
1819
1827
|
if(back_free_capacity()){\
|
|
1820
1828
|
boost::container::expand_forward_and_insert_nonempty_middle_alloc\
|
|
1821
|
-
(
|
|
1829
|
+
( al\
|
|
1822
1830
|
, boost::movelib::to_raw_pointer(nonconst_pos)\
|
|
1823
1831
|
, this->priv_raw_end()\
|
|
1824
1832
|
, 1, proxy_t(BOOST_MOVE_FWD##N));\
|
|
@@ -1829,7 +1837,7 @@ class devector
|
|
|
1829
1837
|
else{\
|
|
1830
1838
|
if (front_free_capacity()){\
|
|
1831
1839
|
boost::container::expand_backward_and_insert_nonempty_middle_alloc\
|
|
1832
|
-
(
|
|
1840
|
+
(al\
|
|
1833
1841
|
, this->priv_raw_begin()\
|
|
1834
1842
|
, boost::movelib::to_raw_pointer(nonconst_pos)\
|
|
1835
1843
|
, 1, proxy_t(BOOST_MOVE_FWD##N));\
|
|
@@ -1844,7 +1852,7 @@ class devector
|
|
|
1844
1852
|
BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DEVECTOR_EMPLACE)
|
|
1845
1853
|
#undef BOOST_CONTAINER_DEVECTOR_EMPLACE
|
|
1846
1854
|
|
|
1847
|
-
#endif
|
|
1855
|
+
#endif //defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
1848
1856
|
|
|
1849
1857
|
|
|
1850
1858
|
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
@@ -1927,7 +1935,7 @@ class devector
|
|
|
1927
1935
|
* **Complexity**: Linear in the size of `*this` and `N` (where `N` is the distance between `first` and `last`).
|
|
1928
1936
|
* Makes only `N` calls to the constructor of `T` and no reallocations if iterators `first` and `last`
|
|
1929
1937
|
* are of forward, bidirectional, or random access categories. It makes 2N calls to the copy constructor of `T`
|
|
1930
|
-
* and `O(log(N)) reallocations if they are just input iterators.
|
|
1938
|
+
* and `O(log(N))` reallocations if they are just input iterators.
|
|
1931
1939
|
*
|
|
1932
1940
|
* **Exceptions**: Strong exception guarantee if `T` is `NothrowConstructible`
|
|
1933
1941
|
* and `NothrowAssignable`, Basic exception guarantee otherwise.
|
|
@@ -2072,13 +2080,11 @@ class devector
|
|
|
2072
2080
|
size_type back_distance = size_type(end() - first);
|
|
2073
2081
|
size_type n = boost::container::iterator_udistance(first, last);
|
|
2074
2082
|
|
|
2075
|
-
if (front_distance < back_distance)
|
|
2076
|
-
{
|
|
2083
|
+
if (front_distance < back_distance) {
|
|
2077
2084
|
// move n to the right
|
|
2078
2085
|
boost::container::move_backward(begin(), first, last);
|
|
2079
2086
|
|
|
2080
|
-
for (iterator i = begin(); i != begin() + n; ++i)
|
|
2081
|
-
{
|
|
2087
|
+
for (iterator i = begin(); i != begin() + n; ++i) {
|
|
2082
2088
|
allocator_traits_type::destroy(get_allocator_ref(), boost::movelib::to_raw_pointer(i));
|
|
2083
2089
|
}
|
|
2084
2090
|
//n is always less than max stored_size_type
|
|
@@ -2152,30 +2158,30 @@ class devector
|
|
|
2152
2158
|
void clear() BOOST_NOEXCEPT
|
|
2153
2159
|
{
|
|
2154
2160
|
destroy_elements(begin(), end());
|
|
2155
|
-
m_.
|
|
2161
|
+
m_.back_idx = m_.front_idx;
|
|
2156
2162
|
}
|
|
2157
2163
|
|
|
2158
|
-
|
|
2164
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2159
2165
|
friend bool operator==(const devector& x, const devector& y)
|
|
2160
2166
|
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
|
2161
2167
|
|
|
2162
|
-
|
|
2168
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2163
2169
|
friend bool operator!=(const devector& x, const devector& y)
|
|
2164
2170
|
{ return !(x == y); }
|
|
2165
2171
|
|
|
2166
|
-
|
|
2172
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2167
2173
|
friend bool operator< (const devector& x, const devector& y)
|
|
2168
2174
|
{ return boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
|
2169
2175
|
|
|
2170
|
-
|
|
2176
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2171
2177
|
friend bool operator>(const devector& x, const devector& y)
|
|
2172
2178
|
{ return y < x; }
|
|
2173
2179
|
|
|
2174
|
-
|
|
2180
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2175
2181
|
friend bool operator<=(const devector& x, const devector& y)
|
|
2176
2182
|
{ return !(y < x); }
|
|
2177
2183
|
|
|
2178
|
-
|
|
2184
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2179
2185
|
friend bool operator>=(const devector& x, const devector& y)
|
|
2180
2186
|
{ return !(x < y); }
|
|
2181
2187
|
|
|
@@ -2204,8 +2210,6 @@ class devector
|
|
|
2204
2210
|
}
|
|
2205
2211
|
}
|
|
2206
2212
|
|
|
2207
|
-
#endif
|
|
2208
|
-
|
|
2209
2213
|
private:
|
|
2210
2214
|
|
|
2211
2215
|
void priv_move_assign(BOOST_RV_REF(devector) x, dtl::bool_<true> /*steal_resources*/)
|
|
@@ -2247,21 +2251,21 @@ class devector
|
|
|
2247
2251
|
dtl::move_alloc(this->get_allocator_ref(), x.get_allocator_ref(), flag);
|
|
2248
2252
|
|
|
2249
2253
|
if (m_.capacity >= x.size()) {
|
|
2250
|
-
overwrite_buffer(xbegin, xend);
|
|
2254
|
+
this->overwrite_buffer(xbegin, xend);
|
|
2251
2255
|
}
|
|
2252
2256
|
else {
|
|
2253
|
-
allocate_and_copy_range(xbegin, xend);
|
|
2257
|
+
this->allocate_and_copy_range(xbegin, xend);
|
|
2254
2258
|
}
|
|
2255
2259
|
}
|
|
2256
2260
|
}
|
|
2257
2261
|
|
|
2258
|
-
|
|
2262
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2259
2263
|
size_type pos_to_index(const_iterator i) const
|
|
2260
2264
|
{
|
|
2261
2265
|
return static_cast<size_type>(i - cbegin());
|
|
2262
2266
|
}
|
|
2263
2267
|
|
|
2264
|
-
|
|
2268
|
+
BOOST_CONTAINER_NODISCARD inline
|
|
2265
2269
|
bool should_move_back(const_iterator i) const
|
|
2266
2270
|
{
|
|
2267
2271
|
return static_cast<size_type>(this->pos_to_index(i)) >= this->size()/2u;
|
|
@@ -2272,8 +2276,6 @@ class devector
|
|
|
2272
2276
|
return boost::intrusive::pointer_traits<pointer>::const_cast_from(i);
|
|
2273
2277
|
}
|
|
2274
2278
|
|
|
2275
|
-
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
2276
|
-
|
|
2277
2279
|
inline T* priv_raw_begin() BOOST_NOEXCEPT
|
|
2278
2280
|
{ return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx; }
|
|
2279
2281
|
|
|
@@ -2322,16 +2324,14 @@ class devector
|
|
|
2322
2324
|
|
|
2323
2325
|
void destroy_elements(pointer b, pointer e)
|
|
2324
2326
|
{
|
|
2325
|
-
for (; b != e; ++b)
|
|
2326
|
-
{
|
|
2327
|
+
for (; b != e; ++b) {
|
|
2327
2328
|
allocator_traits_type::destroy(get_allocator_ref(), boost::movelib::to_raw_pointer(b));
|
|
2328
2329
|
}
|
|
2329
2330
|
}
|
|
2330
2331
|
|
|
2331
2332
|
void deallocate_buffer()
|
|
2332
2333
|
{
|
|
2333
|
-
if (m_.buffer)
|
|
2334
|
-
{
|
|
2334
|
+
if (m_.buffer) {
|
|
2335
2335
|
allocator_traits_type::deallocate(get_allocator_ref(), m_.buffer, m_.capacity);
|
|
2336
2336
|
}
|
|
2337
2337
|
}
|
|
@@ -2364,7 +2364,7 @@ class devector
|
|
|
2364
2364
|
}
|
|
2365
2365
|
}
|
|
2366
2366
|
|
|
2367
|
-
#else
|
|
2367
|
+
#else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
2368
2368
|
|
|
2369
2369
|
#define BOOST_CONTAINER_DEVECTOR_ALLOC_CONSTRUCT(N) \
|
|
2370
2370
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
@@ -2394,7 +2394,7 @@ class devector
|
|
|
2394
2394
|
BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DEVECTOR_ALLOC_CONSTRUCT)
|
|
2395
2395
|
#undef BOOST_CONTAINER_DEVECTOR_ALLOC_CONSTRUCT
|
|
2396
2396
|
|
|
2397
|
-
#endif
|
|
2397
|
+
#endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
2398
2398
|
|
|
2399
2399
|
size_type calculate_new_capacity(size_type requested_capacity)
|
|
2400
2400
|
{
|
|
@@ -2408,31 +2408,6 @@ class devector
|
|
|
2408
2408
|
return growth_factor_type()( size_type(m_.capacity), min_additional_cap, max);
|
|
2409
2409
|
}
|
|
2410
2410
|
|
|
2411
|
-
void buffer_move_or_copy(pointer dst)
|
|
2412
|
-
{
|
|
2413
|
-
detail::construction_guard<allocator_type> guard(dst, get_allocator_ref());
|
|
2414
|
-
|
|
2415
|
-
buffer_move_or_copy(dst, guard);
|
|
2416
|
-
|
|
2417
|
-
guard.release();
|
|
2418
|
-
}
|
|
2419
|
-
|
|
2420
|
-
void buffer_move_or_copy(pointer dst, detail::construction_guard<allocator_type>& guard)
|
|
2421
|
-
{
|
|
2422
|
-
opt_move_or_copy(begin(), end(), dst, guard);
|
|
2423
|
-
|
|
2424
|
-
destroy_elements(data(), data() + size());
|
|
2425
|
-
deallocate_buffer();
|
|
2426
|
-
}
|
|
2427
|
-
|
|
2428
|
-
template <typename Guard>
|
|
2429
|
-
void opt_move_or_copy(pointer b, pointer e, pointer dst, Guard& guard)
|
|
2430
|
-
{
|
|
2431
|
-
// if trivial copy and default allocator, memcpy
|
|
2432
|
-
boost::container::uninitialized_move_alloc(get_allocator_ref(), b, e, dst);
|
|
2433
|
-
guard.extend();
|
|
2434
|
-
}
|
|
2435
|
-
|
|
2436
2411
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
2437
2412
|
|
|
2438
2413
|
template <typename... Args>
|
|
@@ -2499,18 +2474,25 @@ class devector
|
|
|
2499
2474
|
template <typename... Args>
|
|
2500
2475
|
void resize_front_slow_path(size_type sz, size_type n, Args&&... args)
|
|
2501
2476
|
{
|
|
2502
|
-
const size_type
|
|
2477
|
+
const size_type back_free_cap = back_free_capacity();
|
|
2478
|
+
const size_type new_capacity = calculate_new_capacity(sz + back_free_cap);
|
|
2503
2479
|
pointer new_buffer = allocate(new_capacity);
|
|
2504
|
-
allocation_guard new_buffer_guard(new_buffer, new_capacity, get_allocator_ref());
|
|
2505
2480
|
|
|
2506
|
-
|
|
2507
|
-
|
|
2481
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2482
|
+
allocation_guard new_buffer_guard(new_buffer, new_capacity, al);
|
|
2483
|
+
|
|
2484
|
+
const size_type new_old_elem_index = new_capacity - this->size() - back_free_cap;
|
|
2508
2485
|
const size_type new_elem_index = new_old_elem_index - n;
|
|
2509
2486
|
|
|
2510
|
-
detail::construction_guard<allocator_type> guard(new_buffer + new_elem_index,
|
|
2487
|
+
detail::construction_guard<allocator_type> guard(new_buffer + new_elem_index, al);
|
|
2511
2488
|
guarded_construct_n(new_buffer + new_elem_index, n, guard, boost::forward<Args>(args)...);
|
|
2512
2489
|
|
|
2513
|
-
|
|
2490
|
+
//This might throw
|
|
2491
|
+
boost::container::uninitialized_move_alloc(al, begin(), end(), new_buffer + new_old_elem_index);
|
|
2492
|
+
|
|
2493
|
+
//This can't throw
|
|
2494
|
+
this->destroy_elements(data(), data() + size());
|
|
2495
|
+
this->deallocate_buffer();
|
|
2514
2496
|
|
|
2515
2497
|
guard.release();
|
|
2516
2498
|
new_buffer_guard.release();
|
|
@@ -2518,7 +2500,7 @@ class devector
|
|
|
2518
2500
|
m_.buffer = new_buffer;
|
|
2519
2501
|
m_.set_capacity(new_capacity);
|
|
2520
2502
|
m_.set_front_idx(new_elem_index);
|
|
2521
|
-
m_.set_back_idx(new_elem_index +
|
|
2503
|
+
m_.set_back_idx(new_elem_index + sz);
|
|
2522
2504
|
}
|
|
2523
2505
|
|
|
2524
2506
|
template <typename... Args>
|
|
@@ -2553,12 +2535,19 @@ class devector
|
|
|
2553
2535
|
{
|
|
2554
2536
|
const size_type new_capacity = calculate_new_capacity(sz + front_free_capacity());
|
|
2555
2537
|
pointer new_buffer = allocate(new_capacity);
|
|
2556
|
-
allocation_guard new_buffer_guard(new_buffer, new_capacity, get_allocator_ref());
|
|
2557
2538
|
|
|
2558
|
-
|
|
2539
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2540
|
+
allocation_guard new_buffer_guard(new_buffer, new_capacity, al);
|
|
2541
|
+
|
|
2542
|
+
detail::construction_guard<allocator_type> guard(new_buffer + m_.back_idx, al);
|
|
2559
2543
|
guarded_construct_n(new_buffer + m_.back_idx, n, guard, boost::forward<Args>(args)...);
|
|
2560
2544
|
|
|
2561
|
-
|
|
2545
|
+
//This might throw
|
|
2546
|
+
boost::container::uninitialized_move_alloc(al, begin(), end(), new_buffer + m_.front_idx);
|
|
2547
|
+
|
|
2548
|
+
//This can't throw
|
|
2549
|
+
this->destroy_elements(data(), data() + size());
|
|
2550
|
+
this->deallocate_buffer();
|
|
2562
2551
|
|
|
2563
2552
|
guard.release();
|
|
2564
2553
|
new_buffer_guard.release();
|
|
@@ -2568,7 +2557,7 @@ class devector
|
|
|
2568
2557
|
m_.set_back_idx(m_.back_idx + n);
|
|
2569
2558
|
}
|
|
2570
2559
|
|
|
2571
|
-
#else
|
|
2560
|
+
#else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
2572
2561
|
|
|
2573
2562
|
#define BOOST_CONTAINER_DEVECTOR_SLOW_PATH(N) \
|
|
2574
2563
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
@@ -2597,24 +2586,30 @@ class devector
|
|
|
2597
2586
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
2598
2587
|
void resize_front_slow_path(size_type sz, size_type n BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
2599
2588
|
{\
|
|
2600
|
-
const size_type
|
|
2589
|
+
const size_type back_free_cap = back_free_capacity();\
|
|
2590
|
+
const size_type new_capacity = calculate_new_capacity(sz + back_free_cap);\
|
|
2601
2591
|
pointer new_buffer = allocate(new_capacity);\
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2592
|
+
allocator_type &al = this->get_allocator_ref();\
|
|
2593
|
+
allocation_guard new_buffer_guard(new_buffer, new_capacity, al);\
|
|
2594
|
+
\
|
|
2595
|
+
const size_type new_old_elem_index = new_capacity - size() - back_free_cap;\
|
|
2605
2596
|
const size_type new_elem_index = new_old_elem_index - n;\
|
|
2606
|
-
|
|
2607
|
-
detail::construction_guard<allocator_type> guard(new_buffer + new_elem_index,
|
|
2597
|
+
\
|
|
2598
|
+
detail::construction_guard<allocator_type> guard(new_buffer + new_elem_index, al);\
|
|
2608
2599
|
guarded_construct_n(new_buffer + new_elem_index, n, guard BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2600
|
+
\
|
|
2601
|
+
boost::container::uninitialized_move_alloc(al, begin(), end(), new_buffer + new_old_elem_index);\
|
|
2602
|
+
\
|
|
2612
2603
|
guard.release();\
|
|
2613
2604
|
new_buffer_guard.release();\
|
|
2605
|
+
\
|
|
2606
|
+
this->destroy_elements(data(), data() + size());\
|
|
2607
|
+
this->deallocate_buffer();\
|
|
2608
|
+
\
|
|
2614
2609
|
m_.buffer = new_buffer;\
|
|
2615
2610
|
m_.set_capacity(new_capacity);\
|
|
2616
|
-
m_.set_back_idx(new_old_elem_index + m_.back_idx - m_.front_idx);\
|
|
2617
2611
|
m_.set_front_idx(new_elem_index);\
|
|
2612
|
+
m_.set_back_idx(new_elem_index + sz);\
|
|
2618
2613
|
}\
|
|
2619
2614
|
\
|
|
2620
2615
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
|
@@ -2648,12 +2643,16 @@ class devector
|
|
|
2648
2643
|
{\
|
|
2649
2644
|
const size_type new_capacity = calculate_new_capacity(sz + front_free_capacity());\
|
|
2650
2645
|
pointer new_buffer = allocate(new_capacity);\
|
|
2651
|
-
|
|
2646
|
+
allocator_type &al = this->get_allocator_ref();\
|
|
2647
|
+
allocation_guard new_buffer_guard(new_buffer, new_capacity, al);\
|
|
2652
2648
|
\
|
|
2653
|
-
detail::construction_guard<allocator_type> guard(new_buffer + m_.back_idx,
|
|
2649
|
+
detail::construction_guard<allocator_type> guard(new_buffer + m_.back_idx, al);\
|
|
2654
2650
|
guarded_construct_n(new_buffer + m_.back_idx, n, guard BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
2655
2651
|
\
|
|
2656
|
-
|
|
2652
|
+
boost::container::uninitialized_move_alloc(al, begin(), end(), new_buffer + m_.front_idx);\
|
|
2653
|
+
\
|
|
2654
|
+
this->destroy_elements(data(), data() + size());\
|
|
2655
|
+
this->deallocate_buffer();\
|
|
2657
2656
|
\
|
|
2658
2657
|
guard.release();\
|
|
2659
2658
|
new_buffer_guard.release();\
|
|
@@ -2667,18 +2666,19 @@ class devector
|
|
|
2667
2666
|
BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DEVECTOR_SLOW_PATH)
|
|
2668
2667
|
#undef BOOST_CONTAINER_DEVECTOR_SLOW_PATH
|
|
2669
2668
|
|
|
2670
|
-
#endif
|
|
2669
|
+
#endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
2671
2670
|
|
|
2672
2671
|
void reallocate_at(size_type new_capacity, size_type buffer_offset)
|
|
2673
2672
|
{
|
|
2674
2673
|
pointer new_buffer = allocate(new_capacity);
|
|
2675
2674
|
{
|
|
2676
|
-
|
|
2677
|
-
|
|
2675
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2676
|
+
allocation_guard new_buffer_guard(new_buffer, new_capacity, al);
|
|
2677
|
+
boost::container::uninitialized_move_alloc(al, this->begin(), this->end(), new_buffer + buffer_offset);
|
|
2678
2678
|
new_buffer_guard.release();
|
|
2679
2679
|
}
|
|
2680
|
-
destroy_elements(m_.buffer + m_.front_idx, m_.buffer + m_.back_idx);
|
|
2681
|
-
deallocate_buffer();
|
|
2680
|
+
this->destroy_elements(m_.buffer + m_.front_idx, m_.buffer + m_.back_idx);
|
|
2681
|
+
this->deallocate_buffer();
|
|
2682
2682
|
|
|
2683
2683
|
m_.buffer = new_buffer;
|
|
2684
2684
|
//Safe cast, allocate() will handle stored_size_type overflow
|
|
@@ -2698,6 +2698,8 @@ class devector
|
|
|
2698
2698
|
|
|
2699
2699
|
size_type const n = boost::container::iterator_udistance(first, last);
|
|
2700
2700
|
bool prefer_move_back;
|
|
2701
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2702
|
+
|
|
2701
2703
|
if (BOOST_UNLIKELY(!n)) {
|
|
2702
2704
|
return begin() + size_type(position - cbegin());
|
|
2703
2705
|
}
|
|
@@ -2705,7 +2707,7 @@ class devector
|
|
|
2705
2707
|
if(back_free_capacity() >= n) // fast path
|
|
2706
2708
|
{
|
|
2707
2709
|
iterator r(this->end());
|
|
2708
|
-
boost::container::uninitialized_copy_alloc(
|
|
2710
|
+
boost::container::uninitialized_copy_alloc(al, first, last, this->priv_raw_end());
|
|
2709
2711
|
m_.set_back_idx(m_.back_idx + n);
|
|
2710
2712
|
return r;
|
|
2711
2713
|
}
|
|
@@ -2713,7 +2715,7 @@ class devector
|
|
|
2713
2715
|
}
|
|
2714
2716
|
else if (position == begin()) {
|
|
2715
2717
|
if(front_free_capacity() >= n) {// secondary fast path
|
|
2716
|
-
boost::container::uninitialized_copy_alloc(
|
|
2718
|
+
boost::container::uninitialized_copy_alloc(al, first, last, this->priv_raw_begin() - n);
|
|
2717
2719
|
m_.set_front_idx(m_.front_idx - n);
|
|
2718
2720
|
return begin();
|
|
2719
2721
|
}
|
|
@@ -2726,7 +2728,7 @@ class devector
|
|
|
2726
2728
|
if(prefer_move_back){
|
|
2727
2729
|
if(back_free_capacity() >= n){
|
|
2728
2730
|
boost::container::expand_forward_and_insert_nonempty_middle_alloc
|
|
2729
|
-
(
|
|
2731
|
+
( al
|
|
2730
2732
|
, boost::movelib::to_raw_pointer(nonconst_pos)
|
|
2731
2733
|
, this->priv_raw_end()
|
|
2732
2734
|
, n, proxy_t(first));
|
|
@@ -2737,7 +2739,7 @@ class devector
|
|
|
2737
2739
|
else{
|
|
2738
2740
|
if (front_free_capacity() >= n){
|
|
2739
2741
|
boost::container::expand_backward_and_insert_nonempty_middle_alloc
|
|
2740
|
-
(
|
|
2742
|
+
( al
|
|
2741
2743
|
, this->priv_raw_begin()
|
|
2742
2744
|
, boost::movelib::to_raw_pointer(nonconst_pos)
|
|
2743
2745
|
, n, proxy_t(first));
|
|
@@ -2759,6 +2761,8 @@ class devector
|
|
|
2759
2761
|
size_type const index = size_type(p - cbegin());
|
|
2760
2762
|
|
|
2761
2763
|
size_type const cap = m_.capacity;
|
|
2764
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2765
|
+
|
|
2762
2766
|
//Test if enough free memory would be left
|
|
2763
2767
|
if (free_cap >= n && (free_cap - n) >= cap/devector_min_free_fraction) {
|
|
2764
2768
|
size_type const old_size = this->size();
|
|
@@ -2771,7 +2775,7 @@ class devector
|
|
|
2771
2775
|
m_.back_idx = 0u;
|
|
2772
2776
|
m_.front_idx = 0u;
|
|
2773
2777
|
boost::container::expand_backward_forward_and_insert_alloc
|
|
2774
|
-
(raw_beg, old_size, new_raw_beg, raw_pos, n, proxy,
|
|
2778
|
+
(raw_beg, old_size, new_raw_beg, raw_pos, n, proxy, al);
|
|
2775
2779
|
m_.set_front_idx(new_front_idx);
|
|
2776
2780
|
m_.set_back_idx(new_front_idx + new_size);
|
|
2777
2781
|
}
|
|
@@ -2781,7 +2785,7 @@ class devector
|
|
|
2781
2785
|
pointer new_buffer = allocate(new_capacity);
|
|
2782
2786
|
|
|
2783
2787
|
// guard allocation
|
|
2784
|
-
allocation_guard new_buffer_guard(new_buffer, new_capacity,
|
|
2788
|
+
allocation_guard new_buffer_guard(new_buffer, new_capacity, al);
|
|
2785
2789
|
|
|
2786
2790
|
size_type const old_size = this->size();
|
|
2787
2791
|
const size_type new_front_index = (new_capacity - old_size - n) / 2u;
|
|
@@ -2790,7 +2794,7 @@ class devector
|
|
|
2790
2794
|
T* const raw_new_start = const_cast<T*>(boost::movelib::to_raw_pointer(new_buffer)) + new_front_index;
|
|
2791
2795
|
|
|
2792
2796
|
boost::container::uninitialized_move_and_insert_alloc
|
|
2793
|
-
(
|
|
2797
|
+
(al, this->priv_raw_begin(), raw_pos, this->priv_raw_end(), raw_new_start, n, proxy);
|
|
2794
2798
|
new_buffer_guard.release();
|
|
2795
2799
|
|
|
2796
2800
|
// cleanup
|
|
@@ -2821,10 +2825,11 @@ class devector
|
|
|
2821
2825
|
size_type n = boost::container::iterator_udistance(first, last);
|
|
2822
2826
|
|
|
2823
2827
|
pointer new_buffer = n ? allocate(n) : pointer();
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2829
|
+
allocation_guard new_buffer_guard(new_buffer, n, al);
|
|
2830
|
+
boost::container::uninitialized_copy_alloc(al, first, last, new_buffer);
|
|
2831
|
+
this->destroy_elements(begin(), end());
|
|
2832
|
+
this->deallocate_buffer();
|
|
2828
2833
|
|
|
2829
2834
|
m_.set_capacity(n);
|
|
2830
2835
|
m_.buffer = new_buffer;
|
|
@@ -2857,7 +2862,8 @@ class devector
|
|
|
2857
2862
|
InputIterator overwrite_buffer_impl(InputIterator first, InputIterator last, dtl::false_)
|
|
2858
2863
|
{
|
|
2859
2864
|
pointer pos = m_.buffer;
|
|
2860
|
-
|
|
2865
|
+
allocator_type &al = this->get_allocator_ref();
|
|
2866
|
+
detail::construction_guard<allocator_type> front_guard(pos, al);
|
|
2861
2867
|
|
|
2862
2868
|
while (first != last && pos != begin()) {
|
|
2863
2869
|
this->alloc_construct(pos++, *first++);
|
|
@@ -2868,7 +2874,7 @@ class devector
|
|
|
2868
2874
|
*pos++ = *first++;
|
|
2869
2875
|
}
|
|
2870
2876
|
|
|
2871
|
-
detail::construction_guard<allocator_type> back_guard(pos,
|
|
2877
|
+
detail::construction_guard<allocator_type> back_guard(pos, al);
|
|
2872
2878
|
|
|
2873
2879
|
iterator capacity_end = m_.buffer + m_.capacity;
|
|
2874
2880
|
while (first != last && pos != capacity_end) {
|
|
@@ -3074,7 +3080,7 @@ template <class T, class Allocator, class Options>
|
|
|
3074
3080
|
struct has_trivial_destructor_after_move<boost::container::devector<T, Allocator, Options> >
|
|
3075
3081
|
{
|
|
3076
3082
|
typedef typename boost::container::devector<T, Allocator, Options>::allocator_type allocator_type;
|
|
3077
|
-
typedef typename
|
|
3083
|
+
typedef typename boost::container::allocator_traits<allocator_type>::pointer pointer;
|
|
3078
3084
|
BOOST_STATIC_CONSTEXPR bool value =
|
|
3079
3085
|
::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
|
3080
3086
|
::boost::has_trivial_destructor_after_move<pointer>::value;
|