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
|
@@ -3,9 +3,4 @@
|
|
|
3
3
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
4
4
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
5
5
|
|
|
6
|
-
#include <boost/
|
|
7
|
-
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
|
8
|
-
#pragma once
|
|
9
|
-
#endif
|
|
10
|
-
|
|
11
|
-
#include <boost/functional/hash/hash_fwd.hpp>
|
|
6
|
+
#include <boost/container_hash/hash_fwd.hpp>
|
|
@@ -1,454 +1,572 @@
|
|
|
1
|
-
//
|
|
1
|
+
// (C) Copyright Jeremy William Murphy 2016.
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// without express or implied warranty, and with no claim as to its suitability
|
|
7
|
-
// for any purpose.
|
|
8
|
-
|
|
9
|
-
// boostinspect:nolicense (don't complain about the lack of a Boost license)
|
|
10
|
-
// (Paul Moore hasn't been in contact for years, so there's no way to change the
|
|
11
|
-
// license.)
|
|
12
|
-
|
|
13
|
-
// See http://www.boost.org for updates, documentation, and revision history.
|
|
3
|
+
// Use, modification and distribution are subject to the
|
|
4
|
+
// Boost Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
14
6
|
|
|
15
7
|
#ifndef BOOST_INTEGER_COMMON_FACTOR_RT_HPP
|
|
16
8
|
#define BOOST_INTEGER_COMMON_FACTOR_RT_HPP
|
|
17
9
|
|
|
18
|
-
#include <boost/
|
|
10
|
+
#include <boost/assert.hpp>
|
|
11
|
+
#include <boost/core/enable_if.hpp>
|
|
19
12
|
|
|
20
13
|
#include <boost/config.hpp> // for BOOST_NESTED_TEMPLATE, etc.
|
|
21
14
|
#include <boost/limits.hpp> // for std::numeric_limits
|
|
22
15
|
#include <climits> // for CHAR_MIN
|
|
23
16
|
#include <boost/detail/workaround.hpp>
|
|
17
|
+
#include <iterator>
|
|
18
|
+
#include <algorithm>
|
|
19
|
+
#include <limits>
|
|
20
|
+
#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
#endif
|
|
23
|
+
#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
24
|
+
#include <functional>
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#if ((defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)) || (defined(__clang__) && defined(__c2__)) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && (defined(_M_IX86) || defined(_M_X64))
|
|
28
|
+
#include <intrin.h>
|
|
29
|
+
#endif
|
|
24
30
|
|
|
25
31
|
#ifdef BOOST_MSVC
|
|
26
32
|
#pragma warning(push)
|
|
27
33
|
#pragma warning(disable:4127 4244) // Conditional expression is constant
|
|
28
34
|
#endif
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// Forward declarations for function templates -----------------------------//
|
|
37
|
-
|
|
38
|
-
template < typename IntegerType >
|
|
39
|
-
IntegerType gcd( IntegerType const &a, IntegerType const &b );
|
|
40
|
-
|
|
41
|
-
template < typename IntegerType >
|
|
42
|
-
IntegerType lcm( IntegerType const &a, IntegerType const &b );
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// Greatest common divisor evaluator class declaration ---------------------//
|
|
46
|
-
|
|
47
|
-
template < typename IntegerType >
|
|
48
|
-
class gcd_evaluator
|
|
49
|
-
{
|
|
50
|
-
public:
|
|
51
|
-
// Types
|
|
52
|
-
typedef IntegerType result_type, first_argument_type, second_argument_type;
|
|
53
|
-
|
|
54
|
-
// Function object interface
|
|
55
|
-
result_type operator ()( first_argument_type const &a,
|
|
56
|
-
second_argument_type const &b ) const;
|
|
57
|
-
|
|
58
|
-
}; // boost::integer::gcd_evaluator
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// Least common multiple evaluator class declaration -----------------------//
|
|
62
|
-
|
|
63
|
-
template < typename IntegerType >
|
|
64
|
-
class lcm_evaluator
|
|
65
|
-
{
|
|
66
|
-
public:
|
|
67
|
-
// Types
|
|
68
|
-
typedef IntegerType result_type, first_argument_type, second_argument_type;
|
|
69
|
-
|
|
70
|
-
// Function object interface
|
|
71
|
-
result_type operator ()( first_argument_type const &a,
|
|
72
|
-
second_argument_type const &b ) const;
|
|
73
|
-
|
|
74
|
-
}; // boost::integer::lcm_evaluator
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// Implementation details --------------------------------------------------//
|
|
78
|
-
|
|
79
|
-
namespace detail
|
|
80
|
-
{
|
|
81
|
-
// Greatest common divisor for rings (including unsigned integers)
|
|
82
|
-
template < typename RingType >
|
|
83
|
-
RingType
|
|
84
|
-
gcd_euclidean
|
|
85
|
-
(
|
|
86
|
-
RingType a,
|
|
87
|
-
RingType b
|
|
88
|
-
)
|
|
89
|
-
{
|
|
90
|
-
// Avoid repeated construction
|
|
91
|
-
#ifndef __BORLANDC__
|
|
92
|
-
RingType const zero = static_cast<RingType>( 0 );
|
|
93
|
-
#else
|
|
94
|
-
RingType zero = static_cast<RingType>( 0 );
|
|
95
|
-
#endif
|
|
96
|
-
|
|
97
|
-
// Reduce by GCD-remainder property [GCD(a,b) == GCD(b,a MOD b)]
|
|
98
|
-
while ( true )
|
|
99
|
-
{
|
|
100
|
-
if ( a == zero )
|
|
101
|
-
return b;
|
|
102
|
-
b %= a;
|
|
103
|
-
|
|
104
|
-
if ( b == zero )
|
|
105
|
-
return a;
|
|
106
|
-
a %= b;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Greatest common divisor for (signed) integers
|
|
111
|
-
template < typename IntegerType >
|
|
112
|
-
inline
|
|
113
|
-
IntegerType
|
|
114
|
-
gcd_integer
|
|
115
|
-
(
|
|
116
|
-
IntegerType const & a,
|
|
117
|
-
IntegerType const & b
|
|
118
|
-
)
|
|
119
|
-
{
|
|
120
|
-
// Avoid repeated construction
|
|
121
|
-
IntegerType const zero = static_cast<IntegerType>( 0 );
|
|
122
|
-
IntegerType const result = gcd_euclidean( a, b );
|
|
123
|
-
|
|
124
|
-
return ( result < zero ) ? static_cast<IntegerType>(-result) : result;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Greatest common divisor for unsigned binary integers
|
|
128
|
-
template < typename BuiltInUnsigned >
|
|
129
|
-
BuiltInUnsigned
|
|
130
|
-
gcd_binary
|
|
131
|
-
(
|
|
132
|
-
BuiltInUnsigned u,
|
|
133
|
-
BuiltInUnsigned v
|
|
134
|
-
)
|
|
135
|
-
{
|
|
136
|
-
if ( u && v )
|
|
137
|
-
{
|
|
138
|
-
// Shift out common factors of 2
|
|
139
|
-
unsigned shifts = 0;
|
|
140
|
-
|
|
141
|
-
while ( !(u & 1u) && !(v & 1u) )
|
|
142
|
-
{
|
|
143
|
-
++shifts;
|
|
144
|
-
u >>= 1;
|
|
145
|
-
v >>= 1;
|
|
146
|
-
}
|
|
36
|
+
#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) && !defined(BOOST_NO_CXX11_NOEXCEPT)
|
|
37
|
+
#define BOOST_GCD_NOEXCEPT(T) noexcept(std::is_arithmetic<T>::value)
|
|
38
|
+
#else
|
|
39
|
+
#define BOOST_GCD_NOEXCEPT(T)
|
|
40
|
+
#endif
|
|
147
41
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
42
|
+
namespace boost {
|
|
43
|
+
|
|
44
|
+
template <class I>
|
|
45
|
+
class rational;
|
|
46
|
+
|
|
47
|
+
namespace integer {
|
|
48
|
+
|
|
49
|
+
namespace gcd_detail{
|
|
50
|
+
|
|
51
|
+
//
|
|
52
|
+
// some helper functions which really should be constexpr already, but sadly aren't:
|
|
53
|
+
//
|
|
54
|
+
#ifndef BOOST_NO_CXX14_CONSTEXPR
|
|
55
|
+
template <class T>
|
|
56
|
+
inline constexpr T constexpr_min(T const& a, T const& b) BOOST_GCD_NOEXCEPT(T)
|
|
57
|
+
{
|
|
58
|
+
return a < b ? a : b;
|
|
59
|
+
}
|
|
60
|
+
template <class T>
|
|
61
|
+
inline constexpr auto constexpr_swap(T&a, T& b) BOOST_GCD_NOEXCEPT(T) -> decltype(a.swap(b))
|
|
62
|
+
{
|
|
63
|
+
return a.swap(b);
|
|
64
|
+
}
|
|
65
|
+
template <class T, class U>
|
|
66
|
+
inline constexpr void constexpr_swap(T&a, U& b...) BOOST_GCD_NOEXCEPT(T)
|
|
67
|
+
{
|
|
68
|
+
T t(static_cast<T&&>(a));
|
|
69
|
+
a = static_cast<T&&>(b);
|
|
70
|
+
b = static_cast<T&&>(t);
|
|
71
|
+
}
|
|
72
|
+
#else
|
|
73
|
+
template <class T>
|
|
74
|
+
inline T constexpr_min(T const& a, T const& b) BOOST_GCD_NOEXCEPT(T)
|
|
75
|
+
{
|
|
76
|
+
return a < b ? a : b;
|
|
77
|
+
}
|
|
78
|
+
template <class T>
|
|
79
|
+
inline void constexpr_swap(T&a, T& b) BOOST_GCD_NOEXCEPT(T)
|
|
80
|
+
{
|
|
81
|
+
using std::swap;
|
|
82
|
+
swap(a, b);
|
|
83
|
+
}
|
|
84
|
+
#endif
|
|
151
85
|
|
|
152
|
-
|
|
153
|
-
|
|
86
|
+
template <class T, bool a =
|
|
87
|
+
#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
|
88
|
+
std::is_unsigned<T>::value ||
|
|
89
|
+
#endif
|
|
90
|
+
(std::numeric_limits<T>::is_specialized && !std::numeric_limits<T>::is_signed)>
|
|
91
|
+
struct gcd_traits_abs_defaults
|
|
92
|
+
{
|
|
93
|
+
inline static BOOST_CXX14_CONSTEXPR const T& abs(const T& val) BOOST_GCD_NOEXCEPT(T) { return val; }
|
|
94
|
+
};
|
|
95
|
+
template <class T>
|
|
96
|
+
struct gcd_traits_abs_defaults<T, false>
|
|
97
|
+
{
|
|
98
|
+
inline static T BOOST_CXX14_CONSTEXPR abs(const T& val) BOOST_GCD_NOEXCEPT(T)
|
|
99
|
+
{
|
|
100
|
+
// This sucks, but std::abs is not constexpr :(
|
|
101
|
+
return val < T(0) ? -val : val;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
enum method_type
|
|
106
|
+
{
|
|
107
|
+
method_euclid = 0,
|
|
108
|
+
method_binary = 1,
|
|
109
|
+
method_mixed = 2
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
struct any_convert
|
|
113
|
+
{
|
|
114
|
+
template <class T>
|
|
115
|
+
any_convert(const T&);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
struct unlikely_size
|
|
119
|
+
{
|
|
120
|
+
char buf[9973];
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
unlikely_size operator <<= (any_convert, any_convert);
|
|
124
|
+
unlikely_size operator >>= (any_convert, any_convert);
|
|
125
|
+
|
|
126
|
+
template <class T>
|
|
127
|
+
struct gcd_traits_defaults : public gcd_traits_abs_defaults<T>
|
|
128
|
+
{
|
|
129
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(T& val) BOOST_GCD_NOEXCEPT(T)
|
|
130
|
+
{
|
|
131
|
+
unsigned r = 0;
|
|
132
|
+
while(0 == (val & 1u))
|
|
154
133
|
{
|
|
155
|
-
#
|
|
156
|
-
|
|
157
|
-
{
|
|
158
|
-
r[ which ] = (r[which] >> 1);
|
|
159
|
-
}
|
|
134
|
+
#ifdef _MSC_VER // VC++ can't handle operator >>= in constexpr code for some reason
|
|
135
|
+
val = val >> 1;
|
|
160
136
|
#else
|
|
161
|
-
|
|
162
|
-
while ( !(r[ which ] & 1u) )
|
|
163
|
-
{
|
|
164
|
-
r[ which ] >>= 1;
|
|
165
|
-
}
|
|
137
|
+
val >>= 1;
|
|
166
138
|
#endif
|
|
167
|
-
|
|
168
|
-
// Replace the larger of the two with their difference
|
|
169
|
-
if ( r[!which] > r[which] )
|
|
170
|
-
{
|
|
171
|
-
which ^= 1u;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
r[ which ] -= r[ !which ];
|
|
139
|
+
++r;
|
|
175
140
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
template < typename RingType >
|
|
192
|
-
inline
|
|
193
|
-
RingType
|
|
194
|
-
lcm_euclidean
|
|
195
|
-
(
|
|
196
|
-
RingType const & a,
|
|
197
|
-
RingType const & b
|
|
198
|
-
)
|
|
199
|
-
{
|
|
200
|
-
RingType const zero = static_cast<RingType>( 0 );
|
|
201
|
-
RingType const temp = gcd_euclidean( a, b );
|
|
202
|
-
|
|
203
|
-
return ( temp != zero ) ? ( a / temp * b ) : zero;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Least common multiple for (signed) integers
|
|
207
|
-
template < typename IntegerType >
|
|
208
|
-
inline
|
|
209
|
-
IntegerType
|
|
210
|
-
lcm_integer
|
|
211
|
-
(
|
|
212
|
-
IntegerType const & a,
|
|
213
|
-
IntegerType const & b
|
|
214
|
-
)
|
|
215
|
-
{
|
|
216
|
-
// Avoid repeated construction
|
|
217
|
-
IntegerType const zero = static_cast<IntegerType>( 0 );
|
|
218
|
-
IntegerType const result = lcm_euclidean( a, b );
|
|
219
|
-
|
|
220
|
-
return ( result < zero ) ? static_cast<IntegerType>(-result) : result;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// Function objects to find the best way of computing GCD or LCM
|
|
224
|
-
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
|
225
|
-
template < typename T, bool IsSpecialized, bool IsSigned >
|
|
226
|
-
struct gcd_optimal_evaluator_helper_t
|
|
227
|
-
{
|
|
228
|
-
T operator ()( T const &a, T const &b )
|
|
229
|
-
{
|
|
230
|
-
return gcd_euclidean( a, b );
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
template < typename T >
|
|
235
|
-
struct gcd_optimal_evaluator_helper_t< T, true, true >
|
|
236
|
-
{
|
|
237
|
-
T operator ()( T const &a, T const &b )
|
|
238
|
-
{
|
|
239
|
-
return gcd_integer( a, b );
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
template < typename T >
|
|
244
|
-
struct gcd_optimal_evaluator
|
|
245
|
-
{
|
|
246
|
-
T operator ()( T const &a, T const &b )
|
|
247
|
-
{
|
|
248
|
-
typedef ::std::numeric_limits<T> limits_type;
|
|
249
|
-
|
|
250
|
-
typedef gcd_optimal_evaluator_helper_t<T,
|
|
251
|
-
limits_type::is_specialized, limits_type::is_signed> helper_type;
|
|
252
|
-
|
|
253
|
-
helper_type solver;
|
|
254
|
-
|
|
255
|
-
return solver( a, b );
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
#else // BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
|
259
|
-
template < typename T >
|
|
260
|
-
struct gcd_optimal_evaluator
|
|
261
|
-
{
|
|
262
|
-
T operator ()( T const &a, T const &b )
|
|
263
|
-
{
|
|
264
|
-
return gcd_integer( a, b );
|
|
265
|
-
}
|
|
266
|
-
};
|
|
141
|
+
return r;
|
|
142
|
+
}
|
|
143
|
+
inline static BOOST_CXX14_CONSTEXPR bool less(const T& a, const T& b) BOOST_GCD_NOEXCEPT(T)
|
|
144
|
+
{
|
|
145
|
+
return a < b;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static T& get_value();
|
|
149
|
+
|
|
150
|
+
#ifndef BOOST_NO_SFINAE
|
|
151
|
+
static const bool has_operator_left_shift_equal = sizeof(get_value() <<= 2) != sizeof(unlikely_size);
|
|
152
|
+
static const bool has_operator_right_shift_equal = sizeof(get_value() >>= 2) != sizeof(unlikely_size);
|
|
153
|
+
#else
|
|
154
|
+
static const bool has_operator_left_shift_equal = true;
|
|
155
|
+
static const bool has_operator_right_shift_equal = true;
|
|
267
156
|
#endif
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
#
|
|
282
|
-
|
|
157
|
+
static const method_type method = std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer && has_operator_left_shift_equal && has_operator_right_shift_equal ? method_mixed : method_euclid;
|
|
158
|
+
};
|
|
159
|
+
//
|
|
160
|
+
// Default gcd_traits just inherits from defaults:
|
|
161
|
+
//
|
|
162
|
+
template <class T>
|
|
163
|
+
struct gcd_traits : public gcd_traits_defaults<T> {};
|
|
164
|
+
|
|
165
|
+
//
|
|
166
|
+
// Some platforms have fast bitscan operations, that allow us to implement
|
|
167
|
+
// make_odd much more efficiently, unfortunately we can't use these if we want
|
|
168
|
+
// the functions to be constexpr as the compiler intrinsics aren't constexpr.
|
|
169
|
+
//
|
|
170
|
+
#if defined(BOOST_NO_CXX14_CONSTEXPR) && ((defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)) || (defined(__clang__) && defined(__c2__)) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && (defined(_M_IX86) || defined(_M_X64))
|
|
171
|
+
#pragma intrinsic(_BitScanForward,)
|
|
172
|
+
template <>
|
|
173
|
+
struct gcd_traits<unsigned long> : public gcd_traits_defaults<unsigned long>
|
|
174
|
+
{
|
|
175
|
+
BOOST_FORCEINLINE static unsigned find_lsb(unsigned long val) BOOST_NOEXCEPT
|
|
176
|
+
{
|
|
177
|
+
unsigned long result;
|
|
178
|
+
_BitScanForward(&result, val);
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
BOOST_FORCEINLINE static unsigned make_odd(unsigned long& val) BOOST_NOEXCEPT
|
|
182
|
+
{
|
|
183
|
+
unsigned result = find_lsb(val);
|
|
184
|
+
val >>= result;
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
#ifdef _M_X64
|
|
190
|
+
#pragma intrinsic(_BitScanForward64)
|
|
191
|
+
template <>
|
|
192
|
+
struct gcd_traits<unsigned __int64> : public gcd_traits_defaults<unsigned __int64>
|
|
193
|
+
{
|
|
194
|
+
BOOST_FORCEINLINE static unsigned find_lsb(unsigned __int64 mask) BOOST_NOEXCEPT
|
|
195
|
+
{
|
|
196
|
+
unsigned long result;
|
|
197
|
+
_BitScanForward64(&result, mask);
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
BOOST_FORCEINLINE static unsigned make_odd(unsigned __int64& val) BOOST_NOEXCEPT
|
|
201
|
+
{
|
|
202
|
+
unsigned result = find_lsb(val);
|
|
203
|
+
val >>= result;
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
};
|
|
283
207
|
#endif
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
208
|
+
//
|
|
209
|
+
// Other integer type are trivial adaptations of the above,
|
|
210
|
+
// this works for signed types too, as by the time these functions
|
|
211
|
+
// are called, all values are > 0.
|
|
212
|
+
//
|
|
213
|
+
template <> struct gcd_traits<long> : public gcd_traits_defaults<long>
|
|
214
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(long& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
215
|
+
template <> struct gcd_traits<unsigned int> : public gcd_traits_defaults<unsigned int>
|
|
216
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(unsigned int& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
217
|
+
template <> struct gcd_traits<int> : public gcd_traits_defaults<int>
|
|
218
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(int& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
219
|
+
template <> struct gcd_traits<unsigned short> : public gcd_traits_defaults<unsigned short>
|
|
220
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(unsigned short& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
221
|
+
template <> struct gcd_traits<short> : public gcd_traits_defaults<short>
|
|
222
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(short& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
223
|
+
template <> struct gcd_traits<unsigned char> : public gcd_traits_defaults<unsigned char>
|
|
224
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(unsigned char& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
225
|
+
template <> struct gcd_traits<signed char> : public gcd_traits_defaults<signed char>
|
|
226
|
+
{ BOOST_FORCEINLINE static signed make_odd(signed char& val)BOOST_NOEXCEPT{ signed result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
227
|
+
template <> struct gcd_traits<char> : public gcd_traits_defaults<char>
|
|
228
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(char& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
229
|
+
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
|
230
|
+
template <> struct gcd_traits<wchar_t> : public gcd_traits_defaults<wchar_t>
|
|
231
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(wchar_t& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; } };
|
|
287
232
|
#endif
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
#define BOOST_PRIVATE_GCD_SF( St, Ut ) \
|
|
292
|
-
template < > struct gcd_optimal_evaluator<St> \
|
|
293
|
-
{ St operator ()( St a, St b ) const { Ut const a_abs = \
|
|
294
|
-
static_cast<Ut>( a < 0 ? -a : +a ), b_abs = static_cast<Ut>( \
|
|
295
|
-
b < 0 ? -b : +b ); return static_cast<St>( \
|
|
296
|
-
gcd_optimal_evaluator<Ut>()(a_abs, b_abs) ); } }
|
|
297
|
-
|
|
298
|
-
BOOST_PRIVATE_GCD_SF( signed char, unsigned char );
|
|
299
|
-
BOOST_PRIVATE_GCD_SF( short, unsigned short );
|
|
300
|
-
BOOST_PRIVATE_GCD_SF( int, unsigned );
|
|
301
|
-
BOOST_PRIVATE_GCD_SF( long, unsigned long );
|
|
302
|
-
|
|
303
|
-
#if CHAR_MIN < 0
|
|
304
|
-
BOOST_PRIVATE_GCD_SF( char, unsigned char ); // char is signed
|
|
233
|
+
#ifdef _M_X64
|
|
234
|
+
template <> struct gcd_traits<__int64> : public gcd_traits_defaults<__int64>
|
|
235
|
+
{ BOOST_FORCEINLINE static unsigned make_odd(__int64& val)BOOST_NOEXCEPT{ unsigned result = gcd_traits<unsigned __int64>::find_lsb(val); val >>= result; return result; } };
|
|
305
236
|
#endif
|
|
306
237
|
|
|
307
|
-
#
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
238
|
+
#elif defined(BOOST_GCC) || defined(__clang__) || (defined(BOOST_INTEL) && defined(__GNUC__))
|
|
239
|
+
|
|
240
|
+
template <>
|
|
241
|
+
struct gcd_traits<unsigned> : public gcd_traits_defaults<unsigned>
|
|
242
|
+
{
|
|
243
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned find_lsb(unsigned mask)BOOST_NOEXCEPT
|
|
244
|
+
{
|
|
245
|
+
return __builtin_ctz(mask);
|
|
246
|
+
}
|
|
247
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(unsigned& val)BOOST_NOEXCEPT
|
|
248
|
+
{
|
|
249
|
+
unsigned result = find_lsb(val);
|
|
250
|
+
val >>= result;
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
template <>
|
|
255
|
+
struct gcd_traits<unsigned long> : public gcd_traits_defaults<unsigned long>
|
|
256
|
+
{
|
|
257
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned find_lsb(unsigned long mask)BOOST_NOEXCEPT
|
|
258
|
+
{
|
|
259
|
+
return __builtin_ctzl(mask);
|
|
260
|
+
}
|
|
261
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(unsigned long& val)BOOST_NOEXCEPT
|
|
262
|
+
{
|
|
263
|
+
unsigned result = find_lsb(val);
|
|
264
|
+
val >>= result;
|
|
265
|
+
return result;
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
template <>
|
|
269
|
+
struct gcd_traits<boost::ulong_long_type> : public gcd_traits_defaults<boost::ulong_long_type>
|
|
270
|
+
{
|
|
271
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned find_lsb(boost::ulong_long_type mask)BOOST_NOEXCEPT
|
|
272
|
+
{
|
|
273
|
+
return __builtin_ctzll(mask);
|
|
274
|
+
}
|
|
275
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(boost::ulong_long_type& val)BOOST_NOEXCEPT
|
|
276
|
+
{
|
|
277
|
+
unsigned result = find_lsb(val);
|
|
278
|
+
val >>= result;
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
//
|
|
283
|
+
// Other integer type are trivial adaptations of the above,
|
|
284
|
+
// this works for signed types too, as by the time these functions
|
|
285
|
+
// are called, all values are > 0.
|
|
286
|
+
//
|
|
287
|
+
template <> struct gcd_traits<boost::long_long_type> : public gcd_traits_defaults<boost::long_long_type>
|
|
288
|
+
{
|
|
289
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(boost::long_long_type& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<boost::ulong_long_type>::find_lsb(val); val >>= result; return result; }
|
|
290
|
+
};
|
|
291
|
+
template <> struct gcd_traits<long> : public gcd_traits_defaults<long>
|
|
292
|
+
{
|
|
293
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(long& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; }
|
|
294
|
+
};
|
|
295
|
+
template <> struct gcd_traits<int> : public gcd_traits_defaults<int>
|
|
296
|
+
{
|
|
297
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(int& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; }
|
|
298
|
+
};
|
|
299
|
+
template <> struct gcd_traits<unsigned short> : public gcd_traits_defaults<unsigned short>
|
|
300
|
+
{
|
|
301
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(unsigned short& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
|
|
302
|
+
};
|
|
303
|
+
template <> struct gcd_traits<short> : public gcd_traits_defaults<short>
|
|
304
|
+
{
|
|
305
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(short& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
|
|
306
|
+
};
|
|
307
|
+
template <> struct gcd_traits<unsigned char> : public gcd_traits_defaults<unsigned char>
|
|
308
|
+
{
|
|
309
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(unsigned char& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
|
|
310
|
+
};
|
|
311
|
+
template <> struct gcd_traits<signed char> : public gcd_traits_defaults<signed char>
|
|
312
|
+
{
|
|
313
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR signed make_odd(signed char& val)BOOST_NOEXCEPT { signed result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
|
|
314
|
+
};
|
|
315
|
+
template <> struct gcd_traits<char> : public gcd_traits_defaults<char>
|
|
316
|
+
{
|
|
317
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(char& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
|
|
318
|
+
};
|
|
319
|
+
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
|
320
|
+
template <> struct gcd_traits<wchar_t> : public gcd_traits_defaults<wchar_t>
|
|
321
|
+
{
|
|
322
|
+
BOOST_FORCEINLINE static BOOST_CXX14_CONSTEXPR unsigned make_odd(wchar_t& val)BOOST_NOEXCEPT { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
|
|
323
|
+
};
|
|
311
324
|
#endif
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
325
|
+
#endif
|
|
326
|
+
//
|
|
327
|
+
// The Mixed Binary Euclid Algorithm
|
|
328
|
+
// Sidi Mohamed Sedjelmaci
|
|
329
|
+
// Electronic Notes in Discrete Mathematics 35 (2009) 169-176
|
|
330
|
+
//
|
|
331
|
+
template <class T>
|
|
332
|
+
BOOST_CXX14_CONSTEXPR T mixed_binary_gcd(T u, T v) BOOST_GCD_NOEXCEPT(T)
|
|
333
|
+
{
|
|
334
|
+
if(gcd_traits<T>::less(u, v))
|
|
335
|
+
constexpr_swap(u, v);
|
|
336
|
+
|
|
337
|
+
unsigned shifts = 0;
|
|
338
|
+
|
|
339
|
+
if(u == T(0))
|
|
340
|
+
return v;
|
|
341
|
+
if(v == T(0))
|
|
342
|
+
return u;
|
|
343
|
+
|
|
344
|
+
shifts = constexpr_min(gcd_traits<T>::make_odd(u), gcd_traits<T>::make_odd(v));
|
|
345
|
+
|
|
346
|
+
while(gcd_traits<T>::less(1, v))
|
|
347
|
+
{
|
|
348
|
+
u %= v;
|
|
349
|
+
v -= u;
|
|
350
|
+
if(u == T(0))
|
|
351
|
+
return v << shifts;
|
|
352
|
+
if(v == T(0))
|
|
353
|
+
return u << shifts;
|
|
354
|
+
gcd_traits<T>::make_odd(u);
|
|
355
|
+
gcd_traits<T>::make_odd(v);
|
|
356
|
+
if(gcd_traits<T>::less(u, v))
|
|
357
|
+
constexpr_swap(u, v);
|
|
358
|
+
}
|
|
359
|
+
return (v == 1 ? v : u) << shifts;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/** Stein gcd (aka 'binary gcd')
|
|
363
|
+
*
|
|
364
|
+
* From Mathematics to Generic Programming, Alexander Stepanov, Daniel Rose
|
|
365
|
+
*/
|
|
366
|
+
template <typename SteinDomain>
|
|
367
|
+
BOOST_CXX14_CONSTEXPR SteinDomain Stein_gcd(SteinDomain m, SteinDomain n) BOOST_GCD_NOEXCEPT(SteinDomain)
|
|
318
368
|
{
|
|
319
|
-
|
|
369
|
+
BOOST_ASSERT(m >= 0);
|
|
370
|
+
BOOST_ASSERT(n >= 0);
|
|
371
|
+
if (m == SteinDomain(0))
|
|
372
|
+
return n;
|
|
373
|
+
if (n == SteinDomain(0))
|
|
374
|
+
return m;
|
|
375
|
+
// m > 0 && n > 0
|
|
376
|
+
int d_m = gcd_traits<SteinDomain>::make_odd(m);
|
|
377
|
+
int d_n = gcd_traits<SteinDomain>::make_odd(n);
|
|
378
|
+
// odd(m) && odd(n)
|
|
379
|
+
while (m != n)
|
|
320
380
|
{
|
|
321
|
-
|
|
381
|
+
if (n > m)
|
|
382
|
+
constexpr_swap(n, m);
|
|
383
|
+
m -= n;
|
|
384
|
+
gcd_traits<SteinDomain>::make_odd(m);
|
|
322
385
|
}
|
|
323
|
-
|
|
386
|
+
// m == n
|
|
387
|
+
m <<= constexpr_min(d_m, d_n);
|
|
388
|
+
return m;
|
|
389
|
+
}
|
|
324
390
|
|
|
325
|
-
|
|
326
|
-
|
|
391
|
+
|
|
392
|
+
/** Euclidean algorithm
|
|
393
|
+
*
|
|
394
|
+
* From Mathematics to Generic Programming, Alexander Stepanov, Daniel Rose
|
|
395
|
+
*
|
|
396
|
+
*/
|
|
397
|
+
template <typename EuclideanDomain>
|
|
398
|
+
inline BOOST_CXX14_CONSTEXPR EuclideanDomain Euclid_gcd(EuclideanDomain a, EuclideanDomain b) BOOST_GCD_NOEXCEPT(EuclideanDomain)
|
|
327
399
|
{
|
|
328
|
-
|
|
400
|
+
while (b != EuclideanDomain(0))
|
|
329
401
|
{
|
|
330
|
-
|
|
402
|
+
a %= b;
|
|
403
|
+
constexpr_swap(a, b);
|
|
331
404
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
template < typename T >
|
|
335
|
-
struct lcm_optimal_evaluator
|
|
336
|
-
{
|
|
337
|
-
T operator ()( T const &a, T const &b )
|
|
338
|
-
{
|
|
339
|
-
typedef ::std::numeric_limits<T> limits_type;
|
|
340
|
-
|
|
341
|
-
typedef lcm_optimal_evaluator_helper_t<T,
|
|
342
|
-
limits_type::is_specialized, limits_type::is_signed> helper_type;
|
|
405
|
+
return a;
|
|
406
|
+
}
|
|
343
407
|
|
|
344
|
-
helper_type solver;
|
|
345
408
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
#else // BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
|
350
|
-
template < typename T >
|
|
351
|
-
struct lcm_optimal_evaluator
|
|
409
|
+
template <typename T>
|
|
410
|
+
inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME enable_if_c<gcd_traits<T>::method == method_mixed, T>::type
|
|
411
|
+
optimal_gcd_select(T const &a, T const &b) BOOST_GCD_NOEXCEPT(T)
|
|
352
412
|
{
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
return lcm_integer( a, b );
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
#endif
|
|
413
|
+
return gcd_detail::mixed_binary_gcd(a, b);
|
|
414
|
+
}
|
|
359
415
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
T
|
|
364
|
-
gcd_optimal
|
|
365
|
-
(
|
|
366
|
-
T const & a,
|
|
367
|
-
T const & b
|
|
368
|
-
)
|
|
416
|
+
template <typename T>
|
|
417
|
+
inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME enable_if_c<gcd_traits<T>::method == method_binary, T>::type
|
|
418
|
+
optimal_gcd_select(T const &a, T const &b) BOOST_GCD_NOEXCEPT(T)
|
|
369
419
|
{
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
return solver( a, b );
|
|
420
|
+
return gcd_detail::Stein_gcd(a, b);
|
|
373
421
|
}
|
|
374
422
|
|
|
375
|
-
template <
|
|
376
|
-
inline
|
|
377
|
-
|
|
378
|
-
lcm_optimal
|
|
379
|
-
(
|
|
380
|
-
T const & a,
|
|
381
|
-
T const & b
|
|
382
|
-
)
|
|
423
|
+
template <typename T>
|
|
424
|
+
inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME enable_if_c<gcd_traits<T>::method == method_euclid, T>::type
|
|
425
|
+
optimal_gcd_select(T const &a, T const &b) BOOST_GCD_NOEXCEPT(T)
|
|
383
426
|
{
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
return solver( a, b );
|
|
427
|
+
return gcd_detail::Euclid_gcd(a, b);
|
|
387
428
|
}
|
|
388
429
|
|
|
389
|
-
|
|
430
|
+
template <class T>
|
|
431
|
+
inline BOOST_CXX14_CONSTEXPR T lcm_imp(const T& a, const T& b) BOOST_GCD_NOEXCEPT(T)
|
|
432
|
+
{
|
|
433
|
+
T temp = boost::integer::gcd_detail::optimal_gcd_select(a, b);
|
|
434
|
+
#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
|
|
435
|
+
return (temp != T(0)) ? T(a / temp * b) : T(0);
|
|
436
|
+
#else
|
|
437
|
+
return temp != T(0) ? T(a / temp * b) : T(0);
|
|
438
|
+
#endif
|
|
439
|
+
}
|
|
390
440
|
|
|
441
|
+
} // namespace detail
|
|
391
442
|
|
|
392
|
-
// Greatest common divisor evaluator member function definition ------------//
|
|
393
443
|
|
|
394
|
-
template <
|
|
395
|
-
inline
|
|
396
|
-
typename gcd_evaluator<IntegerType>::result_type
|
|
397
|
-
gcd_evaluator<IntegerType>::operator ()
|
|
398
|
-
(
|
|
399
|
-
first_argument_type const & a,
|
|
400
|
-
second_argument_type const & b
|
|
401
|
-
) const
|
|
444
|
+
template <typename Integer>
|
|
445
|
+
inline BOOST_CXX14_CONSTEXPR Integer gcd(Integer const &a, Integer const &b) BOOST_GCD_NOEXCEPT(Integer)
|
|
402
446
|
{
|
|
403
|
-
|
|
447
|
+
if(a == (std::numeric_limits<Integer>::min)())
|
|
448
|
+
return a == static_cast<Integer>(0) ? gcd_detail::gcd_traits<Integer>::abs(b) : boost::integer::gcd(static_cast<Integer>(a % b), b);
|
|
449
|
+
else if (b == (std::numeric_limits<Integer>::min)())
|
|
450
|
+
return b == static_cast<Integer>(0) ? gcd_detail::gcd_traits<Integer>::abs(a) : boost::integer::gcd(a, static_cast<Integer>(b % a));
|
|
451
|
+
return gcd_detail::optimal_gcd_select(static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(a)), static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(b)));
|
|
404
452
|
}
|
|
405
453
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
template < typename IntegerType >
|
|
410
|
-
inline
|
|
411
|
-
typename lcm_evaluator<IntegerType>::result_type
|
|
412
|
-
lcm_evaluator<IntegerType>::operator ()
|
|
413
|
-
(
|
|
414
|
-
first_argument_type const & a,
|
|
415
|
-
second_argument_type const & b
|
|
416
|
-
) const
|
|
454
|
+
template <typename Integer>
|
|
455
|
+
inline BOOST_CXX14_CONSTEXPR Integer lcm(Integer const &a, Integer const &b) BOOST_GCD_NOEXCEPT(Integer)
|
|
417
456
|
{
|
|
418
|
-
|
|
457
|
+
return gcd_detail::lcm_imp(static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(a)), static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(b)));
|
|
458
|
+
}
|
|
459
|
+
#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
|
460
|
+
//
|
|
461
|
+
// This looks slightly odd, but the variadic forms must have 3 or more arguments, and the variadic argument pack may be empty.
|
|
462
|
+
// This matters not at all for most compilers, but Oracle C++ selects the wrong overload in the 2-arg case unless we do this.
|
|
463
|
+
//
|
|
464
|
+
template <typename Integer, typename... Args>
|
|
465
|
+
inline BOOST_CXX14_CONSTEXPR Integer gcd(Integer const &a, Integer const &b, const Integer& c, Args const&... args) BOOST_GCD_NOEXCEPT(Integer)
|
|
466
|
+
{
|
|
467
|
+
Integer t = gcd(b, c, args...);
|
|
468
|
+
return t == 1 ? 1 : gcd(a, t);
|
|
419
469
|
}
|
|
420
470
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
template < typename IntegerType >
|
|
425
|
-
inline
|
|
426
|
-
IntegerType
|
|
427
|
-
gcd
|
|
428
|
-
(
|
|
429
|
-
IntegerType const & a,
|
|
430
|
-
IntegerType const & b
|
|
431
|
-
)
|
|
471
|
+
template <typename Integer, typename... Args>
|
|
472
|
+
inline BOOST_CXX14_CONSTEXPR Integer lcm(Integer const &a, Integer const &b, Integer const& c, Args const&... args) BOOST_GCD_NOEXCEPT(Integer)
|
|
432
473
|
{
|
|
433
|
-
|
|
474
|
+
return lcm(a, lcm(b, c, args...));
|
|
475
|
+
}
|
|
476
|
+
#endif
|
|
477
|
+
//
|
|
478
|
+
// Special handling for rationals:
|
|
479
|
+
//
|
|
480
|
+
template <typename Integer>
|
|
481
|
+
inline typename boost::enable_if_c<std::numeric_limits<Integer>::is_specialized, boost::rational<Integer> >::type gcd(boost::rational<Integer> const &a, boost::rational<Integer> const &b)
|
|
482
|
+
{
|
|
483
|
+
return boost::rational<Integer>(static_cast<Integer>(gcd(a.numerator(), b.numerator())), static_cast<Integer>(lcm(a.denominator(), b.denominator())));
|
|
484
|
+
}
|
|
434
485
|
|
|
435
|
-
|
|
486
|
+
template <typename Integer>
|
|
487
|
+
inline typename boost::enable_if_c<std::numeric_limits<Integer>::is_specialized, boost::rational<Integer> >::type lcm(boost::rational<Integer> const &a, boost::rational<Integer> const &b)
|
|
488
|
+
{
|
|
489
|
+
return boost::rational<Integer>(static_cast<Integer>(lcm(a.numerator(), b.numerator())), static_cast<Integer>(gcd(a.denominator(), b.denominator())));
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Knuth, The Art of Computer Programming: Volume 2, Third edition, 1998
|
|
493
|
+
* Chapter 4.5.2, Algorithm C: Greatest common divisor of n integers.
|
|
494
|
+
*
|
|
495
|
+
* Knuth counts down from n to zero but we naturally go from first to last.
|
|
496
|
+
* We also return the termination position because it might be useful to know.
|
|
497
|
+
*
|
|
498
|
+
* Partly by quirk, partly by design, this algorithm is defined for n = 1,
|
|
499
|
+
* because the gcd of {x} is x. It is not defined for n = 0.
|
|
500
|
+
*
|
|
501
|
+
* @tparam I Input iterator.
|
|
502
|
+
* @return The gcd of the range and the iterator position at termination.
|
|
503
|
+
*/
|
|
504
|
+
template <typename I>
|
|
505
|
+
std::pair<typename std::iterator_traits<I>::value_type, I>
|
|
506
|
+
gcd_range(I first, I last) BOOST_GCD_NOEXCEPT(I)
|
|
507
|
+
{
|
|
508
|
+
BOOST_ASSERT(first != last);
|
|
509
|
+
typedef typename std::iterator_traits<I>::value_type T;
|
|
510
|
+
|
|
511
|
+
T d = *first++;
|
|
512
|
+
while (d != T(1) && first != last)
|
|
513
|
+
{
|
|
514
|
+
d = gcd(d, *first);
|
|
515
|
+
first++;
|
|
516
|
+
}
|
|
517
|
+
return std::make_pair(d, first);
|
|
518
|
+
}
|
|
519
|
+
template <typename I>
|
|
520
|
+
std::pair<typename std::iterator_traits<I>::value_type, I>
|
|
521
|
+
lcm_range(I first, I last) BOOST_GCD_NOEXCEPT(I)
|
|
522
|
+
{
|
|
523
|
+
BOOST_ASSERT(first != last);
|
|
524
|
+
typedef typename std::iterator_traits<I>::value_type T;
|
|
525
|
+
|
|
526
|
+
T d = *first++;
|
|
527
|
+
while (d != T(1) && first != last)
|
|
528
|
+
{
|
|
529
|
+
d = lcm(d, *first);
|
|
530
|
+
first++;
|
|
531
|
+
}
|
|
532
|
+
return std::make_pair(d, first);
|
|
436
533
|
}
|
|
437
534
|
|
|
438
535
|
template < typename IntegerType >
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
IntegerType const & a,
|
|
444
|
-
IntegerType const & b
|
|
445
|
-
)
|
|
536
|
+
class gcd_evaluator
|
|
537
|
+
#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
538
|
+
: public std::binary_function<IntegerType, IntegerType, IntegerType>
|
|
539
|
+
#endif
|
|
446
540
|
{
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
541
|
+
public:
|
|
542
|
+
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
543
|
+
typedef IntegerType first_argument_type;
|
|
544
|
+
typedef IntegerType second_argument_type;
|
|
545
|
+
typedef IntegerType result_type;
|
|
546
|
+
#endif
|
|
547
|
+
IntegerType operator()(IntegerType const &a, IntegerType const &b)const
|
|
548
|
+
{
|
|
549
|
+
return boost::integer::gcd(a, b);
|
|
550
|
+
}
|
|
551
|
+
};
|
|
451
552
|
|
|
553
|
+
template < typename IntegerType >
|
|
554
|
+
class lcm_evaluator
|
|
555
|
+
#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
556
|
+
: public std::binary_function<IntegerType, IntegerType, IntegerType>
|
|
557
|
+
#endif
|
|
558
|
+
{
|
|
559
|
+
public:
|
|
560
|
+
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
561
|
+
typedef IntegerType first_argument_type;
|
|
562
|
+
typedef IntegerType second_argument_type;
|
|
563
|
+
typedef IntegerType result_type;
|
|
564
|
+
#endif
|
|
565
|
+
IntegerType operator()(IntegerType const &a, IntegerType const &b)const
|
|
566
|
+
{
|
|
567
|
+
return boost::integer::lcm(a, b);
|
|
568
|
+
}
|
|
569
|
+
};
|
|
452
570
|
|
|
453
571
|
} // namespace integer
|
|
454
572
|
} // namespace boost
|