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
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
#include <boost/container/detail/workaround.hpp>
|
|
26
26
|
|
|
27
27
|
#include <boost/container/allocator_traits.hpp>
|
|
28
|
-
#include <boost/
|
|
28
|
+
#include <boost/move/detail/to_raw_pointer.hpp>
|
|
29
29
|
#include <boost/container/detail/version_type.hpp>
|
|
30
30
|
|
|
31
31
|
namespace boost {
|
|
32
32
|
namespace container {
|
|
33
|
-
namespace
|
|
33
|
+
namespace dtl {
|
|
34
34
|
|
|
35
35
|
//!A deleter for scoped_ptr that deallocates the memory
|
|
36
36
|
//!allocated for an object using a STL allocator.
|
|
@@ -39,8 +39,8 @@ struct scoped_deallocator
|
|
|
39
39
|
{
|
|
40
40
|
typedef allocator_traits<Allocator> allocator_traits_type;
|
|
41
41
|
typedef typename allocator_traits_type::pointer pointer;
|
|
42
|
-
typedef
|
|
43
|
-
boost::container::
|
|
42
|
+
typedef dtl::integral_constant<unsigned,
|
|
43
|
+
boost::container::dtl::
|
|
44
44
|
version<Allocator>::value> alloc_version;
|
|
45
45
|
|
|
46
46
|
private:
|
|
@@ -142,8 +142,8 @@ struct scoped_destroy_deallocator
|
|
|
142
142
|
typedef boost::container::allocator_traits<Allocator> AllocTraits;
|
|
143
143
|
typedef typename AllocTraits::pointer pointer;
|
|
144
144
|
typedef typename AllocTraits::size_type size_type;
|
|
145
|
-
typedef
|
|
146
|
-
boost::container::
|
|
145
|
+
typedef dtl::integral_constant<unsigned,
|
|
146
|
+
boost::container::dtl::
|
|
147
147
|
version<Allocator>::value> alloc_version;
|
|
148
148
|
|
|
149
149
|
scoped_destroy_deallocator(pointer p, Allocator& a)
|
|
@@ -152,7 +152,7 @@ struct scoped_destroy_deallocator
|
|
|
152
152
|
~scoped_destroy_deallocator()
|
|
153
153
|
{
|
|
154
154
|
if(m_ptr){
|
|
155
|
-
AllocTraits::destroy(m_alloc,
|
|
155
|
+
AllocTraits::destroy(m_alloc, boost::movelib::to_raw_pointer(m_ptr));
|
|
156
156
|
priv_deallocate(m_ptr, alloc_version());
|
|
157
157
|
}
|
|
158
158
|
}
|
|
@@ -202,7 +202,7 @@ struct scoped_destructor_n
|
|
|
202
202
|
~scoped_destructor_n()
|
|
203
203
|
{
|
|
204
204
|
if(!m_p) return;
|
|
205
|
-
value_type *raw_ptr =
|
|
205
|
+
value_type *raw_ptr = boost::movelib::to_raw_pointer(m_p);
|
|
206
206
|
while(m_n--){
|
|
207
207
|
AllocTraits::destroy(m_a, raw_ptr++);
|
|
208
208
|
}
|
|
@@ -270,12 +270,12 @@ class scoped_destructor
|
|
|
270
270
|
};
|
|
271
271
|
|
|
272
272
|
|
|
273
|
-
template<class Allocator>
|
|
273
|
+
template<class Allocator, class Value = typename Allocator::value_type>
|
|
274
274
|
class value_destructor
|
|
275
275
|
{
|
|
276
276
|
typedef boost::container::allocator_traits<Allocator> AllocTraits;
|
|
277
277
|
public:
|
|
278
|
-
typedef
|
|
278
|
+
typedef Value value_type;
|
|
279
279
|
value_destructor(Allocator &a, value_type &rv)
|
|
280
280
|
: rv_(rv), a_(a)
|
|
281
281
|
{}
|
|
@@ -296,8 +296,8 @@ class allocator_destroyer
|
|
|
296
296
|
typedef boost::container::allocator_traits<Allocator> AllocTraits;
|
|
297
297
|
typedef typename AllocTraits::value_type value_type;
|
|
298
298
|
typedef typename AllocTraits::pointer pointer;
|
|
299
|
-
typedef
|
|
300
|
-
boost::container::
|
|
299
|
+
typedef dtl::integral_constant<unsigned,
|
|
300
|
+
boost::container::dtl::
|
|
301
301
|
version<Allocator>::value> alloc_version;
|
|
302
302
|
|
|
303
303
|
private:
|
|
@@ -317,7 +317,7 @@ class allocator_destroyer
|
|
|
317
317
|
|
|
318
318
|
void operator()(const pointer &p)
|
|
319
319
|
{
|
|
320
|
-
AllocTraits::destroy(a_,
|
|
320
|
+
AllocTraits::destroy(a_, boost::movelib::to_raw_pointer(p));
|
|
321
321
|
this->priv_deallocate(p, alloc_version());
|
|
322
322
|
}
|
|
323
323
|
};
|
|
@@ -339,7 +339,7 @@ class allocator_destroyer_and_chain_builder
|
|
|
339
339
|
|
|
340
340
|
void operator()(const typename Allocator::pointer &p)
|
|
341
341
|
{
|
|
342
|
-
allocator_traits<Allocator>::destroy(a_,
|
|
342
|
+
allocator_traits<Allocator>::destroy(a_, boost::movelib::to_raw_pointer(p));
|
|
343
343
|
c_.push_back(p);
|
|
344
344
|
}
|
|
345
345
|
};
|
|
@@ -369,7 +369,7 @@ class allocator_multialloc_chain_node_deallocator
|
|
|
369
369
|
}
|
|
370
370
|
};
|
|
371
371
|
|
|
372
|
-
} //namespace
|
|
372
|
+
} //namespace dtl {
|
|
373
373
|
} //namespace container {
|
|
374
374
|
} //namespace boost {
|
|
375
375
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
namespace boost { namespace container {
|
|
37
37
|
|
|
38
|
-
namespace
|
|
38
|
+
namespace dtl {
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
// Check if we can detect is_convertible using advanced SFINAE expressions
|
|
@@ -110,10 +110,10 @@ template < typename ConstructAlloc
|
|
|
110
110
|
, typename T
|
|
111
111
|
, class ...Args
|
|
112
112
|
>
|
|
113
|
-
inline typename
|
|
113
|
+
inline typename dtl::enable_if_and
|
|
114
114
|
< void
|
|
115
|
-
,
|
|
116
|
-
,
|
|
115
|
+
, dtl::is_not_pair<T>
|
|
116
|
+
, dtl::not_< uses_allocator<T, ArgAlloc> >
|
|
117
117
|
>::type dispatch_uses_allocator
|
|
118
118
|
( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p, BOOST_FWD_REF(Args)...args)
|
|
119
119
|
{
|
|
@@ -127,9 +127,9 @@ template < typename ConstructAlloc
|
|
|
127
127
|
, typename T
|
|
128
128
|
, class ...Args
|
|
129
129
|
>
|
|
130
|
-
inline typename
|
|
130
|
+
inline typename dtl::enable_if_and
|
|
131
131
|
< void
|
|
132
|
-
,
|
|
132
|
+
, dtl::is_not_pair<T>
|
|
133
133
|
, uses_allocator<T, ArgAlloc>
|
|
134
134
|
, is_constructible_with_allocator_prefix<T, ArgAlloc, Args...>
|
|
135
135
|
>::type dispatch_uses_allocator
|
|
@@ -146,11 +146,11 @@ template < typename ConstructAlloc
|
|
|
146
146
|
, typename T
|
|
147
147
|
, class ...Args
|
|
148
148
|
>
|
|
149
|
-
inline typename
|
|
149
|
+
inline typename dtl::enable_if_and
|
|
150
150
|
< void
|
|
151
|
-
,
|
|
151
|
+
, dtl::is_not_pair<T>
|
|
152
152
|
, uses_allocator<T, ArgAlloc>
|
|
153
|
-
,
|
|
153
|
+
, dtl::not_<is_constructible_with_allocator_prefix<T, ArgAlloc, Args...> >
|
|
154
154
|
>::type dispatch_uses_allocator
|
|
155
155
|
( ConstructAlloc& construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p, BOOST_FWD_REF(Args)...args)
|
|
156
156
|
{
|
|
@@ -162,10 +162,10 @@ inline typename container_detail::enable_if_and
|
|
|
162
162
|
|
|
163
163
|
#define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
|
|
164
164
|
template <typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
|
|
165
|
-
inline typename
|
|
165
|
+
inline typename dtl::enable_if_and\
|
|
166
166
|
< void\
|
|
167
|
-
,
|
|
168
|
-
,
|
|
167
|
+
, dtl::is_not_pair<T>\
|
|
168
|
+
, dtl::not_<uses_allocator<T, ArgAlloc> >\
|
|
169
169
|
>::type\
|
|
170
170
|
dispatch_uses_allocator\
|
|
171
171
|
(ConstructAlloc &construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
@@ -179,9 +179,9 @@ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR
|
|
|
179
179
|
|
|
180
180
|
#define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
|
|
181
181
|
template < typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
|
|
182
|
-
inline typename
|
|
182
|
+
inline typename dtl::enable_if_and\
|
|
183
183
|
< void\
|
|
184
|
-
,
|
|
184
|
+
, dtl::is_not_pair<T>\
|
|
185
185
|
, uses_allocator<T, ArgAlloc>\
|
|
186
186
|
, is_constructible_with_allocator_prefix<T, ArgAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
|
|
187
187
|
>::type\
|
|
@@ -197,11 +197,11 @@ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR
|
|
|
197
197
|
|
|
198
198
|
#define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
|
|
199
199
|
template < typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
|
|
200
|
-
inline typename
|
|
200
|
+
inline typename dtl::enable_if_and\
|
|
201
201
|
< void\
|
|
202
|
-
,
|
|
202
|
+
, dtl::is_not_pair<T>\
|
|
203
203
|
, uses_allocator<T, ArgAlloc>\
|
|
204
|
-
,
|
|
204
|
+
, dtl::not_<is_constructible_with_allocator_prefix<T, ArgAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N> >\
|
|
205
205
|
>::type\
|
|
206
206
|
dispatch_uses_allocator\
|
|
207
207
|
(ConstructAlloc& construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
@@ -219,18 +219,18 @@ template < typename ConstructAlloc
|
|
|
219
219
|
, typename ArgAlloc
|
|
220
220
|
, typename Pair
|
|
221
221
|
> inline
|
|
222
|
-
BOOST_CONTAINER_DOC1ST(void, typename
|
|
222
|
+
BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if<dtl::is_pair<Pair> >::type)
|
|
223
223
|
dispatch_uses_allocator
|
|
224
224
|
( ConstructAlloc & construct_alloc
|
|
225
225
|
, BOOST_FWD_REF(ArgAlloc) arg_alloc
|
|
226
226
|
, Pair* p)
|
|
227
227
|
{
|
|
228
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
228
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->first));
|
|
229
229
|
BOOST_TRY{
|
|
230
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
230
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->second));
|
|
231
231
|
}
|
|
232
232
|
BOOST_CATCH(...) {
|
|
233
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
233
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(p->first));
|
|
234
234
|
BOOST_RETHROW
|
|
235
235
|
}
|
|
236
236
|
BOOST_CATCH_END
|
|
@@ -240,18 +240,18 @@ BOOST_CONTAINER_DOC1ST(void, typename container_detail::enable_if<container_deta
|
|
|
240
240
|
template < typename ConstructAlloc
|
|
241
241
|
, typename ArgAlloc
|
|
242
242
|
, class Pair, class U, class V>
|
|
243
|
-
BOOST_CONTAINER_DOC1ST(void, typename
|
|
243
|
+
BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if<dtl::is_pair<Pair> >::type)
|
|
244
244
|
dispatch_uses_allocator
|
|
245
245
|
( ConstructAlloc & construct_alloc
|
|
246
246
|
, BOOST_FWD_REF(ArgAlloc) arg_alloc
|
|
247
247
|
, Pair* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y)
|
|
248
248
|
{
|
|
249
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
249
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->first), ::boost::forward<U>(x));
|
|
250
250
|
BOOST_TRY{
|
|
251
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
251
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->second), ::boost::forward<V>(y));
|
|
252
252
|
}
|
|
253
253
|
BOOST_CATCH(...){
|
|
254
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
254
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(p->first));
|
|
255
255
|
BOOST_RETHROW
|
|
256
256
|
}
|
|
257
257
|
BOOST_CATCH_END
|
|
@@ -260,7 +260,7 @@ BOOST_CONTAINER_DOC1ST(void, typename container_detail::enable_if<container_deta
|
|
|
260
260
|
template < typename ConstructAlloc
|
|
261
261
|
, typename ArgAlloc
|
|
262
262
|
, class Pair, class Pair2>
|
|
263
|
-
BOOST_CONTAINER_DOC1ST(void, typename
|
|
263
|
+
BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if< dtl::is_pair<Pair> >::type)
|
|
264
264
|
dispatch_uses_allocator
|
|
265
265
|
(ConstructAlloc & construct_alloc
|
|
266
266
|
, BOOST_FWD_REF(ArgAlloc) arg_alloc
|
|
@@ -270,10 +270,10 @@ BOOST_CONTAINER_DOC1ST(void, typename container_detail::enable_if< container_det
|
|
|
270
270
|
template < typename ConstructAlloc
|
|
271
271
|
, typename ArgAlloc
|
|
272
272
|
, class Pair, class Pair2>
|
|
273
|
-
typename
|
|
273
|
+
typename dtl::enable_if_and
|
|
274
274
|
< void
|
|
275
|
-
,
|
|
276
|
-
,
|
|
275
|
+
, dtl::is_pair<Pair>
|
|
276
|
+
, dtl::not_<boost::move_detail::is_reference<Pair2> > >::type //This is needed for MSVC10 and ambiguous overloads
|
|
277
277
|
dispatch_uses_allocator
|
|
278
278
|
(ConstructAlloc & construct_alloc
|
|
279
279
|
, BOOST_FWD_REF(ArgAlloc) arg_alloc
|
|
@@ -286,20 +286,20 @@ typename container_detail::enable_if_and
|
|
|
286
286
|
template< typename ConstructAlloc, typename ArgAlloc, class Pair \
|
|
287
287
|
, template<class, class, class, class, class, class, class, class, class, class> class BoostTuple \
|
|
288
288
|
BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
|
|
289
|
-
typename
|
|
289
|
+
typename dtl::enable_if< dtl::is_pair<Pair> >::type\
|
|
290
290
|
dispatch_uses_allocator( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t\
|
|
291
291
|
, BoostTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,N),::boost::tuples::null_type)> p\
|
|
292
292
|
, BoostTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::boost::tuples::null_type)> q)\
|
|
293
293
|
{\
|
|
294
294
|
(void)p; (void)q;\
|
|
295
295
|
(dispatch_uses_allocator)\
|
|
296
|
-
(construct_alloc, arg_alloc,
|
|
296
|
+
(construct_alloc, arg_alloc, dtl::addressof(pair->first) BOOST_MOVE_I_IF(N) BOOST_MOVE_TMPL_GET##N);\
|
|
297
297
|
BOOST_TRY{\
|
|
298
298
|
(dispatch_uses_allocator)\
|
|
299
|
-
(construct_alloc, arg_alloc,
|
|
299
|
+
(construct_alloc, arg_alloc, dtl::addressof(pair->second) BOOST_MOVE_I_IF(M) BOOST_MOVE_TMPL_GETQ##M);\
|
|
300
300
|
}\
|
|
301
301
|
BOOST_CATCH(...) {\
|
|
302
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
302
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(pair->first));\
|
|
303
303
|
BOOST_RETHROW\
|
|
304
304
|
}\
|
|
305
305
|
BOOST_CATCH_END\
|
|
@@ -317,12 +317,12 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
|
|
|
317
317
|
, Tuple<Args1...>& t1, Tuple<Args2...>& t2, index_tuple<Indexes1...>, index_tuple<Indexes2...>)
|
|
318
318
|
{
|
|
319
319
|
(void)t1; (void)t2;
|
|
320
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
320
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(pair->first), ::boost::forward<Args1>(get<Indexes1>(t1))...);
|
|
321
321
|
BOOST_TRY{
|
|
322
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
322
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(pair->second), ::boost::forward<Args2>(get<Indexes2>(t2))...);
|
|
323
323
|
}
|
|
324
324
|
BOOST_CATCH(...){
|
|
325
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
325
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(pair->first));
|
|
326
326
|
BOOST_RETHROW
|
|
327
327
|
}
|
|
328
328
|
BOOST_CATCH_END
|
|
@@ -330,7 +330,7 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
|
|
|
330
330
|
|
|
331
331
|
template< typename ConstructAlloc, typename ArgAlloc, class Pair
|
|
332
332
|
, template<class ...> class Tuple, class... Args1, class... Args2>
|
|
333
|
-
typename
|
|
333
|
+
typename dtl::enable_if< dtl::is_pair<Pair> >::type
|
|
334
334
|
dispatch_uses_allocator( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t
|
|
335
335
|
, Tuple<Args1...> t1, Tuple<Args2...> t2)
|
|
336
336
|
{
|
|
@@ -346,20 +346,20 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
|
|
|
346
346
|
template< typename ConstructAlloc, typename ArgAlloc, class Pair\
|
|
347
347
|
, template<class, class, class, class, class, class, class, class, class, class> class StdTuple\
|
|
348
348
|
BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
|
|
349
|
-
typename
|
|
349
|
+
typename dtl::enable_if< dtl::is_pair<Pair> >::type\
|
|
350
350
|
dispatch_uses_allocator(ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t\
|
|
351
351
|
, StdTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,N),::std::tr1::_Nil)> p\
|
|
352
352
|
, StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::std::tr1::_Nil)> q)\
|
|
353
353
|
{\
|
|
354
354
|
(void)p; (void)q;\
|
|
355
355
|
(dispatch_uses_allocator)\
|
|
356
|
-
(construct_alloc, arg_alloc,
|
|
356
|
+
(construct_alloc, arg_alloc, dtl::addressof(pair->first) BOOST_MOVE_I_IF(N) BOOST_MOVE_GET_IDX##N);\
|
|
357
357
|
BOOST_TRY{\
|
|
358
358
|
(dispatch_uses_allocator)\
|
|
359
|
-
(construct_alloc, arg_alloc,
|
|
359
|
+
(construct_alloc, arg_alloc, dtl::addressof(pair->second) BOOST_MOVE_I_IF(M) BOOST_MOVE_GET_IDXQ##M);\
|
|
360
360
|
}\
|
|
361
361
|
BOOST_CATCH(...) {\
|
|
362
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
362
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(pair->first));\
|
|
363
363
|
BOOST_RETHROW\
|
|
364
364
|
}\
|
|
365
365
|
BOOST_CATCH_END\
|
|
@@ -380,7 +380,7 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
|
|
|
380
380
|
template< typename ConstructAlloc, typename ArgAlloc, class Pair\
|
|
381
381
|
, template<BOOST_MOVE_REPEAT(_VARIADIC_MAX, class), class, class, class> class StdTuple \
|
|
382
382
|
BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
|
|
383
|
-
typename
|
|
383
|
+
typename dtl::enable_if< dtl::is_pair<Pair> >::type\
|
|
384
384
|
dispatch_uses_allocator\
|
|
385
385
|
( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t\
|
|
386
386
|
, StdTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(BOOST_MOVE_ADD(_VARIADIC_MAX, 3),N),::std::_Nil) > p\
|
|
@@ -388,13 +388,13 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
|
|
|
388
388
|
{\
|
|
389
389
|
(void)p; (void)q;\
|
|
390
390
|
(dispatch_uses_allocator)\
|
|
391
|
-
(construct_alloc, arg_alloc,
|
|
391
|
+
(construct_alloc, arg_alloc, dtl::addressof(pair->first) BOOST_MOVE_I_IF(N) BOOST_MOVE_GET_IDX##N);\
|
|
392
392
|
BOOST_TRY{\
|
|
393
393
|
(dispatch_uses_allocator)\
|
|
394
|
-
(construct_alloc, arg_alloc,
|
|
394
|
+
(construct_alloc, arg_alloc, dtl::addressof(pair->second) BOOST_MOVE_I_IF(M) BOOST_MOVE_GET_IDXQ##M);\
|
|
395
395
|
}\
|
|
396
396
|
BOOST_CATCH(...) {\
|
|
397
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
397
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(pair->first));\
|
|
398
398
|
BOOST_RETHROW\
|
|
399
399
|
}\
|
|
400
400
|
BOOST_CATCH_END\
|
|
@@ -411,16 +411,16 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
|
|
|
411
411
|
template < typename ConstructAlloc
|
|
412
412
|
, typename ArgAlloc
|
|
413
413
|
, class Pair, class KeyType, class ... Args>
|
|
414
|
-
typename
|
|
414
|
+
typename dtl::enable_if< dtl::is_pair<Pair>, void >::type
|
|
415
415
|
dispatch_uses_allocator
|
|
416
416
|
(ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* p, try_emplace_t, BOOST_FWD_REF(KeyType) k, BOOST_FWD_REF(Args) ...args)
|
|
417
417
|
{
|
|
418
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
418
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->first), ::boost::forward<KeyType>(k));
|
|
419
419
|
BOOST_TRY{
|
|
420
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
420
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->second), ::boost::forward<Args>(args)...);
|
|
421
421
|
}
|
|
422
422
|
BOOST_CATCH(...) {
|
|
423
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
423
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(p->first));
|
|
424
424
|
BOOST_RETHROW
|
|
425
425
|
}
|
|
426
426
|
BOOST_CATCH_END
|
|
@@ -430,18 +430,18 @@ typename container_detail::enable_if< container_detail::is_pair<Pair>, void >::t
|
|
|
430
430
|
|
|
431
431
|
#define BOOST_CONTAINER_DISPATCH_USES_ALLOCATOR_PAIR_TRY_EMPLACE_CODE(N) \
|
|
432
432
|
template <typename ConstructAlloc, typename ArgAlloc, class Pair, class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
|
|
433
|
-
inline typename
|
|
434
|
-
<
|
|
433
|
+
inline typename dtl::enable_if\
|
|
434
|
+
< dtl::is_pair<Pair>, void >::type\
|
|
435
435
|
dispatch_uses_allocator\
|
|
436
436
|
(ConstructAlloc &construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* p, try_emplace_t, \
|
|
437
437
|
BOOST_FWD_REF(KeyType) k BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
438
438
|
{\
|
|
439
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
439
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->first), ::boost::forward<KeyType>(k));\
|
|
440
440
|
BOOST_TRY{\
|
|
441
|
-
(dispatch_uses_allocator)(construct_alloc, arg_alloc,
|
|
441
|
+
(dispatch_uses_allocator)(construct_alloc, arg_alloc, dtl::addressof(p->second) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
442
442
|
}\
|
|
443
443
|
BOOST_CATCH(...) {\
|
|
444
|
-
allocator_traits<ConstructAlloc>::destroy(construct_alloc,
|
|
444
|
+
allocator_traits<ConstructAlloc>::destroy(construct_alloc, dtl::addressof(p->first));\
|
|
445
445
|
BOOST_RETHROW\
|
|
446
446
|
}\
|
|
447
447
|
BOOST_CATCH_END\
|
|
@@ -452,7 +452,7 @@ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DISPATCH_USES_ALLOCATOR_PAIR_TRY_EMPLACE
|
|
|
452
452
|
|
|
453
453
|
#endif //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
454
454
|
|
|
455
|
-
} //namespace
|
|
455
|
+
} //namespace dtl
|
|
456
456
|
|
|
457
457
|
}} // namespace boost { namespace container {
|
|
458
458
|
|
|
@@ -28,29 +28,375 @@
|
|
|
28
28
|
|
|
29
29
|
#include <boost/container/detail/pair.hpp>
|
|
30
30
|
#include <boost/container/vector.hpp>
|
|
31
|
+
#include <boost/container/allocator_traits.hpp>
|
|
32
|
+
|
|
31
33
|
#include <boost/container/detail/value_init.hpp>
|
|
32
34
|
#include <boost/container/detail/destroyers.hpp>
|
|
33
35
|
#include <boost/container/detail/algorithm.hpp> //algo_equal(), algo_lexicographical_compare
|
|
34
36
|
#include <boost/container/detail/iterator.hpp>
|
|
35
37
|
#include <boost/container/detail/is_sorted.hpp>
|
|
36
|
-
#include <boost/container/allocator_traits.hpp>
|
|
37
|
-
#ifdef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
38
|
-
#include <boost/intrusive/pointer_traits.hpp>
|
|
39
|
-
#endif
|
|
40
38
|
#include <boost/container/detail/type_traits.hpp>
|
|
41
39
|
#include <boost/container/detail/iterators.hpp>
|
|
40
|
+
#include <boost/container/detail/mpl.hpp>
|
|
41
|
+
#include <boost/container/detail/is_contiguous_container.hpp>
|
|
42
|
+
#include <boost/container/detail/is_container.hpp>
|
|
43
|
+
|
|
44
|
+
#include <boost/intrusive/detail/minimal_pair_header.hpp> //pair
|
|
45
|
+
|
|
42
46
|
#include <boost/move/make_unique.hpp>
|
|
47
|
+
#include <boost/move/iterator.hpp>
|
|
43
48
|
#include <boost/move/adl_move_swap.hpp>
|
|
49
|
+
#include <boost/move/algo/adaptive_sort.hpp>
|
|
50
|
+
#include <boost/move/algo/detail/pdqsort.hpp>
|
|
51
|
+
|
|
44
52
|
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
45
53
|
#include <boost/move/detail/fwd_macros.hpp>
|
|
46
54
|
#endif
|
|
47
55
|
|
|
48
|
-
#
|
|
49
|
-
|
|
56
|
+
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
57
|
+
|
|
58
|
+
//merge_unique
|
|
59
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME merge_unique
|
|
60
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace dtl {
|
|
61
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}}
|
|
62
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 3
|
|
63
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 3
|
|
64
|
+
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
|
65
|
+
|
|
66
|
+
//merge_equal
|
|
67
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME merge
|
|
68
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace dtl {
|
|
69
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}}
|
|
70
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 3
|
|
71
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 3
|
|
72
|
+
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
|
73
|
+
|
|
74
|
+
//index_of
|
|
75
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME index_of
|
|
76
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace dtl {
|
|
77
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}}
|
|
78
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 1
|
|
79
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 1
|
|
80
|
+
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
|
81
|
+
|
|
82
|
+
//nth
|
|
83
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME nth
|
|
84
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace dtl {
|
|
85
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}}
|
|
86
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 1
|
|
87
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 1
|
|
88
|
+
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
|
89
|
+
|
|
90
|
+
//reserve
|
|
91
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME reserve
|
|
92
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace dtl {
|
|
93
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}}
|
|
94
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 1
|
|
95
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 1
|
|
96
|
+
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
|
97
|
+
|
|
98
|
+
//capacity
|
|
99
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME capacity
|
|
100
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace dtl {
|
|
101
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}}
|
|
102
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 0
|
|
103
|
+
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 0
|
|
104
|
+
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
|
105
|
+
|
|
106
|
+
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
|
50
107
|
|
|
51
108
|
namespace boost {
|
|
52
109
|
namespace container {
|
|
53
|
-
namespace
|
|
110
|
+
namespace dtl {
|
|
111
|
+
|
|
112
|
+
///////////////////////////////////////
|
|
113
|
+
//
|
|
114
|
+
// Helper functions to merge elements
|
|
115
|
+
//
|
|
116
|
+
///////////////////////////////////////
|
|
117
|
+
|
|
118
|
+
BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(stored_allocator_type)
|
|
119
|
+
|
|
120
|
+
///////////////////////////////////////
|
|
121
|
+
//
|
|
122
|
+
// flat_tree_container_inplace_merge
|
|
123
|
+
//
|
|
124
|
+
///////////////////////////////////////
|
|
125
|
+
template<class SequenceContainer, class Compare>
|
|
126
|
+
void flat_tree_container_inplace_merge //is_contiguous_container == true
|
|
127
|
+
(SequenceContainer& dest, typename SequenceContainer::iterator it, Compare comp , dtl::true_)
|
|
128
|
+
{
|
|
129
|
+
typedef typename SequenceContainer::value_type value_type;
|
|
130
|
+
value_type *const braw = boost::movelib::iterator_to_raw_pointer(dest.begin());
|
|
131
|
+
value_type *const iraw = boost::movelib::iterator_to_raw_pointer(it);
|
|
132
|
+
value_type *const eraw = boost::movelib::iterator_to_raw_pointer(dest.end());
|
|
133
|
+
boost::movelib::adaptive_merge(braw, iraw, eraw, comp, eraw, dest.capacity()- dest.size());
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
template<class SequenceContainer, class Compare>
|
|
137
|
+
void flat_tree_container_inplace_merge //is_contiguous_container == false
|
|
138
|
+
(SequenceContainer& dest, typename SequenceContainer::iterator it, Compare comp, dtl::false_)
|
|
139
|
+
{
|
|
140
|
+
boost::movelib::adaptive_merge(dest.begin(), it, dest.end(), comp);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
///////////////////////////////////////
|
|
144
|
+
//
|
|
145
|
+
// flat_tree_container_inplace_sort_ending
|
|
146
|
+
//
|
|
147
|
+
///////////////////////////////////////
|
|
148
|
+
template<class SequenceContainer, class Compare>
|
|
149
|
+
void flat_tree_container_inplace_sort_ending //is_contiguous_container == true
|
|
150
|
+
(SequenceContainer& dest, typename SequenceContainer::iterator it, Compare comp, dtl::true_)
|
|
151
|
+
{
|
|
152
|
+
typedef typename SequenceContainer::value_type value_type;
|
|
153
|
+
value_type *const iraw = boost::movelib::iterator_to_raw_pointer(it);
|
|
154
|
+
value_type *const eraw = boost::movelib::iterator_to_raw_pointer(dest.end());
|
|
155
|
+
boost::movelib::adaptive_sort(iraw, eraw, comp, eraw, dest.capacity()- dest.size());
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
template<class SequenceContainer, class Compare>
|
|
159
|
+
void flat_tree_container_inplace_sort_ending //is_contiguous_container == false
|
|
160
|
+
(SequenceContainer& dest, typename SequenceContainer::iterator it, Compare comp , dtl::false_)
|
|
161
|
+
{
|
|
162
|
+
boost::movelib::adaptive_sort(it, dest.end(), comp);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
///////////////////////////////////////
|
|
166
|
+
//
|
|
167
|
+
// flat_tree_merge
|
|
168
|
+
//
|
|
169
|
+
///////////////////////////////////////
|
|
170
|
+
template<class SequenceContainer, class Iterator, class Compare>
|
|
171
|
+
BOOST_CONTAINER_FORCEINLINE void flat_tree_merge_equal
|
|
172
|
+
(SequenceContainer& dest, Iterator first, Iterator last, Compare comp, dtl::true_)
|
|
173
|
+
{
|
|
174
|
+
dest.merge(first, last, comp);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
template<class SequenceContainer, class Iterator, class Compare>
|
|
178
|
+
BOOST_CONTAINER_FORCEINLINE void flat_tree_merge_equal //has_merge_unique == false
|
|
179
|
+
(SequenceContainer& dest, Iterator first, Iterator last, Compare comp, dtl::false_)
|
|
180
|
+
{
|
|
181
|
+
typedef typename SequenceContainer::iterator iterator;
|
|
182
|
+
iterator const it = dest.insert( dest.end(), first, last );
|
|
183
|
+
dtl::bool_<is_contiguous_container<SequenceContainer>::value> contiguous_tag;
|
|
184
|
+
(flat_tree_container_inplace_merge)(dest, it, comp, contiguous_tag);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
///////////////////////////////////////
|
|
188
|
+
//
|
|
189
|
+
// flat_tree_merge_unique
|
|
190
|
+
//
|
|
191
|
+
///////////////////////////////////////
|
|
192
|
+
template<class SequenceContainer, class Iterator, class Compare>
|
|
193
|
+
BOOST_CONTAINER_FORCEINLINE void flat_tree_merge_unique //has_merge_unique == true
|
|
194
|
+
(SequenceContainer& dest, Iterator first, Iterator last, Compare comp, dtl::true_)
|
|
195
|
+
{
|
|
196
|
+
dest.merge_unique(first, last, comp);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
template<class SequenceContainer, class Iterator, class Compare>
|
|
200
|
+
BOOST_CONTAINER_FORCEINLINE void flat_tree_merge_unique //has_merge_unique == false
|
|
201
|
+
(SequenceContainer& dest, Iterator first, Iterator last, Compare comp, dtl::false_)
|
|
202
|
+
{
|
|
203
|
+
typedef typename SequenceContainer::iterator iterator;
|
|
204
|
+
typedef typename SequenceContainer::size_type size_type;
|
|
205
|
+
|
|
206
|
+
size_type const old_sz = dest.size();
|
|
207
|
+
iterator const first_new = dest.insert(dest.cend(), first, last );
|
|
208
|
+
iterator e = boost::movelib::inplace_set_difference(first_new, dest.end(), dest.begin(), first_new, comp);
|
|
209
|
+
dest.erase(e, dest.end());
|
|
210
|
+
dtl::bool_<is_contiguous_container<SequenceContainer>::value> contiguous_tag;
|
|
211
|
+
(flat_tree_container_inplace_merge)(dest, dest.begin()+old_sz, comp, contiguous_tag);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
///////////////////////////////////////
|
|
215
|
+
//
|
|
216
|
+
// flat_tree_index_of
|
|
217
|
+
//
|
|
218
|
+
///////////////////////////////////////
|
|
219
|
+
template<class SequenceContainer, class Iterator>
|
|
220
|
+
BOOST_CONTAINER_FORCEINLINE typename SequenceContainer::size_type
|
|
221
|
+
flat_tree_index_of // has_index_of == true
|
|
222
|
+
(SequenceContainer& cont, Iterator p, dtl::true_)
|
|
223
|
+
{
|
|
224
|
+
return cont.index_of(p);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
template<class SequenceContainer, class Iterator>
|
|
228
|
+
BOOST_CONTAINER_FORCEINLINE typename SequenceContainer::size_type
|
|
229
|
+
flat_tree_index_of // has_index_of == false
|
|
230
|
+
(SequenceContainer& cont, Iterator p, dtl::false_)
|
|
231
|
+
{
|
|
232
|
+
typedef typename SequenceContainer::size_type size_type;
|
|
233
|
+
return static_cast<size_type>(p - cont.begin());
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
///////////////////////////////////////
|
|
237
|
+
//
|
|
238
|
+
// flat_tree_nth
|
|
239
|
+
//
|
|
240
|
+
///////////////////////////////////////
|
|
241
|
+
template<class Iterator, class SequenceContainer>
|
|
242
|
+
BOOST_CONTAINER_FORCEINLINE Iterator
|
|
243
|
+
flat_tree_nth // has_nth == true
|
|
244
|
+
(SequenceContainer& cont, typename SequenceContainer::size_type n, dtl::true_)
|
|
245
|
+
{
|
|
246
|
+
return cont.nth(n);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
template<class Iterator, class SequenceContainer>
|
|
250
|
+
BOOST_CONTAINER_FORCEINLINE Iterator
|
|
251
|
+
flat_tree_nth // has_nth == false
|
|
252
|
+
(SequenceContainer& cont, typename SequenceContainer::size_type n, dtl::false_)
|
|
253
|
+
{
|
|
254
|
+
return cont.begin()+ n;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
///////////////////////////////////////
|
|
258
|
+
//
|
|
259
|
+
// flat_tree_get_stored_allocator
|
|
260
|
+
//
|
|
261
|
+
///////////////////////////////////////
|
|
262
|
+
template<class SequenceContainer>
|
|
263
|
+
BOOST_CONTAINER_FORCEINLINE typename SequenceContainer::stored_allocator_type &
|
|
264
|
+
flat_tree_get_stored_allocator // has_get_stored_allocator == true
|
|
265
|
+
(SequenceContainer& cont, dtl::true_)
|
|
266
|
+
{
|
|
267
|
+
return cont.get_stored_allocator();
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
template<class SequenceContainer>
|
|
271
|
+
BOOST_CONTAINER_FORCEINLINE const typename SequenceContainer::stored_allocator_type &
|
|
272
|
+
flat_tree_get_stored_allocator // has_get_stored_allocator == true
|
|
273
|
+
(const SequenceContainer& cont, dtl::true_)
|
|
274
|
+
{
|
|
275
|
+
return cont.get_stored_allocator();
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
template<class SequenceContainer>
|
|
279
|
+
BOOST_CONTAINER_FORCEINLINE typename SequenceContainer::allocator_type
|
|
280
|
+
flat_tree_get_stored_allocator // has_get_stored_allocator == false
|
|
281
|
+
(SequenceContainer& cont, dtl::false_)
|
|
282
|
+
{
|
|
283
|
+
return cont.get_allocator();
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
///////////////////////////////////////
|
|
287
|
+
//
|
|
288
|
+
// flat_tree_adopt_sequence_equal
|
|
289
|
+
//
|
|
290
|
+
///////////////////////////////////////
|
|
291
|
+
template<class SequenceContainer, class Compare>
|
|
292
|
+
void flat_tree_sort_contiguous_to_adopt // is_contiguous_container == true
|
|
293
|
+
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp)
|
|
294
|
+
{
|
|
295
|
+
if(tseq.capacity() >= (seq.capacity() - seq.size())) {
|
|
296
|
+
tseq.clear();
|
|
297
|
+
boost::movelib::adaptive_sort
|
|
298
|
+
(boost::movelib::iterator_to_raw_pointer(seq.begin())
|
|
299
|
+
, boost::movelib::iterator_to_raw_pointer(seq.end())
|
|
300
|
+
, comp
|
|
301
|
+
, boost::movelib::iterator_to_raw_pointer(tseq.begin())
|
|
302
|
+
, tseq.capacity());
|
|
303
|
+
}
|
|
304
|
+
else{
|
|
305
|
+
boost::movelib::adaptive_sort
|
|
306
|
+
(boost::movelib::iterator_to_raw_pointer(seq.begin())
|
|
307
|
+
, boost::movelib::iterator_to_raw_pointer(seq.end())
|
|
308
|
+
, comp
|
|
309
|
+
, boost::movelib::iterator_to_raw_pointer(seq.end())
|
|
310
|
+
, seq.capacity() - seq.size());
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
template<class SequenceContainer, class Compare>
|
|
315
|
+
void flat_tree_adopt_sequence_equal // is_contiguous_container == true
|
|
316
|
+
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp, dtl::true_)
|
|
317
|
+
{
|
|
318
|
+
flat_tree_sort_contiguous_to_adopt(tseq, boost::move(seq), comp);
|
|
319
|
+
tseq = boost::move(seq);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
template<class SequenceContainer, class Compare>
|
|
323
|
+
void flat_tree_adopt_sequence_equal // is_contiguous_container == false
|
|
324
|
+
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp, dtl::false_)
|
|
325
|
+
{
|
|
326
|
+
boost::movelib::adaptive_sort(seq.begin(), seq.end(), comp);
|
|
327
|
+
tseq = boost::move(seq);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
///////////////////////////////////////
|
|
331
|
+
//
|
|
332
|
+
// flat_tree_adopt_sequence_unique
|
|
333
|
+
//
|
|
334
|
+
///////////////////////////////////////
|
|
335
|
+
template<class SequenceContainer, class Compare>
|
|
336
|
+
void flat_tree_adopt_sequence_unique// is_contiguous_container == true
|
|
337
|
+
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp, dtl::true_)
|
|
338
|
+
{
|
|
339
|
+
boost::movelib::pdqsort
|
|
340
|
+
( boost::movelib::iterator_to_raw_pointer(seq.begin())
|
|
341
|
+
, boost::movelib::iterator_to_raw_pointer(seq.end())
|
|
342
|
+
, comp);
|
|
343
|
+
seq.erase(boost::movelib::unique
|
|
344
|
+
(seq.begin(), seq.end(), boost::movelib::negate<Compare>(comp)), seq.cend());
|
|
345
|
+
tseq = boost::move(seq);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
template<class SequenceContainer, class Compare>
|
|
349
|
+
void flat_tree_adopt_sequence_unique// is_contiguous_container == false
|
|
350
|
+
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp, dtl::false_)
|
|
351
|
+
{
|
|
352
|
+
boost::movelib::pdqsort(seq.begin(), seq.end(), comp);
|
|
353
|
+
seq.erase(boost::movelib::unique
|
|
354
|
+
(seq.begin(), seq.end(), boost::movelib::negate<Compare>(comp)), seq.cend());
|
|
355
|
+
tseq = boost::move(seq);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
///////////////////////////////////////
|
|
359
|
+
//
|
|
360
|
+
// flat_tree_reserve
|
|
361
|
+
//
|
|
362
|
+
///////////////////////////////////////
|
|
363
|
+
template<class SequenceContainer>
|
|
364
|
+
BOOST_CONTAINER_FORCEINLINE void // has_reserve == true
|
|
365
|
+
flat_tree_reserve(SequenceContainer &tseq, typename SequenceContainer::size_type cap, dtl::true_)
|
|
366
|
+
{
|
|
367
|
+
tseq.reserve(cap);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
template<class SequenceContainer>
|
|
371
|
+
BOOST_CONTAINER_FORCEINLINE void // has_reserve == false
|
|
372
|
+
flat_tree_reserve(SequenceContainer &, typename SequenceContainer::size_type, dtl::false_)
|
|
373
|
+
{
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
///////////////////////////////////////
|
|
377
|
+
//
|
|
378
|
+
// flat_tree_capacity
|
|
379
|
+
//
|
|
380
|
+
///////////////////////////////////////
|
|
381
|
+
template<class SequenceContainer> // has_capacity == true
|
|
382
|
+
BOOST_CONTAINER_FORCEINLINE typename SequenceContainer::size_type
|
|
383
|
+
flat_tree_capacity(const SequenceContainer &tseq, dtl::true_)
|
|
384
|
+
{
|
|
385
|
+
return tseq.capacity();
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
template<class SequenceContainer> // has_capacity == false
|
|
389
|
+
BOOST_CONTAINER_FORCEINLINE typename SequenceContainer::size_type
|
|
390
|
+
flat_tree_capacity(const SequenceContainer &tseq, dtl::false_)
|
|
391
|
+
{
|
|
392
|
+
return tseq.size();
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
///////////////////////////////////////
|
|
396
|
+
//
|
|
397
|
+
// flat_tree_value_compare
|
|
398
|
+
//
|
|
399
|
+
///////////////////////////////////////
|
|
54
400
|
|
|
55
401
|
template<class Compare, class Value, class KeyOfValue>
|
|
56
402
|
class flat_tree_value_compare
|
|
@@ -81,38 +427,47 @@ class flat_tree_value_compare
|
|
|
81
427
|
{ return *this; }
|
|
82
428
|
};
|
|
83
429
|
|
|
84
|
-
|
|
85
|
-
|
|
430
|
+
///////////////////////////////////////
|
|
431
|
+
//
|
|
432
|
+
// select_container_type
|
|
433
|
+
//
|
|
434
|
+
///////////////////////////////////////
|
|
435
|
+
template < class Value, class AllocatorOrContainer
|
|
436
|
+
, bool = boost::container::dtl::is_container<AllocatorOrContainer>::value >
|
|
437
|
+
struct select_container_type
|
|
438
|
+
{
|
|
439
|
+
typedef AllocatorOrContainer type;
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
template <class Value, class AllocatorOrContainer>
|
|
443
|
+
struct select_container_type<Value, AllocatorOrContainer, false>
|
|
86
444
|
{
|
|
87
|
-
|
|
88
|
-
typedef Pointer iterator;
|
|
89
|
-
typedef typename boost::intrusive::
|
|
90
|
-
pointer_traits<Pointer>::element_type iterator_element_type;
|
|
91
|
-
typedef typename boost::intrusive::
|
|
92
|
-
pointer_traits<Pointer>:: template
|
|
93
|
-
rebind_pointer<const iterator_element_type>::type const_iterator;
|
|
94
|
-
#else //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
95
|
-
typedef typename boost::container::container_detail::
|
|
96
|
-
vec_iterator<Pointer, false> iterator;
|
|
97
|
-
typedef typename boost::container::container_detail::
|
|
98
|
-
vec_iterator<Pointer, true > const_iterator;
|
|
99
|
-
#endif //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
|
100
|
-
typedef boost::container::reverse_iterator<iterator> reverse_iterator;
|
|
101
|
-
typedef boost::container::reverse_iterator<const_iterator> const_reverse_iterator;
|
|
445
|
+
typedef boost::container::vector<Value, AllocatorOrContainer> type;
|
|
102
446
|
};
|
|
103
447
|
|
|
448
|
+
|
|
449
|
+
///////////////////////////////////////
|
|
450
|
+
//
|
|
451
|
+
// flat_tree
|
|
452
|
+
//
|
|
453
|
+
///////////////////////////////////////
|
|
104
454
|
template <class Value, class KeyOfValue,
|
|
105
|
-
class Compare, class
|
|
455
|
+
class Compare, class AllocatorOrContainer>
|
|
106
456
|
class flat_tree
|
|
107
457
|
{
|
|
108
|
-
|
|
109
|
-
typedef
|
|
110
|
-
typedef
|
|
458
|
+
public:
|
|
459
|
+
typedef typename select_container_type<Value, AllocatorOrContainer>::type container_type;
|
|
460
|
+
typedef container_type sequence_type; //For backwards compatibility
|
|
461
|
+
|
|
462
|
+
private:
|
|
463
|
+
typedef typename container_type::allocator_type allocator_t;
|
|
464
|
+
typedef allocator_traits<allocator_t> allocator_traits_type;
|
|
111
465
|
|
|
112
466
|
public:
|
|
113
467
|
typedef flat_tree_value_compare<Compare, Value, KeyOfValue> value_compare;
|
|
114
468
|
|
|
115
|
-
|
|
469
|
+
private:
|
|
470
|
+
|
|
116
471
|
struct Data
|
|
117
472
|
//Inherit from value_compare to do EBO
|
|
118
473
|
: public value_compare
|
|
@@ -121,48 +476,48 @@ class flat_tree
|
|
|
121
476
|
|
|
122
477
|
public:
|
|
123
478
|
Data()
|
|
124
|
-
: value_compare(),
|
|
479
|
+
: value_compare(), m_seq()
|
|
125
480
|
{}
|
|
126
481
|
|
|
127
|
-
explicit Data(const
|
|
128
|
-
: value_compare(
|
|
482
|
+
explicit Data(const allocator_t &alloc)
|
|
483
|
+
: value_compare(), m_seq(alloc)
|
|
129
484
|
{}
|
|
130
485
|
|
|
131
|
-
Data(
|
|
132
|
-
: value_compare(
|
|
486
|
+
explicit Data(const Compare &comp)
|
|
487
|
+
: value_compare(comp), m_seq()
|
|
133
488
|
{}
|
|
134
489
|
|
|
135
|
-
Data(const
|
|
136
|
-
: value_compare(
|
|
490
|
+
Data(const Compare &comp, const allocator_t &alloc)
|
|
491
|
+
: value_compare(comp), m_seq(alloc)
|
|
137
492
|
{}
|
|
138
493
|
|
|
139
|
-
Data(
|
|
140
|
-
: value_compare(
|
|
494
|
+
explicit Data(const Data &d)
|
|
495
|
+
: value_compare(static_cast<const value_compare&>(d)), m_seq(d.m_seq)
|
|
141
496
|
{}
|
|
142
497
|
|
|
143
|
-
|
|
144
|
-
: value_compare(
|
|
498
|
+
Data(BOOST_RV_REF(Data) d)
|
|
499
|
+
: value_compare(boost::move(static_cast<value_compare&>(d))), m_seq(boost::move(d.m_seq))
|
|
145
500
|
{}
|
|
146
501
|
|
|
147
|
-
Data(const
|
|
148
|
-
: value_compare(
|
|
502
|
+
Data(const Data &d, const allocator_t &a)
|
|
503
|
+
: value_compare(static_cast<const value_compare&>(d)), m_seq(d.m_seq, a)
|
|
149
504
|
{}
|
|
150
505
|
|
|
151
|
-
|
|
152
|
-
: value_compare(),
|
|
506
|
+
Data(BOOST_RV_REF(Data) d, const allocator_t &a)
|
|
507
|
+
: value_compare(boost::move(static_cast<value_compare&>(d))), m_seq(boost::move(d.m_seq), a)
|
|
153
508
|
{}
|
|
154
509
|
|
|
155
510
|
Data& operator=(BOOST_COPY_ASSIGN_REF(Data) d)
|
|
156
511
|
{
|
|
157
512
|
this->value_compare::operator=(d);
|
|
158
|
-
|
|
513
|
+
m_seq = d.m_seq;
|
|
159
514
|
return *this;
|
|
160
515
|
}
|
|
161
516
|
|
|
162
517
|
Data& operator=(BOOST_RV_REF(Data) d)
|
|
163
518
|
{
|
|
164
519
|
this->value_compare::operator=(boost::move(static_cast<value_compare &>(d)));
|
|
165
|
-
|
|
520
|
+
m_seq = boost::move(d.m_seq);
|
|
166
521
|
return *this;
|
|
167
522
|
}
|
|
168
523
|
|
|
@@ -170,10 +525,10 @@ class flat_tree
|
|
|
170
525
|
{
|
|
171
526
|
value_compare& mycomp = *this, & othercomp = d;
|
|
172
527
|
boost::adl_move_swap(mycomp, othercomp);
|
|
173
|
-
this->
|
|
528
|
+
this->m_seq.swap(d.m_seq);
|
|
174
529
|
}
|
|
175
530
|
|
|
176
|
-
|
|
531
|
+
container_type m_seq;
|
|
177
532
|
};
|
|
178
533
|
|
|
179
534
|
Data m_data;
|
|
@@ -181,28 +536,39 @@ class flat_tree
|
|
|
181
536
|
|
|
182
537
|
public:
|
|
183
538
|
|
|
184
|
-
typedef typename
|
|
185
|
-
typedef typename
|
|
186
|
-
typedef typename
|
|
187
|
-
typedef typename
|
|
188
|
-
typedef typename
|
|
189
|
-
typedef typename KeyOfValue::type
|
|
190
|
-
typedef Compare
|
|
191
|
-
typedef typename
|
|
192
|
-
typedef typename
|
|
193
|
-
typedef typename
|
|
194
|
-
typedef typename
|
|
195
|
-
typedef typename
|
|
196
|
-
typedef typename
|
|
197
|
-
typedef typename
|
|
539
|
+
typedef typename container_type::value_type value_type;
|
|
540
|
+
typedef typename container_type::pointer pointer;
|
|
541
|
+
typedef typename container_type::const_pointer const_pointer;
|
|
542
|
+
typedef typename container_type::reference reference;
|
|
543
|
+
typedef typename container_type::const_reference const_reference;
|
|
544
|
+
typedef typename KeyOfValue::type key_type;
|
|
545
|
+
typedef Compare key_compare;
|
|
546
|
+
typedef typename container_type::allocator_type allocator_type;
|
|
547
|
+
typedef typename container_type::size_type size_type;
|
|
548
|
+
typedef typename container_type::difference_type difference_type;
|
|
549
|
+
typedef typename container_type::iterator iterator;
|
|
550
|
+
typedef typename container_type::const_iterator const_iterator;
|
|
551
|
+
typedef typename container_type::reverse_iterator reverse_iterator;
|
|
552
|
+
typedef typename container_type::const_reverse_iterator const_reverse_iterator;
|
|
198
553
|
|
|
199
554
|
//!Standard extension
|
|
200
|
-
typedef
|
|
555
|
+
typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT
|
|
556
|
+
(boost::container::dtl::, container_type
|
|
557
|
+
,stored_allocator_type, allocator_type) stored_allocator_type;
|
|
558
|
+
|
|
559
|
+
static const bool has_stored_allocator_type =
|
|
560
|
+
BOOST_INTRUSIVE_HAS_TYPE(boost::container::dtl::, container_type, stored_allocator_type);
|
|
201
561
|
|
|
202
562
|
private:
|
|
203
563
|
typedef allocator_traits<stored_allocator_type> stored_allocator_traits;
|
|
204
564
|
|
|
205
565
|
public:
|
|
566
|
+
typedef typename dtl::if_c
|
|
567
|
+
<has_stored_allocator_type, const stored_allocator_type &, allocator_type>::type get_stored_allocator_const_return_t;
|
|
568
|
+
|
|
569
|
+
typedef typename dtl::if_c
|
|
570
|
+
<has_stored_allocator_type, stored_allocator_type &, allocator_type>::type get_stored_allocator_noconst_return_t;
|
|
571
|
+
|
|
206
572
|
BOOST_CONTAINER_FORCEINLINE flat_tree()
|
|
207
573
|
: m_data()
|
|
208
574
|
{ }
|
|
@@ -211,20 +577,20 @@ class flat_tree
|
|
|
211
577
|
: m_data(comp)
|
|
212
578
|
{ }
|
|
213
579
|
|
|
214
|
-
BOOST_CONTAINER_FORCEINLINE flat_tree(const Compare& comp, const allocator_type& a)
|
|
215
|
-
: m_data(comp, a)
|
|
216
|
-
{ }
|
|
217
|
-
|
|
218
580
|
BOOST_CONTAINER_FORCEINLINE explicit flat_tree(const allocator_type& a)
|
|
219
581
|
: m_data(a)
|
|
220
582
|
{ }
|
|
221
583
|
|
|
584
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree(const Compare& comp, const allocator_type& a)
|
|
585
|
+
: m_data(comp, a)
|
|
586
|
+
{ }
|
|
587
|
+
|
|
222
588
|
BOOST_CONTAINER_FORCEINLINE flat_tree(const flat_tree& x)
|
|
223
589
|
: m_data(x.m_data)
|
|
224
590
|
{ }
|
|
225
591
|
|
|
226
592
|
BOOST_CONTAINER_FORCEINLINE flat_tree(BOOST_RV_REF(flat_tree) x)
|
|
227
|
-
BOOST_NOEXCEPT_IF(boost::container::
|
|
593
|
+
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value)
|
|
228
594
|
: m_data(boost::move(x.m_data))
|
|
229
595
|
{ }
|
|
230
596
|
|
|
@@ -237,46 +603,92 @@ class flat_tree
|
|
|
237
603
|
{ }
|
|
238
604
|
|
|
239
605
|
template <class InputIterator>
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
606
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
607
|
+
flat_tree( ordered_range_t, InputIterator first, InputIterator last)
|
|
608
|
+
: m_data()
|
|
609
|
+
{
|
|
610
|
+
this->m_data.m_seq.insert(this->m_data.m_seq.end(), first, last);
|
|
611
|
+
BOOST_ASSERT((is_sorted)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
template <class InputIterator>
|
|
615
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
616
|
+
flat_tree( ordered_range_t, InputIterator first, InputIterator last, const Compare& comp)
|
|
617
|
+
: m_data(comp)
|
|
618
|
+
{
|
|
619
|
+
this->m_data.m_seq.insert(this->m_data.m_seq.end(), first, last);
|
|
620
|
+
BOOST_ASSERT((is_sorted)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
template <class InputIterator>
|
|
624
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
625
|
+
flat_tree( ordered_range_t, InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a)
|
|
243
626
|
: m_data(comp, a)
|
|
244
627
|
{
|
|
245
|
-
this->m_data.
|
|
246
|
-
BOOST_ASSERT((is_sorted)(this->m_data.
|
|
628
|
+
this->m_data.m_seq.insert(this->m_data.m_seq.end(), first, last);
|
|
629
|
+
BOOST_ASSERT((is_sorted)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
template <class InputIterator>
|
|
633
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
634
|
+
flat_tree( ordered_unique_range_t, InputIterator first, InputIterator last)
|
|
635
|
+
: m_data()
|
|
636
|
+
{
|
|
637
|
+
this->m_data.m_seq.insert(this->m_data.m_seq.end(), first, last);
|
|
638
|
+
BOOST_ASSERT((is_sorted_and_unique)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
template <class InputIterator>
|
|
642
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
643
|
+
flat_tree( ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp)
|
|
644
|
+
: m_data(comp)
|
|
645
|
+
{
|
|
646
|
+
this->m_data.m_seq.insert(this->m_data.m_seq.end(), first, last);
|
|
647
|
+
BOOST_ASSERT((is_sorted_and_unique)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
|
247
648
|
}
|
|
248
649
|
|
|
249
650
|
template <class InputIterator>
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
, const allocator_type& a = allocator_type())
|
|
651
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
652
|
+
flat_tree( ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a)
|
|
253
653
|
: m_data(comp, a)
|
|
254
654
|
{
|
|
255
|
-
this->m_data.
|
|
256
|
-
BOOST_ASSERT((is_sorted_and_unique)(this->m_data.
|
|
655
|
+
this->m_data.m_seq.insert(this->m_data.m_seq.end(), first, last);
|
|
656
|
+
BOOST_ASSERT((is_sorted_and_unique)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
template <class InputIterator>
|
|
660
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
661
|
+
flat_tree( bool unique_insertion, InputIterator first, InputIterator last)
|
|
662
|
+
: m_data()
|
|
663
|
+
{
|
|
664
|
+
this->priv_range_insertion_construct(unique_insertion, first, last);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
template <class InputIterator>
|
|
668
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
669
|
+
flat_tree( bool unique_insertion, InputIterator first, InputIterator last
|
|
670
|
+
, const Compare& comp)
|
|
671
|
+
: m_data(comp)
|
|
672
|
+
{
|
|
673
|
+
this->priv_range_insertion_construct(unique_insertion, first, last);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
template <class InputIterator>
|
|
677
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
678
|
+
flat_tree( bool unique_insertion, InputIterator first, InputIterator last
|
|
679
|
+
, const allocator_type& a)
|
|
680
|
+
: m_data(a)
|
|
681
|
+
{
|
|
682
|
+
this->priv_range_insertion_construct(unique_insertion, first, last);
|
|
257
683
|
}
|
|
258
684
|
|
|
259
685
|
template <class InputIterator>
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
, const Compare& comp
|
|
263
|
-
, const allocator_type& a = allocator_type())
|
|
686
|
+
BOOST_CONTAINER_FORCEINLINE
|
|
687
|
+
flat_tree( bool unique_insertion, InputIterator first, InputIterator last
|
|
688
|
+
, const Compare& comp, const allocator_type& a)
|
|
264
689
|
: m_data(comp, a)
|
|
265
690
|
{
|
|
266
|
-
|
|
267
|
-
//ordered ranges as required by the standard
|
|
268
|
-
//for the constructor
|
|
269
|
-
//Call end() every iteration as reallocation might have invalidated iterators
|
|
270
|
-
if(unique_insertion){
|
|
271
|
-
for ( ; first != last; ++first){
|
|
272
|
-
this->insert_unique(this->cend(), *first);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
else{
|
|
276
|
-
for ( ; first != last; ++first){
|
|
277
|
-
this->insert_equal(this->cend(), *first);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
691
|
+
this->priv_range_insertion_construct(unique_insertion, first, last);
|
|
280
692
|
}
|
|
281
693
|
|
|
282
694
|
BOOST_CONTAINER_FORCEINLINE ~flat_tree()
|
|
@@ -288,7 +700,7 @@ class flat_tree
|
|
|
288
700
|
BOOST_CONTAINER_FORCEINLINE flat_tree& operator=(BOOST_RV_REF(flat_tree) x)
|
|
289
701
|
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
|
290
702
|
allocator_traits_type::is_always_equal::value) &&
|
|
291
|
-
boost::container::
|
|
703
|
+
boost::container::dtl::is_nothrow_move_assignable<Compare>::value)
|
|
292
704
|
{ m_data = boost::move(x.m_data); return *this; }
|
|
293
705
|
|
|
294
706
|
BOOST_CONTAINER_FORCEINLINE const value_compare &priv_value_comp() const
|
|
@@ -303,6 +715,11 @@ class flat_tree
|
|
|
303
715
|
BOOST_CONTAINER_FORCEINLINE key_compare &priv_key_comp()
|
|
304
716
|
{ return this->priv_value_comp().get_comp(); }
|
|
305
717
|
|
|
718
|
+
struct insert_commit_data
|
|
719
|
+
{
|
|
720
|
+
const_iterator position;
|
|
721
|
+
};
|
|
722
|
+
|
|
306
723
|
public:
|
|
307
724
|
// accessors:
|
|
308
725
|
BOOST_CONTAINER_FORCEINLINE Compare key_comp() const
|
|
@@ -312,31 +729,35 @@ class flat_tree
|
|
|
312
729
|
{ return this->m_data; }
|
|
313
730
|
|
|
314
731
|
BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const
|
|
315
|
-
{ return this->m_data.
|
|
732
|
+
{ return this->m_data.m_seq.get_allocator(); }
|
|
316
733
|
|
|
317
|
-
BOOST_CONTAINER_FORCEINLINE
|
|
318
|
-
{
|
|
734
|
+
BOOST_CONTAINER_FORCEINLINE get_stored_allocator_const_return_t get_stored_allocator() const
|
|
735
|
+
{
|
|
736
|
+
return flat_tree_get_stored_allocator(this->m_data.m_seq, dtl::bool_<has_stored_allocator_type>());
|
|
737
|
+
}
|
|
319
738
|
|
|
320
|
-
BOOST_CONTAINER_FORCEINLINE
|
|
321
|
-
{
|
|
739
|
+
BOOST_CONTAINER_FORCEINLINE get_stored_allocator_noconst_return_t get_stored_allocator()
|
|
740
|
+
{
|
|
741
|
+
return flat_tree_get_stored_allocator(this->m_data.m_seq, dtl::bool_<has_stored_allocator_type>());
|
|
742
|
+
}
|
|
322
743
|
|
|
323
744
|
BOOST_CONTAINER_FORCEINLINE iterator begin()
|
|
324
|
-
{ return this->m_data.
|
|
745
|
+
{ return this->m_data.m_seq.begin(); }
|
|
325
746
|
|
|
326
747
|
BOOST_CONTAINER_FORCEINLINE const_iterator begin() const
|
|
327
748
|
{ return this->cbegin(); }
|
|
328
749
|
|
|
329
750
|
BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const
|
|
330
|
-
{ return this->m_data.
|
|
751
|
+
{ return this->m_data.m_seq.begin(); }
|
|
331
752
|
|
|
332
753
|
BOOST_CONTAINER_FORCEINLINE iterator end()
|
|
333
|
-
{ return this->m_data.
|
|
754
|
+
{ return this->m_data.m_seq.end(); }
|
|
334
755
|
|
|
335
756
|
BOOST_CONTAINER_FORCEINLINE const_iterator end() const
|
|
336
757
|
{ return this->cend(); }
|
|
337
758
|
|
|
338
759
|
BOOST_CONTAINER_FORCEINLINE const_iterator cend() const
|
|
339
|
-
{ return this->m_data.
|
|
760
|
+
{ return this->m_data.m_seq.end(); }
|
|
340
761
|
|
|
341
762
|
BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin()
|
|
342
763
|
{ return reverse_iterator(this->end()); }
|
|
@@ -357,17 +778,17 @@ class flat_tree
|
|
|
357
778
|
{ return const_reverse_iterator(this->cbegin()); }
|
|
358
779
|
|
|
359
780
|
BOOST_CONTAINER_FORCEINLINE bool empty() const
|
|
360
|
-
{ return this->m_data.
|
|
781
|
+
{ return this->m_data.m_seq.empty(); }
|
|
361
782
|
|
|
362
783
|
BOOST_CONTAINER_FORCEINLINE size_type size() const
|
|
363
|
-
{ return this->m_data.
|
|
784
|
+
{ return this->m_data.m_seq.size(); }
|
|
364
785
|
|
|
365
786
|
BOOST_CONTAINER_FORCEINLINE size_type max_size() const
|
|
366
|
-
{ return this->m_data.
|
|
787
|
+
{ return this->m_data.m_seq.max_size(); }
|
|
367
788
|
|
|
368
789
|
BOOST_CONTAINER_FORCEINLINE void swap(flat_tree& other)
|
|
369
790
|
BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
|
|
370
|
-
&& boost::container::
|
|
791
|
+
&& boost::container::dtl::is_nothrow_swappable<Compare>::value )
|
|
371
792
|
{ this->m_data.swap(other.m_data); }
|
|
372
793
|
|
|
373
794
|
public:
|
|
@@ -378,7 +799,8 @@ class flat_tree
|
|
|
378
799
|
insert_commit_data data;
|
|
379
800
|
ret.second = this->priv_insert_unique_prepare(KeyOfValue()(val), data);
|
|
380
801
|
ret.first = ret.second ? this->priv_insert_commit(data, val)
|
|
381
|
-
:
|
|
802
|
+
: this->begin() + (data.position - this->cbegin());
|
|
803
|
+
//: iterator(vector_iterator_get_ptr(data.position));
|
|
382
804
|
return ret;
|
|
383
805
|
}
|
|
384
806
|
|
|
@@ -388,21 +810,22 @@ class flat_tree
|
|
|
388
810
|
insert_commit_data data;
|
|
389
811
|
ret.second = this->priv_insert_unique_prepare(KeyOfValue()(val), data);
|
|
390
812
|
ret.first = ret.second ? this->priv_insert_commit(data, boost::move(val))
|
|
391
|
-
:
|
|
813
|
+
: this->begin() + (data.position - this->cbegin());
|
|
814
|
+
//: iterator(vector_iterator_get_ptr(data.position));
|
|
392
815
|
return ret;
|
|
393
816
|
}
|
|
394
817
|
|
|
395
818
|
iterator insert_equal(const value_type& val)
|
|
396
819
|
{
|
|
397
820
|
iterator i = this->upper_bound(KeyOfValue()(val));
|
|
398
|
-
i = this->m_data.
|
|
821
|
+
i = this->m_data.m_seq.insert(i, val);
|
|
399
822
|
return i;
|
|
400
823
|
}
|
|
401
824
|
|
|
402
825
|
iterator insert_equal(BOOST_RV_REF(value_type) mval)
|
|
403
826
|
{
|
|
404
827
|
iterator i = this->upper_bound(KeyOfValue()(mval));
|
|
405
|
-
i = this->m_data.
|
|
828
|
+
i = this->m_data.m_seq.insert(i, boost::move(mval));
|
|
406
829
|
return i;
|
|
407
830
|
}
|
|
408
831
|
|
|
@@ -412,7 +835,8 @@ class flat_tree
|
|
|
412
835
|
insert_commit_data data;
|
|
413
836
|
return this->priv_insert_unique_prepare(hint, KeyOfValue()(val), data)
|
|
414
837
|
? this->priv_insert_commit(data, val)
|
|
415
|
-
:
|
|
838
|
+
: this->begin() + (data.position - this->cbegin());
|
|
839
|
+
//: iterator(vector_iterator_get_ptr(data.position));
|
|
416
840
|
}
|
|
417
841
|
|
|
418
842
|
iterator insert_unique(const_iterator hint, BOOST_RV_REF(value_type) val)
|
|
@@ -421,7 +845,8 @@ class flat_tree
|
|
|
421
845
|
insert_commit_data data;
|
|
422
846
|
return this->priv_insert_unique_prepare(hint, KeyOfValue()(val), data)
|
|
423
847
|
? this->priv_insert_commit(data, boost::move(val))
|
|
424
|
-
:
|
|
848
|
+
: this->begin() + (data.position - this->cbegin());
|
|
849
|
+
//: iterator(vector_iterator_get_ptr(data.position));
|
|
425
850
|
}
|
|
426
851
|
|
|
427
852
|
iterator insert_equal(const_iterator hint, const value_type& val)
|
|
@@ -443,113 +868,63 @@ class flat_tree
|
|
|
443
868
|
template <class InIt>
|
|
444
869
|
void insert_unique(InIt first, InIt last)
|
|
445
870
|
{
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
}
|
|
871
|
+
dtl::bool_<is_contiguous_container<container_type>::value> contiguous_tag;
|
|
872
|
+
container_type &seq = this->m_data.m_seq;
|
|
873
|
+
value_compare &val_cmp = this->priv_value_comp();
|
|
450
874
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
875
|
+
//Step 1: put new elements in the back
|
|
876
|
+
typename container_type::iterator const it = seq.insert(seq.cend(), first, last);
|
|
877
|
+
|
|
878
|
+
//Step 2: sort them
|
|
879
|
+
boost::movelib::pdqsort(it, seq.end(), val_cmp);
|
|
880
|
+
|
|
881
|
+
//Step 3: only left unique values from the back not already present in the original range
|
|
882
|
+
typename container_type::iterator const e = boost::movelib::inplace_set_unique_difference
|
|
883
|
+
(it, seq.end(), seq.begin(), it, val_cmp);
|
|
884
|
+
seq.erase(e, seq.cend());
|
|
885
|
+
|
|
886
|
+
//Step 4: merge both ranges
|
|
887
|
+
(flat_tree_container_inplace_merge)(seq, it, this->priv_value_comp(), contiguous_tag);
|
|
888
|
+
}
|
|
460
889
|
|
|
461
890
|
template <class InIt>
|
|
462
|
-
void insert_equal(InIt first, InIt last
|
|
463
|
-
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
464
|
-
, typename container_detail::enable_if_c
|
|
465
|
-
< !container_detail::is_input_iterator<InIt>::value
|
|
466
|
-
>::type * = 0
|
|
467
|
-
#endif
|
|
468
|
-
)
|
|
891
|
+
void insert_equal(InIt first, InIt last)
|
|
469
892
|
{
|
|
470
|
-
|
|
471
|
-
this->
|
|
472
|
-
|
|
893
|
+
dtl::bool_<is_contiguous_container<container_type>::value> contiguous_tag;
|
|
894
|
+
container_type &seq = this->m_data.m_seq;
|
|
895
|
+
typename container_type::iterator const it = seq.insert(seq.cend(), first, last);
|
|
896
|
+
(flat_tree_container_inplace_sort_ending)(seq, it, this->priv_value_comp(), contiguous_tag);
|
|
897
|
+
(flat_tree_container_inplace_merge) (seq, it, this->priv_value_comp(), contiguous_tag);
|
|
473
898
|
}
|
|
474
899
|
|
|
475
900
|
//Ordered
|
|
476
901
|
|
|
477
902
|
template <class InIt>
|
|
478
|
-
void insert_equal(ordered_range_t, InIt first, InIt last
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
<
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
)
|
|
485
|
-
{ this->priv_insert_equal_loop_ordered(first, last); }
|
|
486
|
-
|
|
487
|
-
template <class FwdIt>
|
|
488
|
-
void insert_equal(ordered_range_t, FwdIt first, FwdIt last
|
|
489
|
-
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
490
|
-
, typename container_detail::enable_if_c
|
|
491
|
-
< !container_detail::is_input_iterator<FwdIt>::value &&
|
|
492
|
-
container_detail::is_forward_iterator<FwdIt>::value
|
|
493
|
-
>::type * = 0
|
|
494
|
-
#endif
|
|
495
|
-
)
|
|
496
|
-
{
|
|
497
|
-
const size_type len = static_cast<size_type>(boost::container::iterator_distance(first, last));
|
|
498
|
-
this->reserve(this->size()+len);
|
|
499
|
-
this->priv_insert_equal_loop_ordered(first, last);
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
template <class BidirIt>
|
|
503
|
-
void insert_equal(ordered_range_t, BidirIt first, BidirIt last
|
|
504
|
-
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
505
|
-
, typename container_detail::disable_if_or
|
|
506
|
-
< void
|
|
507
|
-
, container_detail::is_input_iterator<BidirIt>
|
|
508
|
-
, container_detail::is_forward_iterator<BidirIt>
|
|
509
|
-
>::type * = 0
|
|
510
|
-
#endif
|
|
511
|
-
)
|
|
512
|
-
{ this->m_data.m_vect.merge(first, last, static_cast<const value_compare &>(this->m_data)); }
|
|
903
|
+
void insert_equal(ordered_range_t, InIt first, InIt last)
|
|
904
|
+
{
|
|
905
|
+
const bool value = boost::container::dtl::
|
|
906
|
+
has_member_function_callable_with_merge_unique<container_type, InIt, InIt, value_compare>::value;
|
|
907
|
+
(flat_tree_merge_equal)(this->m_data.m_seq, first, last, this->priv_value_comp(), dtl::bool_<value>());
|
|
908
|
+
}
|
|
513
909
|
|
|
514
910
|
template <class InIt>
|
|
515
|
-
void insert_unique(ordered_unique_range_t, InIt first, InIt last
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
<
|
|
519
|
-
|
|
520
|
-
, container_detail::is_forward_iterator<InIt>
|
|
521
|
-
>::type * = 0
|
|
522
|
-
#endif
|
|
523
|
-
)
|
|
524
|
-
{
|
|
525
|
-
const_iterator pos(this->cend());
|
|
526
|
-
for ( ; first != last; ++first){
|
|
527
|
-
pos = this->insert_unique(pos, *first);
|
|
528
|
-
++pos;
|
|
529
|
-
}
|
|
911
|
+
void insert_unique(ordered_unique_range_t, InIt first, InIt last)
|
|
912
|
+
{
|
|
913
|
+
const bool value = boost::container::dtl::
|
|
914
|
+
has_member_function_callable_with_merge_unique<container_type, InIt, InIt, value_compare>::value;
|
|
915
|
+
(flat_tree_merge_unique)(this->m_data.m_seq, first, last, this->priv_value_comp(), dtl::bool_<value>());
|
|
530
916
|
}
|
|
531
917
|
|
|
532
|
-
template <class BidirIt>
|
|
533
|
-
void insert_unique(ordered_unique_range_t, BidirIt first, BidirIt last
|
|
534
|
-
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
|
535
|
-
, typename container_detail::enable_if_c
|
|
536
|
-
< !(container_detail::is_input_iterator<BidirIt>::value ||
|
|
537
|
-
container_detail::is_forward_iterator<BidirIt>::value)
|
|
538
|
-
>::type * = 0
|
|
539
|
-
#endif
|
|
540
|
-
)
|
|
541
|
-
{ this->m_data.m_vect.merge_unique(first, last, static_cast<const value_compare &>(this->m_data)); }
|
|
542
|
-
|
|
543
918
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
544
919
|
|
|
545
920
|
template <class... Args>
|
|
546
921
|
std::pair<iterator, bool> emplace_unique(BOOST_FWD_REF(Args)... args)
|
|
547
922
|
{
|
|
548
923
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;
|
|
549
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
550
|
-
|
|
924
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));
|
|
925
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
|
551
926
|
stored_allocator_traits::construct(a, &val, ::boost::forward<Args>(args)... );
|
|
552
|
-
value_destructor<stored_allocator_type> d(a, val);
|
|
927
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);
|
|
553
928
|
return this->insert_unique(::boost::move(val));
|
|
554
929
|
}
|
|
555
930
|
|
|
@@ -558,10 +933,10 @@ class flat_tree
|
|
|
558
933
|
{
|
|
559
934
|
//hint checked in insert_unique
|
|
560
935
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;
|
|
561
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
562
|
-
|
|
936
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));
|
|
937
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
|
563
938
|
stored_allocator_traits::construct(a, &val, ::boost::forward<Args>(args)... );
|
|
564
|
-
value_destructor<stored_allocator_type> d(a, val);
|
|
939
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);
|
|
565
940
|
return this->insert_unique(hint, ::boost::move(val));
|
|
566
941
|
}
|
|
567
942
|
|
|
@@ -569,10 +944,10 @@ class flat_tree
|
|
|
569
944
|
iterator emplace_equal(BOOST_FWD_REF(Args)... args)
|
|
570
945
|
{
|
|
571
946
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;
|
|
572
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
573
|
-
|
|
947
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));
|
|
948
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
|
574
949
|
stored_allocator_traits::construct(a, &val, ::boost::forward<Args>(args)... );
|
|
575
|
-
value_destructor<stored_allocator_type> d(a, val);
|
|
950
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);
|
|
576
951
|
return this->insert_equal(::boost::move(val));
|
|
577
952
|
}
|
|
578
953
|
|
|
@@ -581,10 +956,10 @@ class flat_tree
|
|
|
581
956
|
{
|
|
582
957
|
//hint checked in insert_equal
|
|
583
958
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;
|
|
584
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
585
|
-
|
|
959
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));
|
|
960
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
|
586
961
|
stored_allocator_traits::construct(a, &val, ::boost::forward<Args>(args)... );
|
|
587
|
-
value_destructor<stored_allocator_type> d(a, val);
|
|
962
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);
|
|
588
963
|
return this->insert_equal(hint, ::boost::move(val));
|
|
589
964
|
}
|
|
590
965
|
|
|
@@ -606,7 +981,7 @@ class flat_tree
|
|
|
606
981
|
typedef typename emplace_functor_type<try_emplace_t, KeyType, Args...>::type func_t;
|
|
607
982
|
typedef emplace_iterator<value_type, func_t, difference_type> it_t;
|
|
608
983
|
func_t func(try_emplace_t(), ::boost::forward<KeyType>(key), ::boost::forward<Args>(args)...);
|
|
609
|
-
ret.first = this->m_data.
|
|
984
|
+
ret.first = this->m_data.m_seq.insert(data.position, it_t(func), it_t());
|
|
610
985
|
}
|
|
611
986
|
return ret;
|
|
612
987
|
}
|
|
@@ -618,10 +993,10 @@ class flat_tree
|
|
|
618
993
|
std::pair<iterator, bool> emplace_unique(BOOST_MOVE_UREF##N)\
|
|
619
994
|
{\
|
|
620
995
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;\
|
|
621
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
622
|
-
|
|
996
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));\
|
|
997
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
|
623
998
|
stored_allocator_traits::construct(a, &val BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
624
|
-
value_destructor<stored_allocator_type> d(a, val);\
|
|
999
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);\
|
|
625
1000
|
return this->insert_unique(::boost::move(val));\
|
|
626
1001
|
}\
|
|
627
1002
|
\
|
|
@@ -629,10 +1004,10 @@ class flat_tree
|
|
|
629
1004
|
iterator emplace_hint_unique(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
630
1005
|
{\
|
|
631
1006
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;\
|
|
632
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
633
|
-
|
|
1007
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));\
|
|
1008
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
|
634
1009
|
stored_allocator_traits::construct(a, &val BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
635
|
-
value_destructor<stored_allocator_type> d(a, val);\
|
|
1010
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);\
|
|
636
1011
|
return this->insert_unique(hint, ::boost::move(val));\
|
|
637
1012
|
}\
|
|
638
1013
|
\
|
|
@@ -640,10 +1015,10 @@ class flat_tree
|
|
|
640
1015
|
iterator emplace_equal(BOOST_MOVE_UREF##N)\
|
|
641
1016
|
{\
|
|
642
1017
|
typename aligned_storage<sizeof(value_type), alignment_of<value_type>::value>::type v;\
|
|
643
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
644
|
-
|
|
1018
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));\
|
|
1019
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
|
645
1020
|
stored_allocator_traits::construct(a, &val BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
646
|
-
value_destructor<stored_allocator_type> d(a, val);\
|
|
1021
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);\
|
|
647
1022
|
return this->insert_equal(::boost::move(val));\
|
|
648
1023
|
}\
|
|
649
1024
|
\
|
|
@@ -651,10 +1026,10 @@ class flat_tree
|
|
|
651
1026
|
iterator emplace_hint_equal(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
|
652
1027
|
{\
|
|
653
1028
|
typename aligned_storage <sizeof(value_type), alignment_of<value_type>::value>::type v;\
|
|
654
|
-
value_type &val = *static_cast<value_type *>(static_cast<void *>(
|
|
655
|
-
|
|
1029
|
+
value_type &val = *static_cast<value_type *>(static_cast<void *>(v.data));\
|
|
1030
|
+
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
|
656
1031
|
stored_allocator_traits::construct(a, &val BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
657
|
-
value_destructor<stored_allocator_type> d(a, val);\
|
|
1032
|
+
value_destructor<stored_allocator_type, value_type> d(a, val);\
|
|
658
1033
|
return this->insert_equal(hint, ::boost::move(val));\
|
|
659
1034
|
}\
|
|
660
1035
|
template <class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
|
|
@@ -675,7 +1050,7 @@ class flat_tree
|
|
|
675
1050
|
typedef typename emplace_functor_type<try_emplace_t, KeyType BOOST_MOVE_I##N BOOST_MOVE_TARG##N>::type func_t;\
|
|
676
1051
|
typedef emplace_iterator<value_type, func_t, difference_type> it_t;\
|
|
677
1052
|
func_t func(try_emplace_t(), ::boost::forward<KeyType>(key) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
|
678
|
-
ret.first = this->m_data.
|
|
1053
|
+
ret.first = this->m_data.m_seq.insert(data.position, it_t(func), it_t());\
|
|
679
1054
|
}\
|
|
680
1055
|
return ret;\
|
|
681
1056
|
}\
|
|
@@ -702,29 +1077,29 @@ class flat_tree
|
|
|
702
1077
|
typedef typename emplace_functor_type<KeyType, M>::type func_t;
|
|
703
1078
|
typedef emplace_iterator<value_type, func_t, difference_type> it_t;
|
|
704
1079
|
func_t func(boost::forward<KeyType>(key), boost::forward<M>(obj));
|
|
705
|
-
ret.first = this->m_data.
|
|
1080
|
+
ret.first = this->m_data.m_seq.insert(data.position, it_t(func), it_t());
|
|
706
1081
|
}
|
|
707
1082
|
return ret;
|
|
708
1083
|
}
|
|
709
1084
|
|
|
710
1085
|
BOOST_CONTAINER_FORCEINLINE iterator erase(const_iterator position)
|
|
711
|
-
{ return this->m_data.
|
|
1086
|
+
{ return this->m_data.m_seq.erase(position); }
|
|
712
1087
|
|
|
713
1088
|
size_type erase(const key_type& k)
|
|
714
1089
|
{
|
|
715
1090
|
std::pair<iterator,iterator > itp = this->equal_range(k);
|
|
716
1091
|
size_type ret = static_cast<size_type>(itp.second-itp.first);
|
|
717
1092
|
if (ret){
|
|
718
|
-
this->m_data.
|
|
1093
|
+
this->m_data.m_seq.erase(itp.first, itp.second);
|
|
719
1094
|
}
|
|
720
1095
|
return ret;
|
|
721
1096
|
}
|
|
722
1097
|
|
|
723
1098
|
BOOST_CONTAINER_FORCEINLINE iterator erase(const_iterator first, const_iterator last)
|
|
724
|
-
{ return this->m_data.
|
|
1099
|
+
{ return this->m_data.m_seq.erase(first, last); }
|
|
725
1100
|
|
|
726
1101
|
BOOST_CONTAINER_FORCEINLINE void clear()
|
|
727
|
-
{ this->m_data.
|
|
1102
|
+
{ this->m_data.m_seq.clear(); }
|
|
728
1103
|
|
|
729
1104
|
//! <b>Effects</b>: Tries to deallocate the excess of memory created
|
|
730
1105
|
// with previous allocations. The size of the vector is unchanged
|
|
@@ -733,19 +1108,35 @@ class flat_tree
|
|
|
733
1108
|
//!
|
|
734
1109
|
//! <b>Complexity</b>: Linear to size().
|
|
735
1110
|
BOOST_CONTAINER_FORCEINLINE void shrink_to_fit()
|
|
736
|
-
{ this->m_data.
|
|
1111
|
+
{ this->m_data.m_seq.shrink_to_fit(); }
|
|
737
1112
|
|
|
738
1113
|
BOOST_CONTAINER_FORCEINLINE iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
|
739
|
-
{
|
|
1114
|
+
{
|
|
1115
|
+
const bool value = boost::container::dtl::
|
|
1116
|
+
has_member_function_callable_with_nth<container_type, size_type>::value;
|
|
1117
|
+
return flat_tree_nth<iterator>(this->m_data.m_seq, n, dtl::bool_<value>());
|
|
1118
|
+
}
|
|
740
1119
|
|
|
741
1120
|
BOOST_CONTAINER_FORCEINLINE const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
|
742
|
-
{
|
|
1121
|
+
{
|
|
1122
|
+
const bool value = boost::container::dtl::
|
|
1123
|
+
has_member_function_callable_with_nth<container_type, size_type>::value;
|
|
1124
|
+
return flat_tree_nth<const_iterator>(this->m_data.m_seq, n, dtl::bool_<value>());
|
|
1125
|
+
}
|
|
743
1126
|
|
|
744
1127
|
BOOST_CONTAINER_FORCEINLINE size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
|
745
|
-
{
|
|
1128
|
+
{
|
|
1129
|
+
const bool value = boost::container::dtl::
|
|
1130
|
+
has_member_function_callable_with_index_of<container_type, iterator>::value;
|
|
1131
|
+
return flat_tree_index_of(this->m_data.m_seq, p, dtl::bool_<value>());
|
|
1132
|
+
}
|
|
746
1133
|
|
|
747
1134
|
BOOST_CONTAINER_FORCEINLINE size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
|
748
|
-
{
|
|
1135
|
+
{
|
|
1136
|
+
const bool value = boost::container::dtl::
|
|
1137
|
+
has_member_function_callable_with_index_of<container_type, const_iterator>::value;
|
|
1138
|
+
return flat_tree_index_of(this->m_data.m_seq, p, dtl::bool_<value>());
|
|
1139
|
+
}
|
|
749
1140
|
|
|
750
1141
|
// set operations:
|
|
751
1142
|
iterator find(const key_type& k)
|
|
@@ -778,33 +1169,41 @@ class flat_tree
|
|
|
778
1169
|
}
|
|
779
1170
|
|
|
780
1171
|
template<class C2>
|
|
781
|
-
void merge_unique(flat_tree<Value, KeyOfValue, C2,
|
|
1172
|
+
BOOST_CONTAINER_FORCEINLINE void merge_unique(flat_tree<Value, KeyOfValue, C2, AllocatorOrContainer>& source)
|
|
782
1173
|
{
|
|
783
1174
|
this->insert( boost::make_move_iterator(source.begin())
|
|
784
1175
|
, boost::make_move_iterator(source.end()));
|
|
785
1176
|
}
|
|
786
1177
|
|
|
787
1178
|
template<class C2>
|
|
788
|
-
void merge_equal(flat_tree<Value, KeyOfValue, C2,
|
|
1179
|
+
BOOST_CONTAINER_FORCEINLINE void merge_equal(flat_tree<Value, KeyOfValue, C2, AllocatorOrContainer>& source)
|
|
789
1180
|
{
|
|
790
1181
|
this->insert( boost::make_move_iterator(source.begin())
|
|
791
1182
|
, boost::make_move_iterator(source.end()));
|
|
792
1183
|
}
|
|
793
1184
|
|
|
794
|
-
void merge_unique(flat_tree& source)
|
|
1185
|
+
BOOST_CONTAINER_FORCEINLINE void merge_unique(flat_tree& source)
|
|
795
1186
|
{
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
1187
|
+
const bool value = boost::container::dtl::
|
|
1188
|
+
has_member_function_callable_with_merge_unique<container_type, iterator, iterator, value_compare>::value;
|
|
1189
|
+
(flat_tree_merge_unique)
|
|
1190
|
+
( this->m_data.m_seq
|
|
1191
|
+
, boost::make_move_iterator(source.m_data.m_seq.begin())
|
|
1192
|
+
, boost::make_move_iterator(source.m_data.m_seq.end())
|
|
1193
|
+
, this->priv_value_comp()
|
|
1194
|
+
, dtl::bool_<value>());
|
|
800
1195
|
}
|
|
801
1196
|
|
|
802
|
-
void merge_equal(flat_tree& source)
|
|
1197
|
+
BOOST_CONTAINER_FORCEINLINE void merge_equal(flat_tree& source)
|
|
803
1198
|
{
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
1199
|
+
const bool value = boost::container::dtl::
|
|
1200
|
+
has_member_function_callable_with_merge<container_type, iterator, iterator, value_compare>::value;
|
|
1201
|
+
(flat_tree_merge_equal)
|
|
1202
|
+
( this->m_data.m_seq
|
|
1203
|
+
, boost::make_move_iterator(source.m_data.m_seq.begin())
|
|
1204
|
+
, boost::make_move_iterator(source.m_data.m_seq.end())
|
|
1205
|
+
, this->priv_value_comp()
|
|
1206
|
+
, dtl::bool_<value>());
|
|
808
1207
|
}
|
|
809
1208
|
|
|
810
1209
|
BOOST_CONTAINER_FORCEINLINE iterator lower_bound(const key_type& k)
|
|
@@ -832,10 +1231,52 @@ class flat_tree
|
|
|
832
1231
|
{ return this->priv_lower_bound_range(this->cbegin(), this->cend(), k); }
|
|
833
1232
|
|
|
834
1233
|
BOOST_CONTAINER_FORCEINLINE size_type capacity() const
|
|
835
|
-
{
|
|
1234
|
+
{
|
|
1235
|
+
const bool value = boost::container::dtl::
|
|
1236
|
+
has_member_function_callable_with_capacity<container_type>::value;
|
|
1237
|
+
return (flat_tree_capacity)(this->m_data.m_seq, dtl::bool_<value>());
|
|
1238
|
+
}
|
|
836
1239
|
|
|
837
1240
|
BOOST_CONTAINER_FORCEINLINE void reserve(size_type cnt)
|
|
838
|
-
{
|
|
1241
|
+
{
|
|
1242
|
+
const bool value = boost::container::dtl::
|
|
1243
|
+
has_member_function_callable_with_reserve<container_type, size_type>::value;
|
|
1244
|
+
(flat_tree_reserve)(this->m_data.m_seq, cnt, dtl::bool_<value>());
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
BOOST_CONTAINER_FORCEINLINE container_type extract_sequence()
|
|
1248
|
+
{
|
|
1249
|
+
return boost::move(m_data.m_seq);
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
BOOST_CONTAINER_FORCEINLINE container_type &get_sequence_ref()
|
|
1253
|
+
{
|
|
1254
|
+
return m_data.m_seq;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
BOOST_CONTAINER_FORCEINLINE void adopt_sequence_equal(BOOST_RV_REF(container_type) seq)
|
|
1258
|
+
{
|
|
1259
|
+
(flat_tree_adopt_sequence_equal)( m_data.m_seq, boost::move(seq), this->priv_value_comp()
|
|
1260
|
+
, dtl::bool_<is_contiguous_container<container_type>::value>());
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
BOOST_CONTAINER_FORCEINLINE void adopt_sequence_unique(BOOST_RV_REF(container_type) seq)
|
|
1264
|
+
{
|
|
1265
|
+
(flat_tree_adopt_sequence_unique)(m_data.m_seq, boost::move(seq), this->priv_value_comp()
|
|
1266
|
+
, dtl::bool_<is_contiguous_container<container_type>::value>());
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
void adopt_sequence_equal(ordered_range_t, BOOST_RV_REF(container_type) seq)
|
|
1270
|
+
{
|
|
1271
|
+
BOOST_ASSERT((is_sorted)(seq.cbegin(), seq.cend(), this->priv_value_comp()));
|
|
1272
|
+
m_data.m_seq = boost::move(seq);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
void adopt_sequence_unique(ordered_unique_range_t, BOOST_RV_REF(container_type) seq)
|
|
1276
|
+
{
|
|
1277
|
+
BOOST_ASSERT((is_sorted_and_unique)(seq.cbegin(), seq.cend(), this->priv_value_comp()));
|
|
1278
|
+
m_data.m_seq = boost::move(seq);
|
|
1279
|
+
}
|
|
839
1280
|
|
|
840
1281
|
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const flat_tree& x, const flat_tree& y)
|
|
841
1282
|
{
|
|
@@ -864,15 +1305,25 @@ class flat_tree
|
|
|
864
1305
|
|
|
865
1306
|
private:
|
|
866
1307
|
|
|
867
|
-
|
|
1308
|
+
template <class InputIterator>
|
|
1309
|
+
void priv_range_insertion_construct( bool unique_insertion, InputIterator first, InputIterator last)
|
|
868
1310
|
{
|
|
869
|
-
|
|
1311
|
+
//Use cend() as hint to achieve linear time for
|
|
1312
|
+
//ordered ranges as required by the standard
|
|
1313
|
+
//for the constructor
|
|
1314
|
+
//Call end() every iteration as reallocation might have invalidated iterators
|
|
1315
|
+
if(unique_insertion){
|
|
1316
|
+
this->insert_unique(first, last);
|
|
1317
|
+
}
|
|
1318
|
+
else{
|
|
1319
|
+
this->insert_equal (first, last);
|
|
1320
|
+
}
|
|
870
1321
|
}
|
|
871
1322
|
|
|
872
|
-
|
|
1323
|
+
BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
|
|
873
1324
|
{
|
|
874
|
-
|
|
875
|
-
}
|
|
1325
|
+
return (this->begin() <= pos) && (pos <= this->end());
|
|
1326
|
+
}
|
|
876
1327
|
|
|
877
1328
|
// insert/erase
|
|
878
1329
|
void priv_insert_equal_prepare
|
|
@@ -963,7 +1414,7 @@ class flat_tree
|
|
|
963
1414
|
BOOST_CONTAINER_FORCEINLINE iterator priv_insert_commit
|
|
964
1415
|
(insert_commit_data &commit_data, BOOST_FWD_REF(Convertible) convertible)
|
|
965
1416
|
{
|
|
966
|
-
return this->m_data.
|
|
1417
|
+
return this->m_data.m_seq.insert
|
|
967
1418
|
( commit_data.position
|
|
968
1419
|
, boost::forward<Convertible>(convertible));
|
|
969
1420
|
}
|
|
@@ -1062,41 +1513,22 @@ class flat_tree
|
|
|
1062
1513
|
}
|
|
1063
1514
|
return std::pair<RanIt, RanIt>(lb, ub);
|
|
1064
1515
|
}
|
|
1065
|
-
|
|
1066
|
-
template<class InIt>
|
|
1067
|
-
void priv_insert_equal_loop(InIt first, InIt last)
|
|
1068
|
-
{
|
|
1069
|
-
for ( ; first != last; ++first){
|
|
1070
|
-
this->insert_equal(*first);
|
|
1071
|
-
}
|
|
1072
|
-
}
|
|
1073
|
-
|
|
1074
|
-
template<class InIt>
|
|
1075
|
-
void priv_insert_equal_loop_ordered(InIt first, InIt last)
|
|
1076
|
-
{
|
|
1077
|
-
const_iterator pos(this->cend());
|
|
1078
|
-
for ( ; first != last; ++first){
|
|
1079
|
-
//If ordered, then try hint version
|
|
1080
|
-
//to achieve constant-time complexity per insertion
|
|
1081
|
-
//in some cases
|
|
1082
|
-
pos = this->insert_equal(pos, *first);
|
|
1083
|
-
++pos;
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
1516
|
};
|
|
1087
1517
|
|
|
1088
|
-
} //namespace
|
|
1518
|
+
} //namespace dtl {
|
|
1089
1519
|
|
|
1090
1520
|
} //namespace container {
|
|
1091
1521
|
|
|
1092
1522
|
//!has_trivial_destructor_after_move<> == true_type
|
|
1093
1523
|
//!specialization for optimizations
|
|
1094
1524
|
template <class T, class KeyOfValue,
|
|
1095
|
-
class Compare, class
|
|
1096
|
-
struct has_trivial_destructor_after_move<boost::container::
|
|
1525
|
+
class Compare, class AllocatorOrContainer>
|
|
1526
|
+
struct has_trivial_destructor_after_move<boost::container::dtl::flat_tree<T, KeyOfValue, Compare, AllocatorOrContainer> >
|
|
1097
1527
|
{
|
|
1098
|
-
typedef typename
|
|
1099
|
-
|
|
1528
|
+
typedef typename boost::container::dtl::select_container_type<T, AllocatorOrContainer>::type container_type;
|
|
1529
|
+
typedef typename container_type::allocator_type allocator_t;
|
|
1530
|
+
typedef typename ::boost::container::allocator_traits<allocator_t>::pointer pointer;
|
|
1531
|
+
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_t>::value &&
|
|
1100
1532
|
::boost::has_trivial_destructor_after_move<pointer>::value;
|
|
1101
1533
|
};
|
|
1102
1534
|
|