passenger 5.3.3 → 5.3.4
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 +8 -0
- data/build/support/cxx_dependency_map.rb +151 -83
- data/dev/configkit-schemas/index.json +3 -3
- data/src/agent/Core/AdminPanelConnector.h +5 -3
- data/src/agent/Core/ApplicationPool/Common.h +1 -2
- data/src/agent/Core/ApplicationPool/Context.h +1 -2
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller.h +2 -1
- data/src/agent/Core/Controller/Config.h +6 -5
- data/src/agent/Core/Controller/Hooks.cpp +11 -0
- data/src/agent/Core/Controller/SendRequest.cpp +7 -7
- data/src/agent/Core/CoreMain.cpp +0 -2
- data/src/agent/Core/SpawningKit/Context.h +1 -3
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +17 -38
- data/src/agent/Core/SpawningKit/PipeWatcher.h +5 -3
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +13 -5
- data/src/agent/Shared/ApiServerUtils.h +2 -2
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -18
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +20 -20
- data/src/apache2_module/Config.cpp +7 -6
- data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Exceptions.h +0 -1
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +3 -2
- data/src/cxx_supportlib/ResourceLocator.h +3 -21
- data/src/cxx_supportlib/SafeLibev.h +6 -6
- data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -3
- data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +27 -15
- data/src/cxx_supportlib/ServerKit/Server.h +2 -2
- data/src/cxx_supportlib/SystemTools/README.md +1 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +222 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +151 -0
- data/src/cxx_supportlib/Utils.cpp +1 -113
- data/src/cxx_supportlib/Utils.h +1 -29
- data/src/cxx_supportlib/Utils/MessagePassing.h +3 -3
- data/src/cxx_supportlib/WatchdogLauncher.h +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +31 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +149 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +140 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +145 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +75 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +139 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +98 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +42 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +45 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +349 -109
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +959 -108
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +198 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +424 -284
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +116 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +99 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +235 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +613 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +1139 -1216
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +26 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +61 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +462 -226
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +20 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +404 -77
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +212 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +398 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +287 -165
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +65 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +27 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +41 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{function.hpp → functional.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +158 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +90 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +117 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +34 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +152 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +80 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +19 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +93 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +43 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +54 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{task_io_service.ipp → scheduler.ipp} +167 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +46 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +36 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +39 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +43 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +129 -26
- 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/impl/strand_executor_service.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +15 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +36 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +17 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +29 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +26 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +37 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +20 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +25 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +99 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +96 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +6 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +38 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +30 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service.hpp → scheduler.hpp} +57 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_operation.hpp → scheduler_operation.hpp} +19 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_thread_info.hpp → scheduler_thread_info.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +37 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +54 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +45 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +29 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +29 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +74 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +413 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +343 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +172 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +228 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +86 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +92 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +549 -119
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +388 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +7 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +347 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +176 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +341 -379
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +173 -343
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +559 -206
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +254 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +855 -94
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +358 -449
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +165 -418
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +6 -743
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +79 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +111 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +164 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +104 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +185 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +821 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +23 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +31 -99
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +313 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +5 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +16 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +76 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +85 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +2 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +3 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +48 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +23 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +138 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +646 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +17 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +326 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +63 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +328 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1148 -247
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +736 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +422 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +32 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +114 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +85 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +89 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +33 -62
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +27 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +22 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +40 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +8 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +86 -102
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +90 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +209 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +4 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +234 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +199 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +70 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +62 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +22 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +14 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +346 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +26 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +333 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +344 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +31 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +328 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +29 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +321 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +50 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +688 -220
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +25 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +1 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +1 -36
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +108 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +189 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +238 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +1111 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +840 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +1656 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +402 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +1301 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +548 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +134 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +36 -44
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +524 -96
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +27 -59
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +104 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +268 -340
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +22 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +55 -80
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +88 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +30 -103
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/string_ops.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +36 -36
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +0 -10
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +28 -30
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +26 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/diab.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +33 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +28 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +8 -142
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +37 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{posix_features.hpp → detail/posix_features.hpp} +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_compiler_config.hpp → detail/select_compiler_config.hpp} +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_platform_config.hpp → detail/select_platform_config.hpp} +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_stdlib_config.hpp → detail/select_stdlib_config.hpp} +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{suffix.hpp → detail/suffix.hpp} +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/helper_macros.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/aix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/beos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cray.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/hpux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/irix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/qnxnto.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/symbian.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +155 -91
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/zos.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/pragma_message.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +21 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +279 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +58 -58
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +7 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +258 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +119 -134
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +55 -55
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +714 -282
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +4 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +37 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +41 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +69 -16
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair_key_mapped_of_value.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +180 -116
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -572
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +497 -248
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +326 -246
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +122 -78
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +285 -110
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +35 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +24 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +194 -142
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +395 -421
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/float_functions.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/hash_float.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/limits.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/extensions.hpp +112 -16
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash.hpp +195 -7
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +53 -44
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +80 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +233 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +26 -16
- data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +20 -34
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +8 -94
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +1 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +52 -52
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +14 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +36 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +10 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +18 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +65 -20
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +32 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +31 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +2 -264
- data/src/cxx_supportlib/vendor-modified/boost/enable_shared_from_this.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +38 -21
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +13 -47
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +508 -390
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +7 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +108 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +147 -64
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
- 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 +36 -92
- data/src/cxx_supportlib/vendor-modified/boost/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +57 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +40 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +563 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +324 -1071
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/is_sorted.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +59 -143
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +334 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/unique.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/{intrusive → move}/detail/pointer_element.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +19 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/get_tag.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +85 -55
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/conversion_traits.hpp +0 -7
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +4 -13
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +26 -7
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +17 -21
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +499 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +126 -21
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +56 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +37 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/scoped_array.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/scoped_ptr.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/shared_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +333 -656
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +15 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +21 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +15 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +135 -90
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +140 -111
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +297 -49
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +118 -183
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_redef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_undef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +62 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/log.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +478 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +51 -85
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +320 -92
- data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +187 -112
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +137 -164
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +67 -37
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +65 -33
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +84 -158
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +143 -35
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_heap_alloc.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_only.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +579 -589
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +71 -14
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +370 -102
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +1177 -572
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +95 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +20 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +16 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_list_constructible.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv_ref.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -85
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +24 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +18 -12
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4018 -4052
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +57 -97
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +56 -95
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2150 -1777
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -38
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1630 -1420
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -37
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +14 -17
- data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +44 -20
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/weak_ptr.hpp +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +7 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +4 -4
- metadata +201 -47
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +0 -96
- data/src/cxx_supportlib/MessageClient.h +0 -309
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +0 -230
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +0 -156
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +0 -436
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +0 -176
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +0 -396
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +0 -526
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +0 -573
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +0 -503
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex_assert.hpp +0 -724
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +0 -43
|
@@ -51,31 +51,41 @@ namespace container {
|
|
|
51
51
|
|
|
52
52
|
inline void throw_bad_alloc()
|
|
53
53
|
{
|
|
54
|
-
|
|
54
|
+
const char msg[] = "boost::container bad_alloc thrown";
|
|
55
|
+
(void)msg;
|
|
56
|
+
BOOST_ASSERT(!msg);
|
|
55
57
|
std::abort();
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
inline void throw_out_of_range(const char* str)
|
|
59
61
|
{
|
|
60
|
-
|
|
62
|
+
const char msg[] = "boost::container out_of_range thrown";
|
|
63
|
+
(void)msg; (void)str;
|
|
64
|
+
BOOST_ASSERT_MSG(!msg, str);
|
|
61
65
|
std::abort();
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
inline void throw_length_error(const char* str)
|
|
65
69
|
{
|
|
66
|
-
|
|
70
|
+
const char msg[] = "boost::container length_error thrown";
|
|
71
|
+
(void)msg; (void)str;
|
|
72
|
+
BOOST_ASSERT_MSG(!msg, str);
|
|
67
73
|
std::abort();
|
|
68
74
|
}
|
|
69
75
|
|
|
70
76
|
inline void throw_logic_error(const char* str)
|
|
71
77
|
{
|
|
72
|
-
|
|
78
|
+
const char msg[] = "boost::container logic_error thrown";
|
|
79
|
+
(void)msg; (void)str;
|
|
80
|
+
BOOST_ASSERT_MSG(!msg, str);
|
|
73
81
|
std::abort();
|
|
74
82
|
}
|
|
75
83
|
|
|
76
84
|
inline void throw_runtime_error(const char* str)
|
|
77
85
|
{
|
|
78
|
-
|
|
86
|
+
const char msg[] = "boost::container runtime_error thrown";
|
|
87
|
+
(void)msg; (void)str;
|
|
88
|
+
BOOST_ASSERT_MSG(!msg, str);
|
|
79
89
|
std::abort();
|
|
80
90
|
}
|
|
81
91
|
|
|
@@ -112,7 +112,7 @@ struct constructible_with_allocator_prefix
|
|
|
112
112
|
|
|
113
113
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
114
114
|
|
|
115
|
-
namespace
|
|
115
|
+
namespace dtl {
|
|
116
116
|
|
|
117
117
|
template<typename T, typename Allocator>
|
|
118
118
|
struct uses_allocator_imp
|
|
@@ -130,8 +130,8 @@ struct uses_allocator_imp
|
|
|
130
130
|
|
|
131
131
|
// Match this function if T::allocator_type exists and it's type is `erased_type`.
|
|
132
132
|
template <class U, class V>
|
|
133
|
-
static typename
|
|
134
|
-
<
|
|
133
|
+
static typename dtl::enable_if
|
|
134
|
+
< dtl::is_same<typename U::allocator_type, erased_type>
|
|
135
135
|
, yes_type
|
|
136
136
|
>::type test(const V&);
|
|
137
137
|
|
|
@@ -145,7 +145,7 @@ struct uses_allocator_imp
|
|
|
145
145
|
static const bool value = sizeof(test<T>(alloc)) == sizeof(yes_type);
|
|
146
146
|
};
|
|
147
147
|
|
|
148
|
-
} //namespace
|
|
148
|
+
} //namespace dtl {
|
|
149
149
|
|
|
150
150
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
151
151
|
|
|
@@ -161,7 +161,7 @@ struct uses_allocator_imp
|
|
|
161
161
|
//! is an alias `erased_type`. False otherwise.
|
|
162
162
|
template <typename T, typename Allocator>
|
|
163
163
|
struct uses_allocator
|
|
164
|
-
:
|
|
164
|
+
: dtl::uses_allocator_imp<T, Allocator>
|
|
165
165
|
{};
|
|
166
166
|
|
|
167
167
|
}} //namespace boost::container
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
#include <boost/container/allocator_traits.hpp>
|
|
28
28
|
#include <boost/container/new_allocator.hpp> //new_allocator
|
|
29
29
|
#include <boost/container/throw_exception.hpp>
|
|
30
|
+
#include <boost/container/options.hpp>
|
|
30
31
|
// container detail
|
|
31
32
|
#include <boost/container/detail/advanced_insert_int.hpp>
|
|
32
33
|
#include <boost/container/detail/algorithm.hpp> //equal()
|
|
@@ -36,10 +37,11 @@
|
|
|
36
37
|
#include <boost/container/detail/destroyers.hpp>
|
|
37
38
|
#include <boost/container/detail/iterator.hpp>
|
|
38
39
|
#include <boost/container/detail/iterators.hpp>
|
|
39
|
-
#include <boost/
|
|
40
|
+
#include <boost/move/detail/iterator_to_raw_pointer.hpp>
|
|
40
41
|
#include <boost/container/detail/mpl.hpp>
|
|
41
42
|
#include <boost/container/detail/next_capacity.hpp>
|
|
42
|
-
#include <boost/container/detail/
|
|
43
|
+
#include <boost/container/detail/value_functors.hpp>
|
|
44
|
+
#include <boost/move/detail/to_raw_pointer.hpp>
|
|
43
45
|
#include <boost/container/detail/type_traits.hpp>
|
|
44
46
|
#include <boost/container/detail/version_type.hpp>
|
|
45
47
|
// intrusive
|
|
@@ -54,6 +56,11 @@
|
|
|
54
56
|
#include <boost/move/detail/fwd_macros.hpp>
|
|
55
57
|
#endif
|
|
56
58
|
#include <boost/move/detail/move_helpers.hpp>
|
|
59
|
+
// move/algo
|
|
60
|
+
#include <boost/move/algo/adaptive_merge.hpp>
|
|
61
|
+
#include <boost/move/algo/unique.hpp>
|
|
62
|
+
#include <boost/move/algo/predicate.hpp>
|
|
63
|
+
#include <boost/move/algo/detail/set_difference.hpp>
|
|
57
64
|
// other
|
|
58
65
|
#include <boost/core/no_exceptions_support.hpp>
|
|
59
66
|
#include <boost/assert.hpp>
|
|
@@ -69,11 +76,6 @@ namespace container {
|
|
|
69
76
|
|
|
70
77
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
71
78
|
|
|
72
|
-
//#define BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
73
|
-
|
|
74
|
-
namespace container_detail {
|
|
75
|
-
|
|
76
|
-
#ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
77
79
|
|
|
78
80
|
template <class Pointer, bool IsConst>
|
|
79
81
|
class vec_iterator
|
|
@@ -82,7 +84,7 @@ class vec_iterator
|
|
|
82
84
|
typedef std::random_access_iterator_tag iterator_category;
|
|
83
85
|
typedef typename boost::intrusive::pointer_traits<Pointer>::element_type value_type;
|
|
84
86
|
typedef typename boost::intrusive::pointer_traits<Pointer>::difference_type difference_type;
|
|
85
|
-
typedef typename if_c
|
|
87
|
+
typedef typename dtl::if_c
|
|
86
88
|
< IsConst
|
|
87
89
|
, typename boost::intrusive::pointer_traits<Pointer>::template
|
|
88
90
|
rebind_pointer<const value_type>::type
|
|
@@ -210,103 +212,28 @@ struct vector_insert_ordered_cursor
|
|
|
210
212
|
BiDirValueIt last_value_it;
|
|
211
213
|
};
|
|
212
214
|
|
|
213
|
-
|
|
214
|
-
struct vector_merge_cursor
|
|
215
|
-
{
|
|
216
|
-
typedef SizeType size_type;
|
|
217
|
-
typedef typename iterator_traits<BiDirValueIt>::reference reference;
|
|
218
|
-
|
|
219
|
-
BOOST_CONTAINER_FORCEINLINE vector_merge_cursor(T *pbeg, T *plast, BiDirValueIt valueit, Comp &cmp)
|
|
220
|
-
: m_pbeg(pbeg), m_pcur(--plast), m_valueit(valueit), m_cmp(cmp)
|
|
221
|
-
{}
|
|
222
|
-
|
|
223
|
-
void operator --()
|
|
224
|
-
{
|
|
225
|
-
--m_valueit;
|
|
226
|
-
const T &t = *m_valueit;
|
|
227
|
-
while((m_pcur + 1) != m_pbeg){
|
|
228
|
-
if(!m_cmp(t, *m_pcur)){
|
|
229
|
-
break;
|
|
230
|
-
}
|
|
231
|
-
--m_pcur;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
BOOST_CONTAINER_FORCEINLINE size_type get_pos() const
|
|
236
|
-
{ return static_cast<size_type>((m_pcur + 1) - m_pbeg); }
|
|
237
|
-
|
|
238
|
-
BOOST_CONTAINER_FORCEINLINE reference get_val()
|
|
239
|
-
{ return *m_valueit; }
|
|
240
|
-
|
|
241
|
-
T *const m_pbeg;
|
|
242
|
-
T *m_pcur;
|
|
243
|
-
BiDirValueIt m_valueit;
|
|
244
|
-
Comp &m_cmp;
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
} //namespace container_detail {
|
|
215
|
+
struct initial_capacity_t{};
|
|
248
216
|
|
|
249
217
|
template<class Pointer, bool IsConst>
|
|
250
|
-
BOOST_CONTAINER_FORCEINLINE const Pointer &vector_iterator_get_ptr(const
|
|
218
|
+
BOOST_CONTAINER_FORCEINLINE const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
|
|
251
219
|
{ return it.get_ptr(); }
|
|
252
220
|
|
|
253
221
|
template<class Pointer, bool IsConst>
|
|
254
|
-
BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr(
|
|
222
|
+
BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
|
|
255
223
|
{ return it.get_ptr(); }
|
|
256
224
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
#else //ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
260
|
-
|
|
261
|
-
template< class MaybeConstPointer
|
|
262
|
-
, bool ElementTypeIsConst
|
|
263
|
-
= is_const< typename boost::intrusive::pointer_traits<MaybeConstPointer>::element_type>::value >
|
|
264
|
-
struct vector_get_ptr_pointer_to_non_const
|
|
265
|
-
{
|
|
266
|
-
typedef MaybeConstPointer const_pointer;
|
|
267
|
-
typedef boost::intrusive::pointer_traits<const_pointer> pointer_traits_t;
|
|
268
|
-
typedef typename pointer_traits_t::element_type element_type;
|
|
269
|
-
typedef typename remove_const<element_type>::type non_const_element_type;
|
|
270
|
-
typedef typename pointer_traits_t
|
|
271
|
-
::template rebind_pointer<non_const_element_type>::type return_type;
|
|
272
|
-
|
|
273
|
-
BOOST_CONTAINER_FORCEINLINE static return_type get_ptr(const const_pointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
|
|
274
|
-
{ return boost::intrusive::pointer_traits<return_type>::const_cast_from(ptr); }
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
template<class Pointer>
|
|
278
|
-
struct vector_get_ptr_pointer_to_non_const<Pointer, false>
|
|
279
|
-
{
|
|
280
|
-
typedef const Pointer & return_type;
|
|
281
|
-
BOOST_CONTAINER_FORCEINLINE static return_type get_ptr(const Pointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
|
|
282
|
-
{ return ptr; }
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
} //namespace container_detail {
|
|
286
|
-
|
|
287
|
-
template<class MaybeConstPointer>
|
|
288
|
-
BOOST_CONTAINER_FORCEINLINE typename container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::return_type
|
|
289
|
-
vector_iterator_get_ptr(const MaybeConstPointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
|
|
290
|
-
{
|
|
291
|
-
return container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::get_ptr(ptr);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
namespace container_detail {
|
|
295
|
-
|
|
296
|
-
#endif //#ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
297
|
-
|
|
298
|
-
struct uninitialized_size_t {};
|
|
299
|
-
static const uninitialized_size_t uninitialized_size = uninitialized_size_t();
|
|
225
|
+
struct vector_uninitialized_size_t {};
|
|
226
|
+
static const vector_uninitialized_size_t vector_uninitialized_size = vector_uninitialized_size_t();
|
|
300
227
|
|
|
301
228
|
template <class T>
|
|
302
229
|
struct vector_value_traits_base
|
|
303
230
|
{
|
|
304
|
-
static const bool trivial_dctr = is_trivially_destructible<T>::value;
|
|
231
|
+
static const bool trivial_dctr = dtl::is_trivially_destructible<T>::value;
|
|
305
232
|
static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<T>::value;
|
|
306
|
-
static const bool trivial_copy = is_trivially_copy_constructible<T>::value;
|
|
307
|
-
static const bool nothrow_copy = is_nothrow_copy_constructible<T>::value || trivial_copy;
|
|
308
|
-
static const bool trivial_assign = is_trivially_copy_assignable<T>::value;
|
|
309
|
-
static const bool nothrow_assign = is_nothrow_copy_assignable<T>::value || trivial_assign;
|
|
233
|
+
static const bool trivial_copy = dtl::is_trivially_copy_constructible<T>::value;
|
|
234
|
+
static const bool nothrow_copy = dtl::is_nothrow_copy_constructible<T>::value || trivial_copy;
|
|
235
|
+
static const bool trivial_assign = dtl::is_trivially_copy_assignable<T>::value;
|
|
236
|
+
static const bool nothrow_assign = dtl::is_nothrow_copy_assignable<T>::value || trivial_assign;
|
|
310
237
|
};
|
|
311
238
|
|
|
312
239
|
|
|
@@ -317,18 +244,19 @@ struct vector_value_traits
|
|
|
317
244
|
typedef vector_value_traits_base<typename Allocator::value_type> base_t;
|
|
318
245
|
//This is the anti-exception array destructor
|
|
319
246
|
//to deallocate values already constructed
|
|
320
|
-
typedef typename
|
|
247
|
+
typedef typename dtl::if_c
|
|
321
248
|
<base_t::trivial_dctr
|
|
322
|
-
,
|
|
323
|
-
,
|
|
249
|
+
,dtl::null_scoped_destructor_n<Allocator>
|
|
250
|
+
,dtl::scoped_destructor_n<Allocator>
|
|
324
251
|
>::type ArrayDestructor;
|
|
325
252
|
//This is the anti-exception array deallocator
|
|
326
|
-
typedef
|
|
253
|
+
typedef dtl::scoped_array_deallocator<Allocator> ArrayDeallocator;
|
|
327
254
|
};
|
|
328
255
|
|
|
329
256
|
//!This struct deallocates and allocated memory
|
|
330
257
|
template < class Allocator
|
|
331
|
-
, class
|
|
258
|
+
, class StoredSizeType
|
|
259
|
+
, class AllocatorVersion = typename dtl::version<Allocator>::type
|
|
332
260
|
>
|
|
333
261
|
struct vector_alloc_holder
|
|
334
262
|
: public Allocator
|
|
@@ -337,7 +265,8 @@ struct vector_alloc_holder
|
|
|
337
265
|
BOOST_MOVABLE_BUT_NOT_COPYABLE(vector_alloc_holder)
|
|
338
266
|
|
|
339
267
|
public:
|
|
340
|
-
typedef Allocator
|
|
268
|
+
typedef Allocator allocator_type;
|
|
269
|
+
typedef StoredSizeType stored_size_type;
|
|
341
270
|
typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
|
|
342
271
|
typedef typename allocator_traits_type::pointer pointer;
|
|
343
272
|
typedef typename allocator_traits_type::size_type size_type;
|
|
@@ -361,7 +290,7 @@ struct vector_alloc_holder
|
|
|
361
290
|
|
|
362
291
|
//Constructor, does not throw
|
|
363
292
|
vector_alloc_holder()
|
|
364
|
-
BOOST_NOEXCEPT_IF(
|
|
293
|
+
BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
|
|
365
294
|
: Allocator(), m_start(), m_size(), m_capacity()
|
|
366
295
|
{}
|
|
367
296
|
|
|
@@ -373,28 +302,34 @@ struct vector_alloc_holder
|
|
|
373
302
|
|
|
374
303
|
//Constructor, does not throw
|
|
375
304
|
template<class AllocConvertible>
|
|
376
|
-
vector_alloc_holder(
|
|
305
|
+
vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size)
|
|
377
306
|
: Allocator(boost::forward<AllocConvertible>(a))
|
|
378
307
|
, m_start()
|
|
379
|
-
|
|
308
|
+
//Size is initialized here so vector should only call uninitialized_xxx after this
|
|
309
|
+
, m_size(static_cast<stored_size_type>(initial_size))
|
|
380
310
|
, m_capacity()
|
|
381
311
|
{
|
|
382
312
|
if(initial_size){
|
|
383
313
|
pointer reuse = pointer();
|
|
384
|
-
|
|
314
|
+
size_type final_cap = initial_size;
|
|
315
|
+
m_start = this->allocation_command(allocate_new, initial_size, final_cap, reuse);
|
|
316
|
+
m_capacity = static_cast<stored_size_type>(final_cap);
|
|
385
317
|
}
|
|
386
318
|
}
|
|
387
319
|
|
|
388
320
|
//Constructor, does not throw
|
|
389
|
-
vector_alloc_holder(
|
|
321
|
+
vector_alloc_holder(vector_uninitialized_size_t, size_type initial_size)
|
|
390
322
|
: Allocator()
|
|
391
323
|
, m_start()
|
|
392
|
-
|
|
324
|
+
//Size is initialized here so vector should only call uninitialized_xxx after this
|
|
325
|
+
, m_size(static_cast<stored_size_type>(initial_size))
|
|
393
326
|
, m_capacity()
|
|
394
327
|
{
|
|
395
328
|
if(initial_size){
|
|
396
329
|
pointer reuse = pointer();
|
|
397
|
-
|
|
330
|
+
size_type final_cap = initial_size;
|
|
331
|
+
m_start = this->allocation_command(allocate_new, initial_size, final_cap, reuse);
|
|
332
|
+
m_capacity = static_cast<stored_size_type>(final_cap);
|
|
398
333
|
}
|
|
399
334
|
}
|
|
400
335
|
|
|
@@ -408,17 +343,17 @@ struct vector_alloc_holder
|
|
|
408
343
|
holder.m_size = holder.m_capacity = 0;
|
|
409
344
|
}
|
|
410
345
|
|
|
411
|
-
vector_alloc_holder(pointer p, size_type capacity, BOOST_RV_REF(vector_alloc_holder) holder)
|
|
346
|
+
vector_alloc_holder(initial_capacity_t, pointer p, size_type capacity, BOOST_RV_REF(vector_alloc_holder) holder)
|
|
412
347
|
: Allocator(BOOST_MOVE_BASE(Allocator, holder))
|
|
413
348
|
, m_start(p)
|
|
414
349
|
, m_size(holder.m_size)
|
|
415
|
-
, m_capacity(capacity)
|
|
350
|
+
, m_capacity(static_cast<stored_size_type>(capacity))
|
|
416
351
|
{
|
|
417
352
|
allocator_type &this_alloc = this->alloc();
|
|
418
353
|
allocator_type &x_alloc = holder.alloc();
|
|
419
354
|
if(this->is_propagable_from(x_alloc, holder.start(), this_alloc, true)){
|
|
420
355
|
if(this->m_capacity){
|
|
421
|
-
this->
|
|
356
|
+
this->deallocate(this->m_start, this->m_capacity);
|
|
422
357
|
}
|
|
423
358
|
m_start = holder.m_start;
|
|
424
359
|
m_capacity = holder.m_capacity;
|
|
@@ -428,23 +363,26 @@ struct vector_alloc_holder
|
|
|
428
363
|
else if(this->m_capacity < holder.m_size){
|
|
429
364
|
size_type const n = holder.m_size;
|
|
430
365
|
pointer reuse = pointer();
|
|
431
|
-
|
|
366
|
+
size_type final_cap = n;
|
|
367
|
+
m_start = this->allocation_command(allocate_new, n, final_cap, reuse);
|
|
368
|
+
m_capacity = static_cast<stored_size_type>(final_cap);
|
|
432
369
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
433
370
|
this->num_alloc += n != 0;
|
|
434
371
|
#endif
|
|
435
372
|
}
|
|
436
373
|
}
|
|
437
374
|
|
|
438
|
-
vector_alloc_holder(pointer p, size_type n)
|
|
439
|
-
BOOST_NOEXCEPT_IF(
|
|
375
|
+
vector_alloc_holder(initial_capacity_t, pointer p, size_type n)
|
|
376
|
+
BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
|
|
440
377
|
: Allocator()
|
|
441
378
|
, m_start(p)
|
|
442
379
|
, m_size()
|
|
443
|
-
|
|
380
|
+
//n is guaranteed to fit into stored_size_type
|
|
381
|
+
, m_capacity(static_cast<stored_size_type>(n))
|
|
444
382
|
{}
|
|
445
383
|
|
|
446
384
|
template<class AllocFwd>
|
|
447
|
-
vector_alloc_holder(pointer p, size_type n, BOOST_FWD_REF(AllocFwd) a)
|
|
385
|
+
vector_alloc_holder(initial_capacity_t, pointer p, size_type n, BOOST_FWD_REF(AllocFwd) a)
|
|
448
386
|
: Allocator(::boost::forward<AllocFwd>(a))
|
|
449
387
|
, m_start(p)
|
|
450
388
|
, m_size()
|
|
@@ -454,17 +392,32 @@ struct vector_alloc_holder
|
|
|
454
392
|
BOOST_CONTAINER_FORCEINLINE ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW
|
|
455
393
|
{
|
|
456
394
|
if(this->m_capacity){
|
|
457
|
-
this->
|
|
395
|
+
this->deallocate(this->m_start, this->m_capacity);
|
|
458
396
|
}
|
|
459
397
|
}
|
|
460
398
|
|
|
461
399
|
BOOST_CONTAINER_FORCEINLINE pointer allocation_command(boost::container::allocation_type command,
|
|
462
400
|
size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
|
|
463
401
|
{
|
|
464
|
-
typedef typename
|
|
402
|
+
typedef typename dtl::version<Allocator>::type alloc_version;
|
|
465
403
|
return this->priv_allocation_command(alloc_version(), command, limit_size, prefer_in_recvd_out_size, reuse);
|
|
466
404
|
}
|
|
467
405
|
|
|
406
|
+
BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type n)
|
|
407
|
+
{
|
|
408
|
+
const size_type max_alloc = allocator_traits_type::max_size(this->alloc());
|
|
409
|
+
const size_type max = max_alloc <= stored_size_type(-1) ? max_alloc : stored_size_type(-1);
|
|
410
|
+
if ( max < n )
|
|
411
|
+
boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
|
|
412
|
+
|
|
413
|
+
return allocator_traits_type::allocate(this->alloc(), n);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
BOOST_CONTAINER_FORCEINLINE void deallocate(const pointer &p, size_type n)
|
|
417
|
+
{
|
|
418
|
+
allocator_traits_type::deallocate(this->alloc(), p, n);
|
|
419
|
+
}
|
|
420
|
+
|
|
468
421
|
bool try_expand_fwd(size_type at_least)
|
|
469
422
|
{
|
|
470
423
|
//There is not enough memory, try to expand the old one
|
|
@@ -482,17 +435,24 @@ struct vector_alloc_holder
|
|
|
482
435
|
return success;
|
|
483
436
|
}
|
|
484
437
|
|
|
485
|
-
|
|
438
|
+
template<class GrowthFactorType>
|
|
439
|
+
size_type next_capacity(size_type additional_objects) const
|
|
486
440
|
{
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
441
|
+
BOOST_ASSERT(additional_objects > size_type(this->m_capacity - this->m_size));
|
|
442
|
+
size_type max = allocator_traits_type::max_size(this->alloc());
|
|
443
|
+
(clamp_by_stored_size_type)(max, stored_size_type());
|
|
444
|
+
const size_type remaining_cap = max - size_type(this->m_capacity);
|
|
445
|
+
const size_type min_additional_cap = additional_objects - size_type(this->m_capacity - this->m_size);
|
|
446
|
+
|
|
447
|
+
if ( remaining_cap < min_additional_cap )
|
|
448
|
+
boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
|
|
449
|
+
|
|
450
|
+
return GrowthFactorType()( size_type(this->m_capacity), min_additional_cap, max);
|
|
491
451
|
}
|
|
492
452
|
|
|
493
|
-
pointer
|
|
494
|
-
|
|
495
|
-
|
|
453
|
+
pointer m_start;
|
|
454
|
+
stored_size_type m_size;
|
|
455
|
+
stored_size_type m_capacity;
|
|
496
456
|
|
|
497
457
|
void swap_resources(vector_alloc_holder &x) BOOST_NOEXCEPT_OR_NOTHROW
|
|
498
458
|
{
|
|
@@ -516,10 +476,14 @@ struct vector_alloc_holder
|
|
|
516
476
|
BOOST_CONTAINER_FORCEINLINE const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
|
|
517
477
|
{ return *this; }
|
|
518
478
|
|
|
519
|
-
const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
479
|
+
BOOST_CONTAINER_FORCEINLINE const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW
|
|
480
|
+
{ return m_start; }
|
|
481
|
+
BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
|
|
482
|
+
{ return m_capacity; }
|
|
483
|
+
BOOST_CONTAINER_FORCEINLINE void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW
|
|
484
|
+
{ m_start = p; }
|
|
485
|
+
BOOST_CONTAINER_FORCEINLINE void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW
|
|
486
|
+
{ BOOST_ASSERT( c <= stored_size_type(-1)); m_capacity = c; }
|
|
523
487
|
|
|
524
488
|
private:
|
|
525
489
|
void priv_first_allocation(size_type cap)
|
|
@@ -534,15 +498,30 @@ struct vector_alloc_holder
|
|
|
534
498
|
}
|
|
535
499
|
}
|
|
536
500
|
|
|
501
|
+
BOOST_CONTAINER_FORCEINLINE static void clamp_by_stored_size_type(size_type &, size_type)
|
|
502
|
+
{}
|
|
503
|
+
|
|
504
|
+
template<class SomeStoredSizeType>
|
|
505
|
+
BOOST_CONTAINER_FORCEINLINE static void clamp_by_stored_size_type(size_type &s, SomeStoredSizeType)
|
|
506
|
+
{
|
|
507
|
+
if (s >= SomeStoredSizeType(-1) )
|
|
508
|
+
s = SomeStoredSizeType(-1);
|
|
509
|
+
}
|
|
510
|
+
|
|
537
511
|
BOOST_CONTAINER_FORCEINLINE pointer priv_allocation_command(version_1, boost::container::allocation_type command,
|
|
538
|
-
size_type ,
|
|
512
|
+
size_type limit_size,
|
|
539
513
|
size_type &prefer_in_recvd_out_size,
|
|
540
514
|
pointer &reuse)
|
|
541
515
|
{
|
|
542
516
|
(void)command;
|
|
543
517
|
BOOST_ASSERT( (command & allocate_new));
|
|
544
518
|
BOOST_ASSERT(!(command & nothrow_allocation));
|
|
545
|
-
|
|
519
|
+
//First detect overflow on smaller stored_size_types
|
|
520
|
+
if (limit_size > stored_size_type(-1)){
|
|
521
|
+
boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
|
|
522
|
+
}
|
|
523
|
+
(clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
|
|
524
|
+
pointer const p = this->allocate(prefer_in_recvd_out_size);
|
|
546
525
|
reuse = pointer();
|
|
547
526
|
return p;
|
|
548
527
|
}
|
|
@@ -552,13 +531,22 @@ struct vector_alloc_holder
|
|
|
552
531
|
size_type &prefer_in_recvd_out_size,
|
|
553
532
|
pointer &reuse)
|
|
554
533
|
{
|
|
555
|
-
|
|
534
|
+
//First detect overflow on smaller stored_size_types
|
|
535
|
+
if (limit_size > stored_size_type(-1)){
|
|
536
|
+
boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
|
|
537
|
+
}
|
|
538
|
+
(clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
|
|
539
|
+
//Allocate memory
|
|
540
|
+
pointer p = this->alloc().allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse);
|
|
541
|
+
//If after allocation prefer_in_recvd_out_size is not representable by stored_size_type, truncate it.
|
|
542
|
+
(clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
|
|
543
|
+
return p;
|
|
556
544
|
}
|
|
557
545
|
};
|
|
558
546
|
|
|
559
547
|
//!This struct deallocates and allocated memory
|
|
560
|
-
template <class Allocator>
|
|
561
|
-
struct vector_alloc_holder<Allocator, version_0>
|
|
548
|
+
template <class Allocator, class StoredSizeType>
|
|
549
|
+
struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
|
|
562
550
|
: public Allocator
|
|
563
551
|
{
|
|
564
552
|
private:
|
|
@@ -569,13 +557,14 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
569
557
|
typedef typename allocator_traits_type::pointer pointer;
|
|
570
558
|
typedef typename allocator_traits_type::size_type size_type;
|
|
571
559
|
typedef typename allocator_traits_type::value_type value_type;
|
|
560
|
+
typedef StoredSizeType stored_size_type;
|
|
572
561
|
|
|
573
|
-
template <class OtherAllocator, class OtherAllocatorVersion>
|
|
562
|
+
template <class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
|
|
574
563
|
friend struct vector_alloc_holder;
|
|
575
564
|
|
|
576
565
|
//Constructor, does not throw
|
|
577
566
|
vector_alloc_holder()
|
|
578
|
-
BOOST_NOEXCEPT_IF(
|
|
567
|
+
BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
|
|
579
568
|
: Allocator(), m_size()
|
|
580
569
|
{}
|
|
581
570
|
|
|
@@ -587,7 +576,7 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
587
576
|
|
|
588
577
|
//Constructor, does not throw
|
|
589
578
|
template<class AllocConvertible>
|
|
590
|
-
vector_alloc_holder(
|
|
579
|
+
vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size)
|
|
591
580
|
: Allocator(boost::forward<AllocConvertible>(a))
|
|
592
581
|
, m_size(initial_size) //Size is initialized here...
|
|
593
582
|
{
|
|
@@ -596,7 +585,7 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
596
585
|
}
|
|
597
586
|
|
|
598
587
|
//Constructor, does not throw
|
|
599
|
-
vector_alloc_holder(
|
|
588
|
+
vector_alloc_holder(vector_uninitialized_size_t, size_type initial_size)
|
|
600
589
|
: Allocator()
|
|
601
590
|
, m_size(initial_size) //Size is initialized here...
|
|
602
591
|
{
|
|
@@ -609,11 +598,11 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
609
598
|
, m_size(holder.m_size) //Size is initialized here so vector should only call uninitialized_xxx after this
|
|
610
599
|
{
|
|
611
600
|
::boost::container::uninitialized_move_alloc_n
|
|
612
|
-
(this->alloc(),
|
|
601
|
+
(this->alloc(), boost::movelib::to_raw_pointer(holder.start()), m_size, boost::movelib::to_raw_pointer(this->start()));
|
|
613
602
|
}
|
|
614
603
|
|
|
615
|
-
template<class OtherAllocator, class OtherAllocatorVersion>
|
|
616
|
-
vector_alloc_holder(BOOST_RV_REF_BEG vector_alloc_holder<OtherAllocator, OtherAllocatorVersion> BOOST_RV_REF_END holder)
|
|
604
|
+
template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
|
|
605
|
+
vector_alloc_holder(BOOST_RV_REF_BEG vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> BOOST_RV_REF_END holder)
|
|
617
606
|
: Allocator()
|
|
618
607
|
, m_size(holder.m_size) //Initialize it to m_size as first_allocation can only succeed or abort
|
|
619
608
|
{
|
|
@@ -621,7 +610,7 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
621
610
|
const size_type n = holder.m_size;
|
|
622
611
|
this->priv_first_allocation(n);
|
|
623
612
|
::boost::container::uninitialized_move_alloc_n
|
|
624
|
-
(this->alloc(),
|
|
613
|
+
(this->alloc(), boost::movelib::to_raw_pointer(holder.start()), n, boost::movelib::to_raw_pointer(this->start()));
|
|
625
614
|
}
|
|
626
615
|
|
|
627
616
|
BOOST_CONTAINER_FORCEINLINE void priv_first_allocation(size_type cap)
|
|
@@ -636,8 +625,8 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
636
625
|
this->priv_deep_swap(x);
|
|
637
626
|
}
|
|
638
627
|
|
|
639
|
-
template<class OtherAllocator, class OtherAllocatorVersion>
|
|
640
|
-
void deep_swap(vector_alloc_holder<OtherAllocator, OtherAllocatorVersion> &x)
|
|
628
|
+
template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
|
|
629
|
+
void deep_swap(vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> &x)
|
|
641
630
|
{
|
|
642
631
|
if(this->m_size > OtherAllocator::internal_capacity || x.m_size > Allocator::internal_capacity){
|
|
643
632
|
throw_bad_alloc();
|
|
@@ -667,16 +656,16 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
667
656
|
|
|
668
657
|
BOOST_CONTAINER_FORCEINLINE pointer start() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_storage(); }
|
|
669
658
|
BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_capacity; }
|
|
670
|
-
|
|
659
|
+
stored_size_type m_size;
|
|
671
660
|
|
|
672
661
|
private:
|
|
673
662
|
|
|
674
|
-
template<class OtherAllocator, class OtherAllocatorVersion>
|
|
675
|
-
void priv_deep_swap(vector_alloc_holder<OtherAllocator, OtherAllocatorVersion> &x)
|
|
663
|
+
template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
|
|
664
|
+
void priv_deep_swap(vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> &x)
|
|
676
665
|
{
|
|
677
666
|
const size_type MaxTmpStorage = sizeof(value_type)*Allocator::internal_capacity;
|
|
678
|
-
value_type *const first_this =
|
|
679
|
-
value_type *const first_x =
|
|
667
|
+
value_type *const first_this = boost::movelib::to_raw_pointer(this->start());
|
|
668
|
+
value_type *const first_x = boost::movelib::to_raw_pointer(x.start());
|
|
680
669
|
|
|
681
670
|
if(this->m_size < x.m_size){
|
|
682
671
|
boost::container::deep_swap_alloc_n<MaxTmpStorage>(this->alloc(), first_this, this->m_size, first_x, x.m_size);
|
|
@@ -688,7 +677,34 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
688
677
|
}
|
|
689
678
|
};
|
|
690
679
|
|
|
691
|
-
|
|
680
|
+
struct growth_factor_60;
|
|
681
|
+
|
|
682
|
+
template<class T, class Default>
|
|
683
|
+
struct default_if_void
|
|
684
|
+
{
|
|
685
|
+
typedef T type;
|
|
686
|
+
};
|
|
687
|
+
|
|
688
|
+
template<class Default>
|
|
689
|
+
struct default_if_void<void, Default>
|
|
690
|
+
{
|
|
691
|
+
typedef Default type;
|
|
692
|
+
};
|
|
693
|
+
|
|
694
|
+
template<class Options, class AllocatorSizeType>
|
|
695
|
+
struct get_vector_opt
|
|
696
|
+
{
|
|
697
|
+
typedef vector_opt< typename default_if_void<typename Options::growth_factor_type, growth_factor_60>::type
|
|
698
|
+
, typename default_if_void<typename Options::stored_size_type, AllocatorSizeType>::type
|
|
699
|
+
> type;
|
|
700
|
+
};
|
|
701
|
+
|
|
702
|
+
template<class AllocatorSizeType>
|
|
703
|
+
struct get_vector_opt<void, AllocatorSizeType>
|
|
704
|
+
{
|
|
705
|
+
typedef vector_opt<growth_factor_60, AllocatorSizeType> type;
|
|
706
|
+
};
|
|
707
|
+
|
|
692
708
|
|
|
693
709
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
694
710
|
|
|
@@ -699,28 +715,32 @@ struct vector_alloc_holder<Allocator, version_0>
|
|
|
699
715
|
//!
|
|
700
716
|
//! \tparam T The type of object that is stored in the vector
|
|
701
717
|
//! \tparam Allocator The allocator used for all internal memory management
|
|
702
|
-
|
|
718
|
+
//! \tparam Options A type produced from \c boost::container::vector_options.
|
|
719
|
+
template <class T, class Allocator BOOST_CONTAINER_DOCONLY(= new_allocator<T>), class Options BOOST_CONTAINER_DOCONLY(= void) >
|
|
703
720
|
class vector
|
|
704
721
|
{
|
|
705
722
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
706
723
|
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
724
|
+
typedef typename boost::container::allocator_traits<Allocator>::size_type alloc_size_type;
|
|
725
|
+
typedef typename get_vector_opt<Options, alloc_size_type>::type options_type;
|
|
726
|
+
typedef typename options_type::growth_factor_type growth_factor_type;
|
|
727
|
+
typedef typename options_type::stored_size_type stored_size_type;
|
|
728
|
+
typedef value_less<T> value_less_t;
|
|
729
|
+
|
|
730
|
+
//If provided the stored_size option must specify a type that is equal or a type that is smaller.
|
|
731
|
+
BOOST_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) ||
|
|
732
|
+
dtl::is_same<stored_size_type, alloc_size_type>::value) );
|
|
713
733
|
|
|
714
|
-
typedef typename
|
|
715
|
-
typedef boost::container::
|
|
734
|
+
typedef typename dtl::version<Allocator>::type alloc_version;
|
|
735
|
+
typedef boost::container::vector_alloc_holder<Allocator, stored_size_type> alloc_holder_t;
|
|
716
736
|
alloc_holder_t m_holder;
|
|
717
737
|
typedef allocator_traits<Allocator> allocator_traits_type;
|
|
718
|
-
template <class U, class UAllocator>
|
|
738
|
+
template <class U, class UAllocator, class UOptions>
|
|
719
739
|
friend class vector;
|
|
720
740
|
|
|
721
741
|
typedef typename allocator_traits_type::pointer pointer_impl;
|
|
722
|
-
typedef
|
|
723
|
-
typedef
|
|
742
|
+
typedef vec_iterator<pointer_impl, false> iterator_impl;
|
|
743
|
+
typedef vec_iterator<pointer_impl, true > const_iterator_impl;
|
|
724
744
|
|
|
725
745
|
protected:
|
|
726
746
|
static bool is_propagable_from(const Allocator &from_alloc, pointer_impl p, const Allocator &to_alloc, bool const propagate_allocator)
|
|
@@ -747,20 +767,15 @@ class vector
|
|
|
747
767
|
typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
|
|
748
768
|
typedef Allocator allocator_type;
|
|
749
769
|
typedef Allocator stored_allocator_type;
|
|
750
|
-
#if defined BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
751
|
-
typedef BOOST_CONTAINER_IMPDEF(pointer) iterator;
|
|
752
|
-
typedef BOOST_CONTAINER_IMPDEF(const_pointer) const_iterator;
|
|
753
|
-
#else
|
|
754
770
|
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
|
755
771
|
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
|
756
|
-
#endif
|
|
757
772
|
typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator;
|
|
758
773
|
typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
|
|
759
774
|
|
|
760
775
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
761
776
|
private:
|
|
762
777
|
BOOST_COPYABLE_AND_MOVABLE(vector)
|
|
763
|
-
typedef
|
|
778
|
+
typedef vector_value_traits<Allocator> value_traits;
|
|
764
779
|
typedef constant_iterator<T, difference_type> cvalue_iterator;
|
|
765
780
|
|
|
766
781
|
protected:
|
|
@@ -768,14 +783,13 @@ class vector
|
|
|
768
783
|
BOOST_CONTAINER_FORCEINLINE void steal_resources(vector &x)
|
|
769
784
|
{ return this->m_holder.steal_resources(x.m_holder); }
|
|
770
785
|
|
|
771
|
-
struct initial_capacity_t{};
|
|
772
786
|
template<class AllocFwd>
|
|
773
787
|
BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity, BOOST_FWD_REF(AllocFwd) a)
|
|
774
|
-
: m_holder(initial_memory, capacity, ::boost::forward<AllocFwd>(a))
|
|
788
|
+
: m_holder(initial_capacity_t(), initial_memory, capacity, ::boost::forward<AllocFwd>(a))
|
|
775
789
|
{}
|
|
776
790
|
|
|
777
791
|
BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity)
|
|
778
|
-
: m_holder(initial_memory, capacity)
|
|
792
|
+
: m_holder(initial_capacity_t(), initial_memory, capacity)
|
|
779
793
|
{}
|
|
780
794
|
|
|
781
795
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
@@ -792,7 +806,7 @@ class vector
|
|
|
792
806
|
//! <b>Throws</b>: Nothing.
|
|
793
807
|
//!
|
|
794
808
|
//! <b>Complexity</b>: Constant.
|
|
795
|
-
vector() BOOST_NOEXCEPT_IF(
|
|
809
|
+
vector() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
|
|
796
810
|
: m_holder()
|
|
797
811
|
{}
|
|
798
812
|
|
|
@@ -812,7 +826,7 @@ class vector
|
|
|
812
826
|
//!
|
|
813
827
|
//! <b>Complexity</b>: Linear to n.
|
|
814
828
|
explicit vector(size_type n)
|
|
815
|
-
: m_holder(
|
|
829
|
+
: m_holder(vector_uninitialized_size, n)
|
|
816
830
|
{
|
|
817
831
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
818
832
|
this->num_alloc += n != 0;
|
|
@@ -829,7 +843,7 @@ class vector
|
|
|
829
843
|
//!
|
|
830
844
|
//! <b>Complexity</b>: Linear to n.
|
|
831
845
|
explicit vector(size_type n, const allocator_type &a)
|
|
832
|
-
: m_holder(
|
|
846
|
+
: m_holder(vector_uninitialized_size, a, n)
|
|
833
847
|
{
|
|
834
848
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
835
849
|
this->num_alloc += n != 0;
|
|
@@ -848,7 +862,7 @@ class vector
|
|
|
848
862
|
//!
|
|
849
863
|
//! <b>Note</b>: Non-standard extension
|
|
850
864
|
vector(size_type n, default_init_t)
|
|
851
|
-
: m_holder(
|
|
865
|
+
: m_holder(vector_uninitialized_size, n)
|
|
852
866
|
{
|
|
853
867
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
854
868
|
this->num_alloc += n != 0;
|
|
@@ -867,7 +881,7 @@ class vector
|
|
|
867
881
|
//!
|
|
868
882
|
//! <b>Note</b>: Non-standard extension
|
|
869
883
|
vector(size_type n, default_init_t, const allocator_type &a)
|
|
870
|
-
: m_holder(
|
|
884
|
+
: m_holder(vector_uninitialized_size, a, n)
|
|
871
885
|
{
|
|
872
886
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
873
887
|
this->num_alloc += n != 0;
|
|
@@ -884,7 +898,7 @@ class vector
|
|
|
884
898
|
//!
|
|
885
899
|
//! <b>Complexity</b>: Linear to n.
|
|
886
900
|
vector(size_type n, const T& value)
|
|
887
|
-
: m_holder(
|
|
901
|
+
: m_holder(vector_uninitialized_size, n)
|
|
888
902
|
{
|
|
889
903
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
890
904
|
this->num_alloc += n != 0;
|
|
@@ -901,7 +915,7 @@ class vector
|
|
|
901
915
|
//!
|
|
902
916
|
//! <b>Complexity</b>: Linear to n.
|
|
903
917
|
vector(size_type n, const T& value, const allocator_type& a)
|
|
904
|
-
: m_holder(
|
|
918
|
+
: m_holder(vector_uninitialized_size, a, n)
|
|
905
919
|
{
|
|
906
920
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
907
921
|
this->num_alloc += n != 0;
|
|
@@ -919,9 +933,9 @@ class vector
|
|
|
919
933
|
//! <b>Complexity</b>: Linear to the range [first, last).
|
|
920
934
|
template <class InIt>
|
|
921
935
|
vector(InIt first, InIt last
|
|
922
|
-
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename
|
|
923
|
-
<
|
|
924
|
-
BOOST_MOVE_I
|
|
936
|
+
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
|
|
937
|
+
< dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value
|
|
938
|
+
BOOST_MOVE_I dtl::nat >::type * = 0)
|
|
925
939
|
)
|
|
926
940
|
: m_holder()
|
|
927
941
|
{ this->assign(first, last); }
|
|
@@ -935,9 +949,9 @@ class vector
|
|
|
935
949
|
//! <b>Complexity</b>: Linear to the range [first, last).
|
|
936
950
|
template <class InIt>
|
|
937
951
|
vector(InIt first, InIt last, const allocator_type& a
|
|
938
|
-
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename
|
|
939
|
-
<
|
|
940
|
-
BOOST_MOVE_I
|
|
952
|
+
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
|
|
953
|
+
< dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value
|
|
954
|
+
BOOST_MOVE_I dtl::nat >::type * = 0)
|
|
941
955
|
)
|
|
942
956
|
: m_holder(a)
|
|
943
957
|
{ this->assign(first, last); }
|
|
@@ -951,7 +965,7 @@ class vector
|
|
|
951
965
|
//!
|
|
952
966
|
//! <b>Complexity</b>: Linear to the elements x contains.
|
|
953
967
|
vector(const vector &x)
|
|
954
|
-
: m_holder(
|
|
968
|
+
: m_holder( vector_uninitialized_size
|
|
955
969
|
, allocator_traits_type::select_on_container_copy_construction(x.m_holder.alloc())
|
|
956
970
|
, x.size())
|
|
957
971
|
{
|
|
@@ -997,8 +1011,8 @@ class vector
|
|
|
997
1011
|
//! <b>Note</b>: Non-standard extension to support static_vector
|
|
998
1012
|
template<class OtherAllocator>
|
|
999
1013
|
vector(BOOST_RV_REF_BEG vector<T, OtherAllocator> BOOST_RV_REF_END x
|
|
1000
|
-
, typename
|
|
1001
|
-
<
|
|
1014
|
+
, typename dtl::enable_if_c
|
|
1015
|
+
< dtl::is_version<OtherAllocator, 0>::value>::type * = 0
|
|
1002
1016
|
)
|
|
1003
1017
|
: m_holder(boost::move(x.m_holder))
|
|
1004
1018
|
{}
|
|
@@ -1014,7 +1028,7 @@ class vector
|
|
|
1014
1028
|
//!
|
|
1015
1029
|
//! <b>Complexity</b>: Linear to the elements x contains.
|
|
1016
1030
|
vector(const vector &x, const allocator_type &a)
|
|
1017
|
-
: m_holder(
|
|
1031
|
+
: m_holder(vector_uninitialized_size, a, x.size())
|
|
1018
1032
|
{
|
|
1019
1033
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
1020
1034
|
this->num_alloc += x.size() != 0;
|
|
@@ -1032,7 +1046,7 @@ class vector
|
|
|
1032
1046
|
//!
|
|
1033
1047
|
//! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
|
|
1034
1048
|
vector(BOOST_RV_REF(vector) x, const allocator_type &a)
|
|
1035
|
-
: m_holder(
|
|
1049
|
+
: m_holder( vector_uninitialized_size, a
|
|
1036
1050
|
, is_propagable_from(x.get_stored_allocator(), x.m_holder.start(), a, true) ? 0 : x.size()
|
|
1037
1051
|
)
|
|
1038
1052
|
{
|
|
@@ -1123,10 +1137,10 @@ class vector
|
|
|
1123
1137
|
//!
|
|
1124
1138
|
//! <b>Note</b>: Non-standard extension to support static_vector
|
|
1125
1139
|
template<class OtherAllocator>
|
|
1126
|
-
BOOST_CONTAINER_FORCEINLINE typename
|
|
1140
|
+
BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and
|
|
1127
1141
|
< vector&
|
|
1128
|
-
,
|
|
1129
|
-
,
|
|
1142
|
+
, dtl::is_version<OtherAllocator, 0>
|
|
1143
|
+
, dtl::is_different<OtherAllocator, allocator_type>
|
|
1130
1144
|
>::type
|
|
1131
1145
|
operator=(BOOST_RV_REF_BEG vector<value_type, OtherAllocator> BOOST_RV_REF_END x)
|
|
1132
1146
|
{
|
|
@@ -1145,10 +1159,10 @@ class vector
|
|
|
1145
1159
|
//!
|
|
1146
1160
|
//! <b>Note</b>: Non-standard extension to support static_vector
|
|
1147
1161
|
template<class OtherAllocator>
|
|
1148
|
-
BOOST_CONTAINER_FORCEINLINE typename
|
|
1162
|
+
BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and
|
|
1149
1163
|
< vector&
|
|
1150
|
-
,
|
|
1151
|
-
,
|
|
1164
|
+
, dtl::is_version<OtherAllocator, 0>
|
|
1165
|
+
, dtl::is_different<OtherAllocator, allocator_type>
|
|
1152
1166
|
>::type
|
|
1153
1167
|
operator=(const vector<value_type, OtherAllocator> &x)
|
|
1154
1168
|
{
|
|
@@ -1166,12 +1180,12 @@ class vector
|
|
|
1166
1180
|
//! <b>Complexity</b>: Linear to n.
|
|
1167
1181
|
template <class InIt>
|
|
1168
1182
|
void assign(InIt first, InIt last
|
|
1169
|
-
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename
|
|
1183
|
+
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
|
|
1170
1184
|
< void
|
|
1171
|
-
BOOST_MOVE_I
|
|
1172
|
-
BOOST_MOVE_I
|
|
1173
|
-
<
|
|
1174
|
-
BOOST_MOVE_I
|
|
1185
|
+
BOOST_MOVE_I dtl::is_convertible<InIt BOOST_MOVE_I size_type>
|
|
1186
|
+
BOOST_MOVE_I dtl::and_
|
|
1187
|
+
< dtl::is_different<alloc_version BOOST_MOVE_I version_0>
|
|
1188
|
+
BOOST_MOVE_I dtl::is_not_input_iterator<InIt>
|
|
1175
1189
|
>
|
|
1176
1190
|
>::type * = 0)
|
|
1177
1191
|
)
|
|
@@ -1186,7 +1200,7 @@ class vector
|
|
|
1186
1200
|
if (first == last){
|
|
1187
1201
|
//There are no more elements in the sequence, erase remaining
|
|
1188
1202
|
T* const end_pos = this->priv_raw_end();
|
|
1189
|
-
const size_type n = static_cast<size_type>(end_pos -
|
|
1203
|
+
const size_type n = static_cast<size_type>(end_pos - boost::movelib::iterator_to_raw_pointer(cur));
|
|
1190
1204
|
this->priv_destroy_last_n(n);
|
|
1191
1205
|
}
|
|
1192
1206
|
else{
|
|
@@ -1215,11 +1229,11 @@ class vector
|
|
|
1215
1229
|
//! <b>Complexity</b>: Linear to n.
|
|
1216
1230
|
template <class FwdIt>
|
|
1217
1231
|
void assign(FwdIt first, FwdIt last
|
|
1218
|
-
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename
|
|
1232
|
+
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
|
|
1219
1233
|
< void
|
|
1220
|
-
BOOST_MOVE_I
|
|
1221
|
-
BOOST_MOVE_I
|
|
1222
|
-
BOOST_MOVE_I
|
|
1234
|
+
BOOST_MOVE_I dtl::is_same<alloc_version BOOST_MOVE_I version_0>
|
|
1235
|
+
BOOST_MOVE_I dtl::is_convertible<FwdIt BOOST_MOVE_I size_type>
|
|
1236
|
+
BOOST_MOVE_I dtl::is_input_iterator<FwdIt>
|
|
1223
1237
|
>::type * = 0)
|
|
1224
1238
|
)
|
|
1225
1239
|
{
|
|
@@ -1238,7 +1252,7 @@ class vector
|
|
|
1238
1252
|
pointer const old_p = this->m_holder.start();
|
|
1239
1253
|
if(old_p){
|
|
1240
1254
|
this->priv_destroy_all();
|
|
1241
|
-
this->m_holder.
|
|
1255
|
+
this->m_holder.deallocate(old_p, old_capacity);
|
|
1242
1256
|
}
|
|
1243
1257
|
this->m_holder.start(ret);
|
|
1244
1258
|
this->m_holder.capacity(real_cap);
|
|
@@ -1741,7 +1755,7 @@ class vector
|
|
|
1741
1755
|
return *p;
|
|
1742
1756
|
}
|
|
1743
1757
|
else{
|
|
1744
|
-
typedef
|
|
1758
|
+
typedef dtl::insert_emplace_proxy<Allocator, T*, Args...> type;
|
|
1745
1759
|
return *this->priv_forward_range_insert_no_capacity
|
|
1746
1760
|
(this->back_ptr(), 1, type(::boost::forward<Args>(args)...), alloc_version());
|
|
1747
1761
|
}
|
|
@@ -1782,7 +1796,7 @@ class vector
|
|
|
1782
1796
|
{
|
|
1783
1797
|
BOOST_ASSERT(this->priv_in_range_or_end(position));
|
|
1784
1798
|
//Just call more general insert(pos, size, value) and return iterator
|
|
1785
|
-
typedef
|
|
1799
|
+
typedef dtl::insert_emplace_proxy<Allocator, T*, Args...> type;
|
|
1786
1800
|
return this->priv_forward_range_insert( vector_iterator_get_ptr(position), 1
|
|
1787
1801
|
, type(::boost::forward<Args>(args)...));
|
|
1788
1802
|
}
|
|
@@ -1801,7 +1815,7 @@ class vector
|
|
|
1801
1815
|
return *p;\
|
|
1802
1816
|
}\
|
|
1803
1817
|
else{\
|
|
1804
|
-
typedef
|
|
1818
|
+
typedef dtl::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
|
|
1805
1819
|
return *this->priv_forward_range_insert_no_capacity\
|
|
1806
1820
|
( this->back_ptr(), 1, type(BOOST_MOVE_FWD##N), alloc_version());\
|
|
1807
1821
|
}\
|
|
@@ -1823,7 +1837,7 @@ class vector
|
|
|
1823
1837
|
iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
1824
1838
|
{\
|
|
1825
1839
|
BOOST_ASSERT(this->priv_in_range_or_end(pos));\
|
|
1826
|
-
typedef
|
|
1840
|
+
typedef dtl::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
|
|
1827
1841
|
return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), 1, type(BOOST_MOVE_FWD##N));\
|
|
1828
1842
|
}\
|
|
1829
1843
|
//
|
|
@@ -1889,7 +1903,7 @@ class vector
|
|
|
1889
1903
|
iterator insert(const_iterator p, size_type n, const T& x)
|
|
1890
1904
|
{
|
|
1891
1905
|
BOOST_ASSERT(this->priv_in_range_or_end(p));
|
|
1892
|
-
|
|
1906
|
+
dtl::insert_n_copies_proxy<Allocator, T*> proxy(x);
|
|
1893
1907
|
return this->priv_forward_range_insert(vector_iterator_get_ptr(p), n, proxy);
|
|
1894
1908
|
}
|
|
1895
1909
|
|
|
@@ -1906,10 +1920,10 @@ class vector
|
|
|
1906
1920
|
template <class InIt>
|
|
1907
1921
|
iterator insert(const_iterator pos, InIt first, InIt last
|
|
1908
1922
|
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
1909
|
-
, typename
|
|
1923
|
+
, typename dtl::disable_if_or
|
|
1910
1924
|
< void
|
|
1911
|
-
,
|
|
1912
|
-
,
|
|
1925
|
+
, dtl::is_convertible<InIt, size_type>
|
|
1926
|
+
, dtl::is_not_input_iterator<InIt>
|
|
1913
1927
|
>::type * = 0
|
|
1914
1928
|
#endif
|
|
1915
1929
|
)
|
|
@@ -1927,15 +1941,15 @@ class vector
|
|
|
1927
1941
|
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
1928
1942
|
template <class FwdIt>
|
|
1929
1943
|
iterator insert(const_iterator pos, FwdIt first, FwdIt last
|
|
1930
|
-
, typename
|
|
1944
|
+
, typename dtl::disable_if_or
|
|
1931
1945
|
< void
|
|
1932
|
-
,
|
|
1933
|
-
,
|
|
1946
|
+
, dtl::is_convertible<FwdIt, size_type>
|
|
1947
|
+
, dtl::is_input_iterator<FwdIt>
|
|
1934
1948
|
>::type * = 0
|
|
1935
1949
|
)
|
|
1936
1950
|
{
|
|
1937
1951
|
BOOST_ASSERT(this->priv_in_range_or_end(pos));
|
|
1938
|
-
|
|
1952
|
+
dtl::insert_range_proxy<Allocator, FwdIt, T*> proxy(first);
|
|
1939
1953
|
return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), boost::container::iterator_distance(first, last), proxy);
|
|
1940
1954
|
}
|
|
1941
1955
|
#endif
|
|
@@ -1960,10 +1974,10 @@ class vector
|
|
|
1960
1974
|
iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
|
|
1961
1975
|
{
|
|
1962
1976
|
BOOST_ASSERT(this->priv_in_range_or_end(pos));
|
|
1963
|
-
BOOST_ASSERT(
|
|
1977
|
+
BOOST_ASSERT(dtl::is_input_iterator<InIt>::value ||
|
|
1964
1978
|
num == static_cast<size_type>(boost::container::iterator_distance(first, last)));
|
|
1965
1979
|
(void)last;
|
|
1966
|
-
|
|
1980
|
+
dtl::insert_range_proxy<Allocator, InIt, T*> proxy(first);
|
|
1967
1981
|
return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), num, proxy);
|
|
1968
1982
|
}
|
|
1969
1983
|
#endif
|
|
@@ -2005,11 +2019,11 @@ class vector
|
|
|
2005
2019
|
{
|
|
2006
2020
|
BOOST_ASSERT(this->priv_in_range(position));
|
|
2007
2021
|
const pointer p = vector_iterator_get_ptr(position);
|
|
2008
|
-
T *const pos_ptr =
|
|
2022
|
+
T *const pos_ptr = boost::movelib::to_raw_pointer(p);
|
|
2009
2023
|
T *const beg_ptr = this->priv_raw_begin();
|
|
2010
2024
|
T *const new_end_ptr = ::boost::container::move(pos_ptr + 1, beg_ptr + this->m_holder.m_size, pos_ptr);
|
|
2011
2025
|
//Move elements forward and destroy last
|
|
2012
|
-
this->priv_destroy_last(pos_ptr
|
|
2026
|
+
this->priv_destroy_last(pos_ptr != new_end_ptr);
|
|
2013
2027
|
return iterator(p);
|
|
2014
2028
|
}
|
|
2015
2029
|
|
|
@@ -2025,9 +2039,9 @@ class vector
|
|
|
2025
2039
|
(first < last && this->priv_in_range(first) && this->priv_in_range_or_end(last)));
|
|
2026
2040
|
if (first != last){
|
|
2027
2041
|
T* const old_end_ptr = this->priv_raw_end();
|
|
2028
|
-
T* const first_ptr =
|
|
2029
|
-
T* const last_ptr =
|
|
2030
|
-
T* const ptr =
|
|
2042
|
+
T* const first_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(first));
|
|
2043
|
+
T* const last_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(last));
|
|
2044
|
+
T* const ptr = boost::movelib::to_raw_pointer(boost::container::move(last_ptr, old_end_ptr, first_ptr));
|
|
2031
2045
|
this->priv_destroy_last_n(old_end_ptr - ptr);
|
|
2032
2046
|
}
|
|
2033
2047
|
return iterator(vector_iterator_get_ptr(first));
|
|
@@ -2038,12 +2052,12 @@ class vector
|
|
|
2038
2052
|
//! <b>Throws</b>: Nothing.
|
|
2039
2053
|
//!
|
|
2040
2054
|
//! <b>Complexity</b>: Constant.
|
|
2041
|
-
void swap(vector& x)
|
|
2055
|
+
BOOST_CONTAINER_FORCEINLINE void swap(vector& x)
|
|
2042
2056
|
BOOST_NOEXCEPT_IF( ((allocator_traits_type::propagate_on_container_swap::value
|
|
2043
2057
|
|| allocator_traits_type::is_always_equal::value) &&
|
|
2044
|
-
!
|
|
2058
|
+
!dtl::is_version<Allocator, 0>::value))
|
|
2045
2059
|
{
|
|
2046
|
-
this->priv_swap(x,
|
|
2060
|
+
this->priv_swap(x, dtl::bool_<dtl::is_version<Allocator, 0>::value>());
|
|
2047
2061
|
}
|
|
2048
2062
|
|
|
2049
2063
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
@@ -2056,11 +2070,11 @@ class vector
|
|
|
2056
2070
|
//!
|
|
2057
2071
|
//! <b>Note</b>: Non-standard extension to support static_vector
|
|
2058
2072
|
template<class OtherAllocator>
|
|
2059
|
-
void swap(vector<T, OtherAllocator> & x
|
|
2060
|
-
, typename
|
|
2073
|
+
BOOST_CONTAINER_FORCEINLINE void swap(vector<T, OtherAllocator> & x
|
|
2074
|
+
, typename dtl::enable_if_and
|
|
2061
2075
|
< void
|
|
2062
|
-
,
|
|
2063
|
-
,
|
|
2076
|
+
, dtl::is_version<OtherAllocator, 0>
|
|
2077
|
+
, dtl::is_different<OtherAllocator, allocator_type>
|
|
2064
2078
|
>::type * = 0
|
|
2065
2079
|
)
|
|
2066
2080
|
{ this->m_holder.deep_swap(x.m_holder); }
|
|
@@ -2072,19 +2086,19 @@ class vector
|
|
|
2072
2086
|
//! <b>Throws</b>: Nothing.
|
|
2073
2087
|
//!
|
|
2074
2088
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
|
2075
|
-
void clear() BOOST_NOEXCEPT_OR_NOTHROW
|
|
2089
|
+
BOOST_CONTAINER_FORCEINLINE void clear() BOOST_NOEXCEPT_OR_NOTHROW
|
|
2076
2090
|
{ this->priv_destroy_all(); }
|
|
2077
2091
|
|
|
2078
2092
|
//! <b>Effects</b>: Returns true if x and y are equal
|
|
2079
2093
|
//!
|
|
2080
2094
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
|
2081
|
-
friend bool operator==(const vector& x, const vector& y)
|
|
2095
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const vector& x, const vector& y)
|
|
2082
2096
|
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
|
2083
2097
|
|
|
2084
2098
|
//! <b>Effects</b>: Returns true if x and y are unequal
|
|
2085
2099
|
//!
|
|
2086
2100
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
|
2087
|
-
friend bool operator!=(const vector& x, const vector& y)
|
|
2101
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const vector& x, const vector& y)
|
|
2088
2102
|
{ return !(x == y); }
|
|
2089
2103
|
|
|
2090
2104
|
//! <b>Effects</b>: Returns true if x is less than y
|
|
@@ -2104,25 +2118,25 @@ class vector
|
|
|
2104
2118
|
//! <b>Effects</b>: Returns true if x is greater than y
|
|
2105
2119
|
//!
|
|
2106
2120
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
|
2107
|
-
friend bool operator>(const vector& x, const vector& y)
|
|
2121
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const vector& x, const vector& y)
|
|
2108
2122
|
{ return y < x; }
|
|
2109
2123
|
|
|
2110
2124
|
//! <b>Effects</b>: Returns true if x is equal or less than y
|
|
2111
2125
|
//!
|
|
2112
2126
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
|
2113
|
-
friend bool operator<=(const vector& x, const vector& y)
|
|
2127
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const vector& x, const vector& y)
|
|
2114
2128
|
{ return !(y < x); }
|
|
2115
2129
|
|
|
2116
2130
|
//! <b>Effects</b>: Returns true if x is equal or greater than y
|
|
2117
2131
|
//!
|
|
2118
2132
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
|
2119
|
-
friend bool operator>=(const vector& x, const vector& y)
|
|
2133
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const vector& x, const vector& y)
|
|
2120
2134
|
{ return !(x < y); }
|
|
2121
2135
|
|
|
2122
2136
|
//! <b>Effects</b>: x.swap(y)
|
|
2123
2137
|
//!
|
|
2124
2138
|
//! <b>Complexity</b>: Constant.
|
|
2125
|
-
friend void swap(vector& x, vector& y)
|
|
2139
|
+
BOOST_CONTAINER_FORCEINLINE friend void swap(vector& x, vector& y)
|
|
2126
2140
|
{ x.swap(y); }
|
|
2127
2141
|
|
|
2128
2142
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
@@ -2143,27 +2157,51 @@ class vector
|
|
|
2143
2157
|
|
|
2144
2158
|
//Absolutely experimental. This function might change, disappear or simply crash!
|
|
2145
2159
|
template<class BiDirPosConstIt, class BiDirValueIt>
|
|
2146
|
-
void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it)
|
|
2160
|
+
BOOST_CONTAINER_FORCEINLINE void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it)
|
|
2147
2161
|
{
|
|
2148
|
-
typedef
|
|
2162
|
+
typedef vector_insert_ordered_cursor<BiDirPosConstIt, BiDirValueIt> inserter_t;
|
|
2149
2163
|
return this->priv_insert_ordered_at(element_count, inserter_t(last_position_it, last_value_it));
|
|
2150
2164
|
}
|
|
2151
2165
|
|
|
2152
|
-
template<class
|
|
2153
|
-
void merge(
|
|
2154
|
-
{ this->merge(first, last,
|
|
2166
|
+
template<class InputIt>
|
|
2167
|
+
BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last)
|
|
2168
|
+
{ this->merge(first, last, value_less_t()); }
|
|
2155
2169
|
|
|
2156
|
-
template<class
|
|
2157
|
-
void merge(
|
|
2158
|
-
{
|
|
2170
|
+
template<class InputIt, class Compare>
|
|
2171
|
+
BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last, Compare comp)
|
|
2172
|
+
{
|
|
2173
|
+
size_type const s = this->size();
|
|
2174
|
+
size_type const c = this->capacity();
|
|
2175
|
+
size_type n = 0;
|
|
2176
|
+
size_type const free_cap = c - s;
|
|
2177
|
+
//If not input iterator and new elements don't fit in the remaining capacity, merge in new buffer
|
|
2178
|
+
if(!dtl::is_input_iterator<InputIt>::value &&
|
|
2179
|
+
free_cap < (n = static_cast<size_type>(boost::container::iterator_distance(first, last)))){
|
|
2180
|
+
this->priv_merge_in_new_buffer(first, n, comp, alloc_version());
|
|
2181
|
+
}
|
|
2182
|
+
else{
|
|
2183
|
+
iterator pos(this->insert(this->cend(), first, last));
|
|
2184
|
+
T *const raw_beg = this->priv_raw_begin();
|
|
2185
|
+
T *const raw_end = this->priv_raw_end();
|
|
2186
|
+
T *const raw_pos = raw_beg + s;
|
|
2187
|
+
boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, free_cap - n);
|
|
2188
|
+
}
|
|
2189
|
+
}
|
|
2159
2190
|
|
|
2160
|
-
template<class
|
|
2161
|
-
void merge_unique(
|
|
2162
|
-
{ this->
|
|
2191
|
+
template<class InputIt>
|
|
2192
|
+
BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last)
|
|
2193
|
+
{ this->merge_unique(first, last, value_less_t()); }
|
|
2163
2194
|
|
|
2164
|
-
template<class
|
|
2165
|
-
void merge_unique(
|
|
2166
|
-
{
|
|
2195
|
+
template<class InputIt, class Compare>
|
|
2196
|
+
BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last, Compare comp)
|
|
2197
|
+
{
|
|
2198
|
+
size_type const s = this->size();
|
|
2199
|
+
this->priv_set_difference_back(first, last, comp);
|
|
2200
|
+
T *const raw_beg = this->priv_raw_begin();
|
|
2201
|
+
T *const raw_end = this->priv_raw_end();
|
|
2202
|
+
T *raw_pos = raw_beg + s;
|
|
2203
|
+
boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, this->capacity() - this->size());
|
|
2204
|
+
}
|
|
2167
2205
|
|
|
2168
2206
|
private:
|
|
2169
2207
|
template<class PositionValue>
|
|
@@ -2223,113 +2261,54 @@ class vector
|
|
|
2223
2261
|
}
|
|
2224
2262
|
}
|
|
2225
2263
|
|
|
2226
|
-
template<class
|
|
2227
|
-
void
|
|
2264
|
+
template<class InputIt, class Compare>
|
|
2265
|
+
void priv_set_difference_back(InputIt first1, InputIt last1, Compare comp)
|
|
2228
2266
|
{
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
size_type const new_size = s + n;
|
|
2238
|
-
size_type new_cap = new_size;
|
|
2239
|
-
pointer p = pointer();
|
|
2240
|
-
p = this->m_holder.allocation_command(allocate_new, new_size, new_cap, p);
|
|
2241
|
-
this->priv_merge_in_new_buffer(UniqueBool(), first, n, comp, p, new_cap);
|
|
2267
|
+
T * old_first2 = this->priv_raw_begin();
|
|
2268
|
+
T * first2 = old_first2;
|
|
2269
|
+
T * last2 = this->priv_raw_end();
|
|
2270
|
+
|
|
2271
|
+
while (first1 != last1) {
|
|
2272
|
+
if (first2 == last2){
|
|
2273
|
+
this->insert(this->cend(), first1, last1);
|
|
2274
|
+
return;
|
|
2242
2275
|
}
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2276
|
+
|
|
2277
|
+
if (comp(*first1, *first2)) {
|
|
2278
|
+
this->emplace_back(*first1);
|
|
2279
|
+
//Reallocation happened, update range
|
|
2280
|
+
T * const raw_begin = this->priv_raw_begin();
|
|
2281
|
+
if(old_first2 != raw_begin){
|
|
2282
|
+
first2 = raw_begin + (first2 - old_first2);
|
|
2283
|
+
last2 = first2 + (last2 - old_first2);
|
|
2284
|
+
old_first2 = raw_begin;
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
++first1;
|
|
2247
2288
|
}
|
|
2248
|
-
else{
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
size_type positions[PosCount];
|
|
2252
|
-
size_type *indexes = 0;
|
|
2253
|
-
while(remaining){
|
|
2254
|
-
//Query for room to store indexes in the remaining buffer
|
|
2255
|
-
boost::uintptr_t const szt_align_mask = container_detail::alignment_of<size_type>::value - 1;
|
|
2256
|
-
boost::uintptr_t const addr = boost::uintptr_t(this->priv_raw_begin() + s + n);
|
|
2257
|
-
boost::uintptr_t const capaddr = boost::uintptr_t(this->priv_raw_begin() + c);
|
|
2258
|
-
boost::uintptr_t const aligned_addr = (addr + szt_align_mask) & ~szt_align_mask;
|
|
2259
|
-
indexes = reinterpret_cast<size_type *>(aligned_addr);
|
|
2260
|
-
std::size_t index_capacity = (aligned_addr >= capaddr) ? 0u : (capaddr - aligned_addr)/sizeof(size_type);
|
|
2261
|
-
|
|
2262
|
-
//Capacity is constant, we're not going to change it
|
|
2263
|
-
if(index_capacity < PosCount){
|
|
2264
|
-
indexes = positions;
|
|
2265
|
-
index_capacity = PosCount;
|
|
2266
|
-
}
|
|
2267
|
-
if(index_capacity > remaining)
|
|
2268
|
-
index_capacity = remaining;
|
|
2269
|
-
BidirIt limit = first;
|
|
2270
|
-
boost::container::iterator_advance(limit, index_capacity);
|
|
2271
|
-
this->priv_insert_ordered_range(UniqueBool(), index_capacity, first, limit, indexes, comp);
|
|
2272
|
-
first = limit;
|
|
2273
|
-
remaining -= index_capacity;
|
|
2289
|
+
else {
|
|
2290
|
+
if (!comp(*first2, *first1)) {
|
|
2291
|
+
++first1;
|
|
2274
2292
|
}
|
|
2293
|
+
++first2;
|
|
2275
2294
|
}
|
|
2276
2295
|
}
|
|
2277
|
-
else{
|
|
2278
|
-
this->insert(this->cend(), n, first, last);
|
|
2279
|
-
}
|
|
2280
2296
|
}
|
|
2281
2297
|
|
|
2282
|
-
template
|
|
2283
|
-
void
|
|
2284
|
-
(UniqueBool, size_type const n, BidirIt first, BidirIt const last, size_type positions[], Compare comp)
|
|
2298
|
+
template<class FwdIt, class Compare>
|
|
2299
|
+
BOOST_CONTAINER_FORCEINLINE void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0)
|
|
2285
2300
|
{
|
|
2286
|
-
|
|
2287
|
-
//Log: MlogN
|
|
2288
|
-
//Average
|
|
2289
|
-
//Linear: N + M - 2
|
|
2290
|
-
//Log: MlogN
|
|
2291
|
-
//N+M - 2
|
|
2292
|
-
//N
|
|
2293
|
-
//(N+M)/2 < MlogN
|
|
2294
|
-
//(N/M+1)/2 <= logN
|
|
2295
|
-
//bool const linear = !s || !n || (s <= n) || ((s+n)/n/2 < logN);
|
|
2296
|
-
size_type const s = this->size();
|
|
2297
|
-
size_type remaining = n;
|
|
2298
|
-
T* const pbeg = this->priv_raw_begin();
|
|
2299
|
-
T* const pend = pbeg + s;
|
|
2300
|
-
T* pcur = pbeg;
|
|
2301
|
-
size_type *position = positions;
|
|
2302
|
-
size_type added_in_middle = 0;
|
|
2303
|
-
if(first != last && pcur != pend){
|
|
2304
|
-
while(1){
|
|
2305
|
-
//maintain stability moving external values only if they are strictly less
|
|
2306
|
-
if(comp(*first, *pcur)) {
|
|
2307
|
-
*position = static_cast<size_type>(pcur - pbeg);
|
|
2308
|
-
BOOST_ASSERT((position == positions) || (*(position-1) == size_type(-1)) || (*(position-1) <= *position));
|
|
2309
|
-
++position;
|
|
2310
|
-
++added_in_middle;
|
|
2311
|
-
--remaining;
|
|
2312
|
-
if(++first == last) break;
|
|
2313
|
-
}
|
|
2314
|
-
else if(UniqueBool::value && !comp(*pcur, *first)){
|
|
2315
|
-
*position = size_type(-1);
|
|
2316
|
-
++position;
|
|
2317
|
-
--remaining;
|
|
2318
|
-
if(++first == last) break;
|
|
2319
|
-
}
|
|
2320
|
-
else{
|
|
2321
|
-
if(++pcur == pend) break;
|
|
2322
|
-
}
|
|
2323
|
-
}
|
|
2324
|
-
}
|
|
2325
|
-
this->insert_ordered_at(added_in_middle, position, first);
|
|
2326
|
-
this->insert(this->cend(), remaining, first, last);
|
|
2301
|
+
throw_bad_alloc();
|
|
2327
2302
|
}
|
|
2328
2303
|
|
|
2329
|
-
template<class
|
|
2330
|
-
void priv_merge_in_new_buffer
|
|
2331
|
-
(UniqueBool, FwdIt first, size_type n, Compare comp, pointer new_storage, size_type const new_cap)
|
|
2304
|
+
template<class FwdIt, class Compare, class Version>
|
|
2305
|
+
void priv_merge_in_new_buffer(FwdIt first, size_type n, Compare comp, Version)
|
|
2332
2306
|
{
|
|
2307
|
+
size_type const new_size = this->size() + n;
|
|
2308
|
+
size_type new_cap = new_size;
|
|
2309
|
+
pointer p = pointer();
|
|
2310
|
+
pointer const new_storage = this->m_holder.allocation_command(allocate_new, new_size, new_cap, p);
|
|
2311
|
+
|
|
2333
2312
|
BOOST_ASSERT((new_cap >= this->size() ) && (new_cap - this->size()) >= n);
|
|
2334
2313
|
allocator_type &a = this->m_holder.alloc();
|
|
2335
2314
|
typename value_traits::ArrayDeallocator new_buffer_deallocator(new_storage, a, new_cap);
|
|
@@ -2337,7 +2316,7 @@ class vector
|
|
|
2337
2316
|
T* pbeg = this->priv_raw_begin();
|
|
2338
2317
|
size_type const old_size = this->size();
|
|
2339
2318
|
T* const pend = pbeg + old_size;
|
|
2340
|
-
T* d_first =
|
|
2319
|
+
T* d_first = boost::movelib::to_raw_pointer(new_storage);
|
|
2341
2320
|
size_type added = n;
|
|
2342
2321
|
//Merge in new buffer loop
|
|
2343
2322
|
while(1){
|
|
@@ -2351,19 +2330,14 @@ class vector
|
|
|
2351
2330
|
}
|
|
2352
2331
|
//maintain stability moving external values only if they are strictly less
|
|
2353
2332
|
else if(comp(*first, *pbeg)) {
|
|
2354
|
-
allocator_traits_type::construct( this->m_holder.alloc(), d_first,
|
|
2333
|
+
allocator_traits_type::construct( this->m_holder.alloc(), d_first, *first );
|
|
2355
2334
|
new_values_destroyer.increment_size(1u);
|
|
2356
2335
|
++first;
|
|
2357
2336
|
--n;
|
|
2358
2337
|
++d_first;
|
|
2359
2338
|
}
|
|
2360
|
-
else if(UniqueBool::value && !comp(*pbeg, *first)){
|
|
2361
|
-
++first;
|
|
2362
|
-
--n;
|
|
2363
|
-
--added;
|
|
2364
|
-
}
|
|
2365
2339
|
else{
|
|
2366
|
-
allocator_traits_type::construct( this->m_holder.alloc(), d_first,
|
|
2340
|
+
allocator_traits_type::construct( this->m_holder.alloc(), d_first, boost::move(*pbeg) );
|
|
2367
2341
|
new_values_destroyer.increment_size(1u);
|
|
2368
2342
|
++pbeg;
|
|
2369
2343
|
++d_first;
|
|
@@ -2373,8 +2347,8 @@ class vector
|
|
|
2373
2347
|
//Nothrow operations
|
|
2374
2348
|
pointer const old_p = this->m_holder.start();
|
|
2375
2349
|
size_type const old_cap = this->m_holder.capacity();
|
|
2376
|
-
boost::container::destroy_alloc_n(a,
|
|
2377
|
-
|
|
2350
|
+
boost::container::destroy_alloc_n(a, boost::movelib::to_raw_pointer(old_p), old_size);
|
|
2351
|
+
this->m_holder.deallocate(old_p, old_cap);
|
|
2378
2352
|
this->m_holder.m_size = old_size + added;
|
|
2379
2353
|
this->m_holder.start(new_storage);
|
|
2380
2354
|
this->m_holder.capacity(new_cap);
|
|
@@ -2382,10 +2356,10 @@ class vector
|
|
|
2382
2356
|
new_values_destroyer.release();
|
|
2383
2357
|
}
|
|
2384
2358
|
|
|
2385
|
-
bool room_enough() const
|
|
2359
|
+
BOOST_CONTAINER_FORCEINLINE bool room_enough() const
|
|
2386
2360
|
{ return this->m_holder.m_size < this->m_holder.capacity(); }
|
|
2387
2361
|
|
|
2388
|
-
pointer back_ptr() const
|
|
2362
|
+
BOOST_CONTAINER_FORCEINLINE pointer back_ptr() const
|
|
2389
2363
|
{ return this->m_holder.start() + this->m_holder.m_size; }
|
|
2390
2364
|
|
|
2391
2365
|
size_type priv_index_of(pointer p) const
|
|
@@ -2397,10 +2371,10 @@ class vector
|
|
|
2397
2371
|
|
|
2398
2372
|
template<class OtherAllocator>
|
|
2399
2373
|
void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherAllocator> BOOST_RV_REF_END x
|
|
2400
|
-
, typename
|
|
2401
|
-
<
|
|
2374
|
+
, typename dtl::enable_if_c
|
|
2375
|
+
< dtl::is_version<OtherAllocator, 0>::value >::type * = 0)
|
|
2402
2376
|
{
|
|
2403
|
-
if(!
|
|
2377
|
+
if(!dtl::is_same<OtherAllocator, allocator_type>::value &&
|
|
2404
2378
|
this->capacity() < x.size()){
|
|
2405
2379
|
throw_bad_alloc();
|
|
2406
2380
|
}
|
|
@@ -2414,10 +2388,10 @@ class vector
|
|
|
2414
2388
|
|
|
2415
2389
|
template<class OtherAllocator>
|
|
2416
2390
|
void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherAllocator> BOOST_RV_REF_END x
|
|
2417
|
-
, typename
|
|
2391
|
+
, typename dtl::disable_if_or
|
|
2418
2392
|
< void
|
|
2419
|
-
,
|
|
2420
|
-
,
|
|
2393
|
+
, dtl::is_version<OtherAllocator, 0>
|
|
2394
|
+
, dtl::is_different<OtherAllocator, allocator_type>
|
|
2421
2395
|
>::type * = 0)
|
|
2422
2396
|
{
|
|
2423
2397
|
//for move assignment, no aliasing (&x != this) is assummed.
|
|
@@ -2439,25 +2413,25 @@ class vector
|
|
|
2439
2413
|
}
|
|
2440
2414
|
else if(is_propagable_from_x){
|
|
2441
2415
|
this->clear();
|
|
2442
|
-
this->m_holder.
|
|
2416
|
+
this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
|
|
2443
2417
|
this->m_holder.steal_resources(x.m_holder);
|
|
2444
2418
|
}
|
|
2445
2419
|
//Else do a one by one move
|
|
2446
2420
|
else{
|
|
2447
|
-
this->assign( boost::make_move_iterator(
|
|
2448
|
-
, boost::make_move_iterator(
|
|
2421
|
+
this->assign( boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.begin()))
|
|
2422
|
+
, boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.end() ))
|
|
2449
2423
|
);
|
|
2450
2424
|
}
|
|
2451
2425
|
//Move allocator if needed
|
|
2452
|
-
|
|
2426
|
+
dtl::move_alloc(this_alloc, x_alloc, dtl::bool_<propagate_alloc>());
|
|
2453
2427
|
}
|
|
2454
2428
|
|
|
2455
2429
|
template<class OtherAllocator>
|
|
2456
2430
|
void priv_copy_assign(const vector<T, OtherAllocator> &x
|
|
2457
|
-
, typename
|
|
2458
|
-
<
|
|
2431
|
+
, typename dtl::enable_if_c
|
|
2432
|
+
< dtl::is_version<OtherAllocator, 0>::value >::type * = 0)
|
|
2459
2433
|
{
|
|
2460
|
-
if(!
|
|
2434
|
+
if(!dtl::is_same<OtherAllocator, allocator_type>::value &&
|
|
2461
2435
|
this->capacity() < x.size()){
|
|
2462
2436
|
throw_bad_alloc();
|
|
2463
2437
|
}
|
|
@@ -2470,31 +2444,31 @@ class vector
|
|
|
2470
2444
|
}
|
|
2471
2445
|
|
|
2472
2446
|
template<class OtherAllocator>
|
|
2473
|
-
typename
|
|
2447
|
+
typename dtl::disable_if_or
|
|
2474
2448
|
< void
|
|
2475
|
-
,
|
|
2476
|
-
,
|
|
2449
|
+
, dtl::is_version<OtherAllocator, 0>
|
|
2450
|
+
, dtl::is_different<OtherAllocator, allocator_type>
|
|
2477
2451
|
>::type
|
|
2478
2452
|
priv_copy_assign(const vector<T, OtherAllocator> &x)
|
|
2479
2453
|
{
|
|
2480
2454
|
allocator_type &this_alloc = this->m_holder.alloc();
|
|
2481
2455
|
const allocator_type &x_alloc = x.m_holder.alloc();
|
|
2482
|
-
|
|
2456
|
+
dtl::bool_<allocator_traits_type::
|
|
2483
2457
|
propagate_on_container_copy_assignment::value> flag;
|
|
2484
2458
|
if(flag && this_alloc != x_alloc){
|
|
2485
2459
|
this->clear();
|
|
2486
2460
|
this->shrink_to_fit();
|
|
2487
2461
|
}
|
|
2488
|
-
|
|
2462
|
+
dtl::assign_alloc(this_alloc, x_alloc, flag);
|
|
2489
2463
|
this->assign( x.priv_raw_begin(), x.priv_raw_end() );
|
|
2490
2464
|
}
|
|
2491
2465
|
|
|
2492
2466
|
template<class Vector> //Template it to avoid it in explicit instantiations
|
|
2493
|
-
void priv_swap(Vector &x,
|
|
2467
|
+
void priv_swap(Vector &x, dtl::true_type) //version_0
|
|
2494
2468
|
{ this->m_holder.deep_swap(x.m_holder); }
|
|
2495
2469
|
|
|
2496
2470
|
template<class Vector> //Template it to avoid it in explicit instantiations
|
|
2497
|
-
void priv_swap(Vector &x,
|
|
2471
|
+
void priv_swap(Vector &x, dtl::false_type) //version_N
|
|
2498
2472
|
{
|
|
2499
2473
|
const bool propagate_alloc = allocator_traits_type::propagate_on_container_swap::value;
|
|
2500
2474
|
if(are_swap_propagable( this->get_stored_allocator(), this->m_holder.start()
|
|
@@ -2514,22 +2488,22 @@ class vector
|
|
|
2514
2488
|
}
|
|
2515
2489
|
//... and move-insert the remaining range
|
|
2516
2490
|
sml.insert( sml.cend()
|
|
2517
|
-
, boost::make_move_iterator(
|
|
2518
|
-
, boost::make_move_iterator(
|
|
2491
|
+
, boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.nth(common_elements)))
|
|
2492
|
+
, boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.end()))
|
|
2519
2493
|
);
|
|
2520
2494
|
//Destroy remaining elements
|
|
2521
2495
|
big.erase(big.nth(common_elements), big.cend());
|
|
2522
2496
|
}
|
|
2523
2497
|
//And now swap the allocator
|
|
2524
|
-
|
|
2498
|
+
dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
|
|
2525
2499
|
}
|
|
2526
2500
|
|
|
2527
2501
|
void priv_reserve_no_capacity(size_type, version_0)
|
|
2528
2502
|
{ throw_bad_alloc(); }
|
|
2529
2503
|
|
|
2530
|
-
|
|
2504
|
+
dtl::insert_range_proxy<Allocator, boost::move_iterator<T*>, T*> priv_dummy_empty_proxy()
|
|
2531
2505
|
{
|
|
2532
|
-
return
|
|
2506
|
+
return dtl::insert_range_proxy<Allocator, boost::move_iterator<T*>, T*>
|
|
2533
2507
|
(::boost::make_move_iterator((T *)0));
|
|
2534
2508
|
}
|
|
2535
2509
|
|
|
@@ -2537,10 +2511,10 @@ class vector
|
|
|
2537
2511
|
{
|
|
2538
2512
|
//There is not enough memory, allocate a new buffer
|
|
2539
2513
|
//Pass the hint so that allocators can take advantage of this.
|
|
2540
|
-
pointer const p =
|
|
2514
|
+
pointer const p = this->m_holder.allocate(new_cap);
|
|
2541
2515
|
//We will reuse insert code, so create a dummy input iterator
|
|
2542
2516
|
this->priv_forward_range_insert_new_allocation
|
|
2543
|
-
(
|
|
2517
|
+
( boost::movelib::to_raw_pointer(p), new_cap, this->priv_raw_end(), 0, this->priv_dummy_empty_proxy());
|
|
2544
2518
|
}
|
|
2545
2519
|
|
|
2546
2520
|
void priv_reserve_no_capacity(size_type new_cap, version_2)
|
|
@@ -2561,7 +2535,7 @@ class vector
|
|
|
2561
2535
|
this->m_holder.capacity(real_cap);
|
|
2562
2536
|
}
|
|
2563
2537
|
else{ //If there is no forward expansion, move objects, we will reuse insertion code
|
|
2564
|
-
T * const new_mem =
|
|
2538
|
+
T * const new_mem = boost::movelib::to_raw_pointer(ret);
|
|
2565
2539
|
T * const ins_pos = this->priv_raw_end();
|
|
2566
2540
|
if(reuse){ //Backwards (and possibly forward) expansion
|
|
2567
2541
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
@@ -2583,7 +2557,8 @@ class vector
|
|
|
2583
2557
|
void priv_destroy_last(const bool moved = false) BOOST_NOEXCEPT_OR_NOTHROW
|
|
2584
2558
|
{
|
|
2585
2559
|
(void)moved;
|
|
2586
|
-
|
|
2560
|
+
const bool skip_destructor = value_traits::trivial_dctr || (value_traits::trivial_dctr_after_move && moved);
|
|
2561
|
+
if(!skip_destructor){
|
|
2587
2562
|
value_type* const p = this->priv_raw_end() - 1;
|
|
2588
2563
|
allocator_traits_type::destroy(this->get_stored_allocator(), p);
|
|
2589
2564
|
}
|
|
@@ -2620,14 +2595,14 @@ class vector
|
|
|
2620
2595
|
{
|
|
2621
2596
|
BOOST_ASSERT(this->priv_in_range_or_end(p));
|
|
2622
2597
|
return this->priv_forward_range_insert
|
|
2623
|
-
( vector_iterator_get_ptr(p), 1,
|
|
2598
|
+
( vector_iterator_get_ptr(p), 1, dtl::get_insert_value_proxy<T*, Allocator>(::boost::forward<U>(x)));
|
|
2624
2599
|
}
|
|
2625
2600
|
|
|
2626
|
-
|
|
2627
|
-
{ return
|
|
2601
|
+
dtl::insert_copy_proxy<Allocator, T*> priv_single_insert_proxy(const T &x)
|
|
2602
|
+
{ return dtl::insert_copy_proxy<Allocator, T*> (x); }
|
|
2628
2603
|
|
|
2629
|
-
|
|
2630
|
-
{ return
|
|
2604
|
+
dtl::insert_move_proxy<Allocator, T*> priv_single_insert_proxy(BOOST_RV_REF(T) x)
|
|
2605
|
+
{ return dtl::insert_move_proxy<Allocator, T*> (x); }
|
|
2631
2606
|
|
|
2632
2607
|
template <class U>
|
|
2633
2608
|
void priv_push_back(BOOST_FWD_REF(U) u)
|
|
@@ -2645,14 +2620,14 @@ class vector
|
|
|
2645
2620
|
}
|
|
2646
2621
|
}
|
|
2647
2622
|
|
|
2648
|
-
|
|
2649
|
-
{ return
|
|
2623
|
+
BOOST_CONTAINER_FORCEINLINE dtl::insert_n_copies_proxy<Allocator, T*> priv_resize_proxy(const T &x)
|
|
2624
|
+
{ return dtl::insert_n_copies_proxy<Allocator, T*>(x); }
|
|
2650
2625
|
|
|
2651
|
-
|
|
2652
|
-
{ return
|
|
2626
|
+
BOOST_CONTAINER_FORCEINLINE dtl::insert_default_initialized_n_proxy<Allocator, T*> priv_resize_proxy(default_init_t)
|
|
2627
|
+
{ return dtl::insert_default_initialized_n_proxy<Allocator, T*>(); }
|
|
2653
2628
|
|
|
2654
|
-
|
|
2655
|
-
{ return
|
|
2629
|
+
BOOST_CONTAINER_FORCEINLINE dtl::insert_value_initialized_n_proxy<Allocator, T*> priv_resize_proxy(value_init_t)
|
|
2630
|
+
{ return dtl::insert_value_initialized_n_proxy<Allocator, T*>(); }
|
|
2656
2631
|
|
|
2657
2632
|
template <class U>
|
|
2658
2633
|
void priv_resize(size_type new_size, const U& u)
|
|
@@ -2668,7 +2643,7 @@ class vector
|
|
|
2668
2643
|
}
|
|
2669
2644
|
}
|
|
2670
2645
|
|
|
2671
|
-
void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
|
|
2646
|
+
BOOST_CONTAINER_FORCEINLINE void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
|
|
2672
2647
|
{}
|
|
2673
2648
|
|
|
2674
2649
|
void priv_shrink_to_fit(version_1)
|
|
@@ -2677,21 +2652,21 @@ class vector
|
|
|
2677
2652
|
if(cp){
|
|
2678
2653
|
const size_type sz = this->size();
|
|
2679
2654
|
if(!sz){
|
|
2680
|
-
this->m_holder.
|
|
2655
|
+
this->m_holder.deallocate(this->m_holder.m_start, cp);
|
|
2681
2656
|
this->m_holder.m_start = pointer();
|
|
2682
2657
|
this->m_holder.m_capacity = 0;
|
|
2683
2658
|
}
|
|
2684
2659
|
else if(sz < cp){
|
|
2685
2660
|
//Allocate a new buffer.
|
|
2686
2661
|
//Pass the hint so that allocators can take advantage of this.
|
|
2687
|
-
pointer const p =
|
|
2662
|
+
pointer const p = this->m_holder.allocate(sz);
|
|
2688
2663
|
|
|
2689
2664
|
//We will reuse insert code, so create a dummy input iterator
|
|
2690
2665
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
2691
2666
|
++this->num_alloc;
|
|
2692
2667
|
#endif
|
|
2693
2668
|
this->priv_forward_range_insert_new_allocation
|
|
2694
|
-
(
|
|
2669
|
+
( boost::movelib::to_raw_pointer(p), sz
|
|
2695
2670
|
, this->priv_raw_begin(), 0, this->priv_dummy_empty_proxy());
|
|
2696
2671
|
}
|
|
2697
2672
|
}
|
|
@@ -2703,7 +2678,7 @@ class vector
|
|
|
2703
2678
|
if(cp){
|
|
2704
2679
|
const size_type sz = this->size();
|
|
2705
2680
|
if(!sz){
|
|
2706
|
-
this->m_holder.
|
|
2681
|
+
this->m_holder.deallocate(this->m_holder.m_start, cp);
|
|
2707
2682
|
this->m_holder.m_start = pointer();
|
|
2708
2683
|
this->m_holder.m_capacity = 0;
|
|
2709
2684
|
}
|
|
@@ -2735,12 +2710,11 @@ class vector
|
|
|
2735
2710
|
{
|
|
2736
2711
|
//Check if we have enough memory or try to expand current memory
|
|
2737
2712
|
const size_type n_pos = pos - this->m_holder.start();
|
|
2738
|
-
T *const raw_pos =
|
|
2713
|
+
T *const raw_pos = boost::movelib::to_raw_pointer(pos);
|
|
2739
2714
|
|
|
2740
|
-
const size_type new_cap = this->m_holder.next_capacity(n);
|
|
2715
|
+
const size_type new_cap = this->m_holder.template next_capacity<growth_factor_type>(n);
|
|
2741
2716
|
//Pass the hint so that allocators can take advantage of this.
|
|
2742
|
-
T * const new_buf =
|
|
2743
|
-
(allocator_traits_type::allocate(this->m_holder.alloc(), new_cap, this->m_holder.m_start));
|
|
2717
|
+
T * const new_buf = boost::movelib::to_raw_pointer(this->m_holder.allocate(new_cap));
|
|
2744
2718
|
#ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
|
|
2745
2719
|
++this->num_alloc;
|
|
2746
2720
|
#endif
|
|
@@ -2754,12 +2728,12 @@ class vector
|
|
|
2754
2728
|
(const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy, version_2)
|
|
2755
2729
|
{
|
|
2756
2730
|
//Check if we have enough memory or try to expand current memory
|
|
2757
|
-
T *const raw_pos =
|
|
2731
|
+
T *const raw_pos = boost::movelib::to_raw_pointer(pos);
|
|
2758
2732
|
const size_type n_pos = raw_pos - this->priv_raw_begin();
|
|
2759
2733
|
|
|
2760
2734
|
//There is not enough memory, allocate a new
|
|
2761
2735
|
//buffer or expand the old one.
|
|
2762
|
-
size_type real_cap = this->m_holder.next_capacity(n);
|
|
2736
|
+
size_type real_cap = this->m_holder.template next_capacity<growth_factor_type>(n);
|
|
2763
2737
|
pointer reuse(this->m_holder.start());
|
|
2764
2738
|
pointer const ret (this->m_holder.allocation_command
|
|
2765
2739
|
(allocate_new | expand_fwd | expand_bwd, this->m_holder.m_size + n, real_cap, reuse));
|
|
@@ -2781,7 +2755,7 @@ class vector
|
|
|
2781
2755
|
++this->num_expand_bwd;
|
|
2782
2756
|
#endif
|
|
2783
2757
|
this->priv_forward_range_insert_expand_backwards
|
|
2784
|
-
(
|
|
2758
|
+
(boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
|
|
2785
2759
|
}
|
|
2786
2760
|
}
|
|
2787
2761
|
//New buffer
|
|
@@ -2790,7 +2764,7 @@ class vector
|
|
|
2790
2764
|
++this->num_alloc;
|
|
2791
2765
|
#endif
|
|
2792
2766
|
this->priv_forward_range_insert_new_allocation
|
|
2793
|
-
(
|
|
2767
|
+
( boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
|
|
2794
2768
|
}
|
|
2795
2769
|
|
|
2796
2770
|
return iterator(this->m_holder.start() + n_pos);
|
|
@@ -2810,7 +2784,7 @@ class vector
|
|
|
2810
2784
|
}
|
|
2811
2785
|
else{
|
|
2812
2786
|
//Expand forward
|
|
2813
|
-
T *const raw_pos =
|
|
2787
|
+
T *const raw_pos = boost::movelib::to_raw_pointer(pos);
|
|
2814
2788
|
const size_type n_pos = raw_pos - this->priv_raw_begin();
|
|
2815
2789
|
this->priv_forward_range_insert_expand_forward(raw_pos, n, insert_range_proxy);
|
|
2816
2790
|
return iterator(this->m_holder.start() + n_pos);
|
|
@@ -2833,7 +2807,7 @@ class vector
|
|
|
2833
2807
|
}
|
|
2834
2808
|
|
|
2835
2809
|
template <class InsertionProxy, class AllocVersion>
|
|
2836
|
-
iterator priv_forward_range_insert_at_end
|
|
2810
|
+
BOOST_CONTAINER_FORCEINLINE iterator priv_forward_range_insert_at_end
|
|
2837
2811
|
(const size_type n, const InsertionProxy insert_range_proxy, AllocVersion)
|
|
2838
2812
|
{
|
|
2839
2813
|
return this->priv_forward_range_insert(this->back_ptr(), n, insert_range_proxy);
|
|
@@ -2926,10 +2900,10 @@ class vector
|
|
|
2926
2900
|
}
|
|
2927
2901
|
|
|
2928
2902
|
private:
|
|
2929
|
-
T *priv_raw_begin() const
|
|
2930
|
-
{ return
|
|
2903
|
+
BOOST_CONTAINER_FORCEINLINE T *priv_raw_begin() const
|
|
2904
|
+
{ return boost::movelib::to_raw_pointer(m_holder.start()); }
|
|
2931
2905
|
|
|
2932
|
-
T* priv_raw_end() const
|
|
2906
|
+
BOOST_CONTAINER_FORCEINLINE T* priv_raw_end() const
|
|
2933
2907
|
{ return this->priv_raw_begin() + this->m_holder.m_size; }
|
|
2934
2908
|
|
|
2935
2909
|
template <class InsertionProxy>
|
|
@@ -3017,10 +2991,10 @@ class vector
|
|
|
3017
2991
|
//If there is allocated memory, destroy and deallocate
|
|
3018
2992
|
if(!value_traits::trivial_dctr_after_move)
|
|
3019
2993
|
boost::container::destroy_alloc_n(this->get_stored_allocator(), old_buffer, this->m_holder.m_size);
|
|
3020
|
-
this->m_holder.
|
|
2994
|
+
this->m_holder.deallocate(this->m_holder.start(), this->m_holder.capacity());
|
|
3021
2995
|
}
|
|
3022
2996
|
this->m_holder.start(new_start);
|
|
3023
|
-
this->m_holder.m_size = new_finish - new_start;
|
|
2997
|
+
this->m_holder.m_size = size_type(new_finish - new_start);
|
|
3024
2998
|
this->m_holder.capacity(new_cap);
|
|
3025
2999
|
//All construction successful, disable rollbacks
|
|
3026
3000
|
new_values_destroyer.release();
|
|
@@ -3356,12 +3330,12 @@ class vector
|
|
|
3356
3330
|
}
|
|
3357
3331
|
}
|
|
3358
3332
|
|
|
3359
|
-
bool priv_in_range(const_iterator pos) const
|
|
3333
|
+
BOOST_CONTAINER_FORCEINLINE bool priv_in_range(const_iterator pos) const
|
|
3360
3334
|
{
|
|
3361
3335
|
return (this->begin() <= pos) && (pos < this->end());
|
|
3362
3336
|
}
|
|
3363
3337
|
|
|
3364
|
-
bool priv_in_range_or_end(const_iterator pos) const
|
|
3338
|
+
BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
|
|
3365
3339
|
{
|
|
3366
3340
|
return (this->begin() <= pos) && (pos <= this->end());
|
|
3367
3341
|
}
|