passenger 6.0.22 → 6.0.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +59 -1
- data/Rakefile +13 -2
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +18 -2
- data/build/apache2.rb +1 -1
- data/build/basics.rb +10 -4
- data/build/cxx_tests.rb +18 -7
- data/build/support/cxx_dependency_map.rb +40 -6
- data/build/test_basics.rb +24 -13
- data/package.json +1 -1
- data/passenger.gemspec +4 -2
- data/resources/templates/standalone/server.erb +1 -0
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +9 -1
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group.h +15 -5
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -4
- data/src/agent/Core/ApplicationPool/Pool.h +0 -2
- data/src/agent/Core/ApplicationPool/Process.h +22 -6
- data/src/agent/Core/ApplicationPool/Session.h +6 -1
- data/src/agent/Core/Config.h +8 -3
- data/src/agent/Core/Controller/CheckoutSession.cpp +24 -1
- data/src/agent/Core/Controller/Config.h +5 -1
- data/src/agent/Core/Controller.h +1 -0
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/OptionParser.h +3 -0
- data/src/agent/Core/SpawningKit/ErrorRenderer.h +5 -0
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
- data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +4 -0
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
- data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
- data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
- data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
- data/src/agent/Watchdog/Config.h +2 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +15 -0
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +5 -0
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +13 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +16 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/LString.h +4 -0
- data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -3
- data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
- data/src/cxx_supportlib/ServerKit/Server.h +0 -6
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
- data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
- data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
- data/src/nginx_module/Configuration.c +7 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +6 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +14 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
- data/src/ruby_native_extension/passenger_native_support.c +1 -0
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +30 -56
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +39 -10
@@ -29,7 +29,7 @@
|
|
29
29
|
#include <boost/container/detail/type_traits.hpp>
|
30
30
|
#include <boost/container/detail/mpl.hpp>
|
31
31
|
#include <boost/container/detail/std_fwd.hpp>
|
32
|
-
#include <boost/container/detail/is_pair.hpp>
|
32
|
+
#include <boost/container/detail/is_pair.hpp> //Forward declares boost::tuples::tuple
|
33
33
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
34
34
|
# include <boost/container/detail/variadic_templates_tools.hpp>
|
35
35
|
#endif
|
@@ -46,7 +46,7 @@ namespace pair_impl {
|
|
46
46
|
template <class TupleClass>
|
47
47
|
struct is_boost_tuple
|
48
48
|
{
|
49
|
-
|
49
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
50
50
|
};
|
51
51
|
|
52
52
|
template <
|
@@ -56,7 +56,7 @@ template <
|
|
56
56
|
class T9>
|
57
57
|
struct is_boost_tuple< boost::tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
|
58
58
|
{
|
59
|
-
|
59
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
60
60
|
};
|
61
61
|
|
62
62
|
template<class Tuple>
|
@@ -67,13 +67,13 @@ struct disable_if_boost_tuple
|
|
67
67
|
template<class T>
|
68
68
|
struct is_tuple_null
|
69
69
|
{
|
70
|
-
|
70
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
71
71
|
};
|
72
72
|
|
73
73
|
template<>
|
74
74
|
struct is_tuple_null<boost::tuples::null_type>
|
75
75
|
{
|
76
|
-
|
76
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
77
77
|
};
|
78
78
|
|
79
79
|
} //namespace detail {
|
@@ -482,7 +482,7 @@ inline void swap(pair<T1, T2>& x, pair<T1, T2>& y)
|
|
482
482
|
template<class T1, class T2>
|
483
483
|
struct has_move_emulation_enabled< ::boost::container::dtl::pair<T1, T2> >
|
484
484
|
{
|
485
|
-
|
485
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
486
486
|
};
|
487
487
|
|
488
488
|
#endif
|
@@ -497,7 +497,7 @@ struct is_class_or_union< ::boost::container::dtl::pair<T1, T2> >
|
|
497
497
|
//This specialization is needed to avoid instantiation of pair in
|
498
498
|
//is_class, and allow recursive maps.
|
499
499
|
{
|
500
|
-
|
500
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
501
501
|
};
|
502
502
|
|
503
503
|
template <class T1, class T2>
|
@@ -505,7 +505,7 @@ struct is_class_or_union< std::pair<T1, T2> >
|
|
505
505
|
//This specialization is needed to avoid instantiation of pair in
|
506
506
|
//is_class, and allow recursive maps.
|
507
507
|
{
|
508
|
-
|
508
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
509
509
|
};
|
510
510
|
|
511
511
|
template<class T>
|
@@ -516,7 +516,7 @@ struct is_union< ::boost::container::dtl::pair<T1, T2> >
|
|
516
516
|
//This specialization is needed to avoid instantiation of pair in
|
517
517
|
//is_class, and allow recursive maps.
|
518
518
|
{
|
519
|
-
|
519
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
520
520
|
};
|
521
521
|
|
522
522
|
template <class T1, class T2>
|
@@ -524,7 +524,7 @@ struct is_union< std::pair<T1, T2> >
|
|
524
524
|
//This specialization is needed to avoid instantiation of pair in
|
525
525
|
//is_class, and allow recursive maps.
|
526
526
|
{
|
527
|
-
|
527
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
528
528
|
};
|
529
529
|
|
530
530
|
template<class T>
|
@@ -535,7 +535,7 @@ struct is_class< ::boost::container::dtl::pair<T1, T2> >
|
|
535
535
|
//This specialization is needed to avoid instantiation of pair in
|
536
536
|
//is_class, and allow recursive maps.
|
537
537
|
{
|
538
|
-
|
538
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
539
539
|
};
|
540
540
|
|
541
541
|
template <class T1, class T2>
|
@@ -543,7 +543,7 @@ struct is_class< std::pair<T1, T2> >
|
|
543
543
|
//This specialization is needed to avoid instantiation of pair in
|
544
544
|
//is_class, and allow recursive maps.
|
545
545
|
{
|
546
|
-
|
546
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
547
547
|
};
|
548
548
|
|
549
549
|
|
@@ -555,7 +555,7 @@ template<class A, class B>
|
|
555
555
|
struct is_trivially_copy_assignable
|
556
556
|
<boost::container::dtl::pair<A,B> >
|
557
557
|
{
|
558
|
-
|
558
|
+
BOOST_STATIC_CONSTEXPR bool value = false ;
|
559
559
|
};
|
560
560
|
|
561
561
|
template<class T>
|
@@ -565,7 +565,7 @@ template<class A, class B>
|
|
565
565
|
struct is_trivially_move_assignable
|
566
566
|
<boost::container::dtl::pair<A,B> >
|
567
567
|
{
|
568
|
-
|
568
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
569
569
|
};
|
570
570
|
|
571
571
|
template<class T>
|
@@ -574,7 +574,7 @@ struct is_trivially_copy_assignable;
|
|
574
574
|
template<class A, class B>
|
575
575
|
struct is_trivially_copy_constructible<boost::container::dtl::pair<A,B> >
|
576
576
|
{
|
577
|
-
|
577
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
578
578
|
};
|
579
579
|
|
580
580
|
template<class T>
|
@@ -583,7 +583,7 @@ struct is_trivially_move_assignable;
|
|
583
583
|
template<class A, class B>
|
584
584
|
struct is_trivially_move_constructible<boost::container::dtl::pair<A,B> >
|
585
585
|
{
|
586
|
-
|
586
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
587
587
|
};
|
588
588
|
|
589
589
|
template<class T>
|
@@ -592,7 +592,7 @@ struct is_trivially_destructible;
|
|
592
592
|
template<class A, class B>
|
593
593
|
struct is_trivially_destructible<boost::container::dtl::pair<A,B> >
|
594
594
|
{
|
595
|
-
|
595
|
+
BOOST_STATIC_CONSTEXPR bool value = boost::move_detail::is_trivially_destructible<A>::value &&
|
596
596
|
boost::move_detail::is_trivially_destructible<B>::value ;
|
597
597
|
};
|
598
598
|
|
@@ -39,7 +39,7 @@ struct node_slist_helper
|
|
39
39
|
struct fake_segment_manager
|
40
40
|
{
|
41
41
|
typedef void * void_pointer;
|
42
|
-
|
42
|
+
BOOST_STATIC_CONSTEXPR std::size_t PayloadPerAllocation = BOOST_CONTAINER_ALLOCATION_PAYLOAD;
|
43
43
|
|
44
44
|
typedef boost::container::dtl::
|
45
45
|
basic_multiallocation_chain<void*> multiallocation_chain;
|
@@ -90,7 +90,7 @@ template<>
|
|
90
90
|
struct is_stateless_segment_manager
|
91
91
|
<boost::container::dtl::fake_segment_manager>
|
92
92
|
{
|
93
|
-
|
93
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
94
94
|
};
|
95
95
|
|
96
96
|
} //namespace dtl {
|
@@ -31,11 +31,11 @@ namespace pmr {
|
|
31
31
|
|
32
32
|
class pool_data_t;
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
BOOST_CONTAINER_CONSTANT_VAR std::size_t pool_options_minimum_max_blocks_per_chunk = 1u;
|
35
|
+
BOOST_CONTAINER_CONSTANT_VAR std::size_t pool_options_default_max_blocks_per_chunk = 32u;
|
36
|
+
BOOST_CONTAINER_CONSTANT_VAR std::size_t pool_options_minimum_largest_required_pool_block =
|
37
37
|
memory_resource::max_align > 2*sizeof(void*) ? memory_resource::max_align : 2*sizeof(void*);
|
38
|
-
|
38
|
+
BOOST_CONTAINER_CONSTANT_VAR std::size_t pool_options_default_largest_required_pool_block =
|
39
39
|
pool_options_minimum_largest_required_pool_block > 4096u
|
40
40
|
? pool_options_minimum_largest_required_pool_block : 4096u;
|
41
41
|
|
@@ -52,7 +52,6 @@
|
|
52
52
|
#include <boost/move/detail/fwd_macros.hpp>
|
53
53
|
#endif
|
54
54
|
#include <boost/move/detail/move_helpers.hpp>
|
55
|
-
#include <boost/move/detail/force_ptr.hpp>
|
56
55
|
|
57
56
|
|
58
57
|
|
@@ -252,13 +251,13 @@ struct intrusive_tree_type
|
|
252
251
|
//Trait to detect manually rebalanceable tree types
|
253
252
|
template<boost::container::tree_type_enum tree_type_value>
|
254
253
|
struct is_manually_balanceable
|
255
|
-
{
|
254
|
+
{ BOOST_STATIC_CONSTEXPR bool value = true; };
|
256
255
|
|
257
256
|
template<> struct is_manually_balanceable<red_black_tree>
|
258
|
-
{
|
257
|
+
{ BOOST_STATIC_CONSTEXPR bool value = false; };
|
259
258
|
|
260
259
|
template<> struct is_manually_balanceable<avl_tree>
|
261
|
-
{
|
260
|
+
{ BOOST_STATIC_CONSTEXPR bool value = false; };
|
262
261
|
|
263
262
|
//Proxy traits to implement different operations depending on the
|
264
263
|
//is_manually_balanceable<>::value
|
@@ -689,40 +688,13 @@ class tree
|
|
689
688
|
boost::container::dtl::is_nothrow_move_assignable<Compare>::value)
|
690
689
|
{
|
691
690
|
if (BOOST_LIKELY(this != &x)) {
|
692
|
-
|
693
|
-
|
694
|
-
const bool
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
if(propagate_alloc || allocators_equal){
|
700
|
-
//Destroy
|
701
|
-
this->clear();
|
702
|
-
//Move allocator if needed
|
703
|
-
this->AllocHolder::move_assign_alloc(x);
|
704
|
-
//Obtain resources
|
705
|
-
this->icont() = boost::move(x.icont());
|
706
|
-
}
|
707
|
-
//Else do a one by one move
|
708
|
-
else{
|
709
|
-
//Transfer all the nodes to a temporary tree
|
710
|
-
//If anything goes wrong, all the nodes will be destroyed
|
711
|
-
//automatically
|
712
|
-
Icont other_tree(::boost::move(this->icont()));
|
713
|
-
|
714
|
-
//Now recreate the source tree reusing nodes stored by other_tree
|
715
|
-
this->icont().clone_from
|
716
|
-
(::boost::move(x.icont())
|
717
|
-
, RecyclingCloner<AllocHolder, true>(*this, other_tree)
|
718
|
-
, Destroyer(this->node_alloc()));
|
719
|
-
|
720
|
-
//If there are remaining nodes, destroy them
|
721
|
-
NodePtr p;
|
722
|
-
while((p = other_tree.unlink_leftmost_without_rebalance())){
|
723
|
-
AllocHolder::destroy_node(p);
|
724
|
-
}
|
725
|
-
}
|
691
|
+
//We know resources can be transferred at comiple time if both allocators are
|
692
|
+
//always equal or the allocator is going to be propagated
|
693
|
+
const bool can_steal_resources_alloc
|
694
|
+
= allocator_traits_type::propagate_on_container_move_assignment::value
|
695
|
+
|| allocator_traits_type::is_always_equal::value;
|
696
|
+
dtl::bool_<can_steal_resources_alloc> flag;
|
697
|
+
this->priv_move_assign(boost::move(x), flag);
|
726
698
|
}
|
727
699
|
return *this;
|
728
700
|
}
|
@@ -896,6 +868,42 @@ class tree
|
|
896
868
|
|
897
869
|
|
898
870
|
private:
|
871
|
+
void priv_move_assign(BOOST_RV_REF(tree) x, dtl::bool_<true> /*steal_resources*/)
|
872
|
+
{
|
873
|
+
//Destroy objects but retain memory in case x reuses it in the future
|
874
|
+
this->clear();
|
875
|
+
//Move allocator if needed
|
876
|
+
this->AllocHolder::move_assign_alloc(x);
|
877
|
+
//Obtain resources
|
878
|
+
this->icont() = boost::move(x.icont());
|
879
|
+
}
|
880
|
+
|
881
|
+
void priv_move_assign(BOOST_RV_REF(tree) x, dtl::bool_<false> /*steal_resources*/)
|
882
|
+
{
|
883
|
+
//We can't guarantee a compile-time equal allocator or propagation so fallback to runtime
|
884
|
+
//Resources can be transferred if both allocators are equal
|
885
|
+
if (this->node_alloc() == x.node_alloc()) {
|
886
|
+
this->priv_move_assign(boost::move(x), dtl::true_());
|
887
|
+
}
|
888
|
+
else {
|
889
|
+
//Transfer all the nodes to a temporary tree
|
890
|
+
//If anything goes wrong, all the nodes will be destroyed
|
891
|
+
//automatically
|
892
|
+
Icont other_tree(::boost::move(this->icont()));
|
893
|
+
|
894
|
+
//Now recreate the source tree reusing nodes stored by other_tree
|
895
|
+
this->icont().clone_from
|
896
|
+
(::boost::move(x.icont())
|
897
|
+
, RecyclingCloner<AllocHolder, true>(*this, other_tree)
|
898
|
+
, Destroyer(this->node_alloc()));
|
899
|
+
|
900
|
+
//If there are remaining nodes, destroy them
|
901
|
+
NodePtr p;
|
902
|
+
while ((p = other_tree.unlink_leftmost_without_rebalance())) {
|
903
|
+
AllocHolder::destroy_node(p);
|
904
|
+
}
|
905
|
+
}
|
906
|
+
}
|
899
907
|
|
900
908
|
template<class KeyConvertible, class M>
|
901
909
|
iiterator priv_insert_or_assign_commit
|
@@ -1134,6 +1142,31 @@ class tree
|
|
1134
1142
|
return ret;
|
1135
1143
|
}
|
1136
1144
|
|
1145
|
+
template <class K>
|
1146
|
+
inline typename dtl::enable_if_c<
|
1147
|
+
dtl::is_transparent<key_compare>::value && //transparent
|
1148
|
+
!dtl::is_convertible<K, iterator>::value && //not convertible to iterator
|
1149
|
+
!dtl::is_convertible<K, const_iterator>::value //not convertible to const_iterator
|
1150
|
+
, size_type>::type
|
1151
|
+
erase(const K& k)
|
1152
|
+
{ return AllocHolder::erase_key(k, KeyNodeCompare(key_comp()), alloc_version()); }
|
1153
|
+
|
1154
|
+
template <class K>
|
1155
|
+
inline typename dtl::enable_if_c<
|
1156
|
+
dtl::is_transparent<key_compare>::value && //transparent
|
1157
|
+
!dtl::is_convertible<K, iterator>::value && //not convertible to iterator
|
1158
|
+
!dtl::is_convertible<K, const_iterator>::value //not convertible to const_iterator
|
1159
|
+
, size_type>::type
|
1160
|
+
erase_unique(const K& k)
|
1161
|
+
{
|
1162
|
+
iterator i = this->find(k);
|
1163
|
+
size_type ret = static_cast<size_type>(i != this->end());
|
1164
|
+
|
1165
|
+
if (ret)
|
1166
|
+
this->erase(i);
|
1167
|
+
return ret;
|
1168
|
+
}
|
1169
|
+
|
1137
1170
|
iterator erase(const_iterator first, const_iterator last)
|
1138
1171
|
{
|
1139
1172
|
BOOST_ASSERT(first == last || (first != this->cend() && (priv_is_linked)(first)));
|
@@ -1232,13 +1265,13 @@ class tree
|
|
1232
1265
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1233
1266
|
typename dtl::enable_if_transparent<key_compare, K, iterator>::type
|
1234
1267
|
find(const K& k)
|
1235
|
-
{ return iterator(this->icont().find(k, KeyNodeCompare())); }
|
1268
|
+
{ return iterator(this->icont().find(k, KeyNodeCompare(key_comp()))); }
|
1236
1269
|
|
1237
1270
|
template <class K>
|
1238
1271
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1239
1272
|
typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
|
1240
1273
|
find(const K& k) const
|
1241
|
-
{ return const_iterator(this->non_const_icont().find(k, KeyNodeCompare())); }
|
1274
|
+
{ return const_iterator(this->non_const_icont().find(k, KeyNodeCompare(key_comp()))); }
|
1242
1275
|
|
1243
1276
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1244
1277
|
size_type count(const key_type& k) const
|
@@ -1248,7 +1281,7 @@ class tree
|
|
1248
1281
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1249
1282
|
typename dtl::enable_if_transparent<key_compare, K, size_type>::type
|
1250
1283
|
count(const K& k) const
|
1251
|
-
{ return size_type(this->icont().count(k, KeyNodeCompare())); }
|
1284
|
+
{ return size_type(this->icont().count(k, KeyNodeCompare(key_comp()))); }
|
1252
1285
|
|
1253
1286
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1254
1287
|
bool contains(const key_type& x) const
|
@@ -1272,13 +1305,13 @@ class tree
|
|
1272
1305
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1273
1306
|
typename dtl::enable_if_transparent<key_compare, K, iterator>::type
|
1274
1307
|
lower_bound(const K& k)
|
1275
|
-
{ return iterator(this->icont().lower_bound(k, KeyNodeCompare())); }
|
1308
|
+
{ return iterator(this->icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
|
1276
1309
|
|
1277
1310
|
template <class K>
|
1278
1311
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1279
1312
|
typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
|
1280
1313
|
lower_bound(const K& k) const
|
1281
|
-
{ return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare())); }
|
1314
|
+
{ return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
|
1282
1315
|
|
1283
1316
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1284
1317
|
iterator upper_bound(const key_type& k)
|
@@ -1292,13 +1325,13 @@ class tree
|
|
1292
1325
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1293
1326
|
typename dtl::enable_if_transparent<key_compare, K, iterator>::type
|
1294
1327
|
upper_bound(const K& k)
|
1295
|
-
{ return iterator(this->icont().upper_bound(k, KeyNodeCompare())); }
|
1328
|
+
{ return iterator(this->icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
|
1296
1329
|
|
1297
1330
|
template <class K>
|
1298
1331
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1299
1332
|
typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
|
1300
1333
|
upper_bound(const K& k) const
|
1301
|
-
{ return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare())); }
|
1334
|
+
{ return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
|
1302
1335
|
|
1303
1336
|
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
|
1304
1337
|
std::pair<iterator,iterator> equal_range(const key_type& k)
|
@@ -1322,7 +1355,7 @@ class tree
|
|
1322
1355
|
equal_range(const K& k)
|
1323
1356
|
{
|
1324
1357
|
std::pair<iiterator, iiterator> ret =
|
1325
|
-
this->icont().equal_range(k, KeyNodeCompare());
|
1358
|
+
this->icont().equal_range(k, KeyNodeCompare(key_comp()));
|
1326
1359
|
return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second));
|
1327
1360
|
}
|
1328
1361
|
|
@@ -1332,7 +1365,7 @@ class tree
|
|
1332
1365
|
equal_range(const K& k) const
|
1333
1366
|
{
|
1334
1367
|
std::pair<iiterator, iiterator> ret =
|
1335
|
-
this->non_const_icont().equal_range(k, KeyNodeCompare());
|
1368
|
+
this->non_const_icont().equal_range(k, KeyNodeCompare(key_comp()));
|
1336
1369
|
return std::pair<const_iterator,const_iterator>
|
1337
1370
|
(const_iterator(ret.first), const_iterator(ret.second));
|
1338
1371
|
}
|
@@ -1360,7 +1393,7 @@ class tree
|
|
1360
1393
|
lower_bound_range(const K& k)
|
1361
1394
|
{
|
1362
1395
|
std::pair<iiterator, iiterator> ret =
|
1363
|
-
this->icont().lower_bound_range(k, KeyNodeCompare());
|
1396
|
+
this->icont().lower_bound_range(k, KeyNodeCompare(key_comp()));
|
1364
1397
|
return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second));
|
1365
1398
|
}
|
1366
1399
|
|
@@ -1370,7 +1403,7 @@ class tree
|
|
1370
1403
|
lower_bound_range(const K& k) const
|
1371
1404
|
{
|
1372
1405
|
std::pair<iiterator, iiterator> ret =
|
1373
|
-
this->non_const_icont().lower_bound_range(k, KeyNodeCompare());
|
1406
|
+
this->non_const_icont().lower_bound_range(k, KeyNodeCompare(key_comp()));
|
1374
1407
|
return std::pair<const_iterator,const_iterator>
|
1375
1408
|
(const_iterator(ret.first), const_iterator(ret.second));
|
1376
1409
|
}
|
@@ -1425,9 +1458,10 @@ struct has_trivial_destructor_after_move
|
|
1425
1458
|
{
|
1426
1459
|
typedef typename ::boost::container::dtl::tree<T, KeyOfValue, Compare, Allocator, Options>::allocator_type allocator_type;
|
1427
1460
|
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1461
|
+
BOOST_STATIC_CONSTEXPR bool value =
|
1462
|
+
::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
1463
|
+
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
1464
|
+
::boost::has_trivial_destructor_after_move<Compare>::value;
|
1431
1465
|
};
|
1432
1466
|
|
1433
1467
|
} //namespace boost {
|
@@ -57,20 +57,20 @@ struct has_version
|
|
57
57
|
template <class U> static two test(...);
|
58
58
|
template <class U> static char test(const typename U::version*);
|
59
59
|
public:
|
60
|
-
|
60
|
+
BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0)) == 1;
|
61
61
|
void dummy(){}
|
62
62
|
};
|
63
63
|
|
64
64
|
template <class T, bool = has_version<T>::value>
|
65
65
|
struct version
|
66
66
|
{
|
67
|
-
|
67
|
+
BOOST_STATIC_CONSTEXPR unsigned value = 1;
|
68
68
|
};
|
69
69
|
|
70
70
|
template <class T>
|
71
71
|
struct version<T, true>
|
72
72
|
{
|
73
|
-
|
73
|
+
BOOST_STATIC_CONSTEXPR unsigned value = extract_version<T>::type::value;
|
74
74
|
};
|
75
75
|
|
76
76
|
} //namespace impl
|
@@ -83,7 +83,7 @@ struct version
|
|
83
83
|
template<class T, unsigned N>
|
84
84
|
struct is_version
|
85
85
|
{
|
86
|
-
|
86
|
+
BOOST_STATIC_CONSTEXPR bool value =
|
87
87
|
is_same< typename version<T>::type, integral_constant<unsigned, N> >::value;
|
88
88
|
};
|
89
89
|
|
@@ -230,4 +230,16 @@ namespace boost {
|
|
230
230
|
# define BOOST_CONTAINER_STATIC_ASSERT_MSG( B, Msg ) BOOST_CONTAINER_STATIC_ASSERT( B )
|
231
231
|
#endif
|
232
232
|
|
233
|
+
#if !defined(BOOST_NO_CXX17_INLINE_VARIABLES)
|
234
|
+
# define BOOST_CONTAINER_CONSTANT_VAR BOOST_INLINE_CONSTEXPR
|
235
|
+
#else
|
236
|
+
# define BOOST_CONTAINER_CONSTANT_VAR static BOOST_CONSTEXPR_OR_CONST
|
237
|
+
#endif
|
238
|
+
|
239
|
+
#if defined(__GNUC__) && ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600)
|
240
|
+
#define BOOST_CONTAINER_GCC_COMPATIBLE_HAS_DIAGNOSTIC_IGNORED
|
241
|
+
#elif defined(__clang__)
|
242
|
+
#define BOOST_CONTAINER_GCC_COMPATIBLE_HAS_DIAGNOSTIC_IGNORED
|
243
|
+
#endif
|
244
|
+
|
233
245
|
#endif //#ifndef BOOST_CONTAINER_DETAIL_WORKAROUND_HPP
|