summaryrefslogtreecommitdiff
path: root/boost
diff options
context:
space:
mode:
Diffstat (limited to 'boost')
-rw-r--r--boost/archive/basic_archive.hpp13
-rw-r--r--boost/archive/codecvt_null.hpp15
-rw-r--r--boost/archive/detail/common_iarchive.hpp3
-rw-r--r--boost/archive/detail/common_oarchive.hpp1
-rw-r--r--boost/archive/detail/iserializer.hpp25
-rw-r--r--boost/archive/detail/oserializer.hpp13
-rw-r--r--boost/archive/detail/utf8_codecvt_facet.hpp34
-rw-r--r--boost/archive/impl/basic_binary_iprimitive.ipp2
-rw-r--r--boost/archive/impl/xml_wiarchive_impl.ipp4
-rw-r--r--boost/archive/impl/xml_woarchive_impl.ipp7
-rw-r--r--boost/archive/iterators/mb_from_wchar.hpp13
-rw-r--r--boost/archive/xml_wiarchive.hpp1
-rw-r--r--boost/asio.hpp30
-rw-r--r--boost/asio/associated_allocator.hpp133
-rw-r--r--boost/asio/associated_executor.hpp151
-rw-r--r--boost/asio/async_result.hpp169
-rw-r--r--boost/asio/basic_datagram_socket.hpp187
-rw-r--r--boost/asio/basic_deadline_timer.hpp178
-rw-r--r--boost/asio/basic_io_object.hpp114
-rw-r--r--boost/asio/basic_raw_socket.hpp186
-rw-r--r--boost/asio/basic_seq_packet_socket.hpp141
-rw-r--r--boost/asio/basic_serial_port.hpp89
-rw-r--r--boost/asio/basic_signal_set.hpp81
-rw-r--r--boost/asio/basic_socket.hpp456
-rw-r--r--boost/asio/basic_socket_acceptor.hpp1061
-rw-r--r--boost/asio/basic_socket_iostream.hpp238
-rw-r--r--boost/asio/basic_socket_streambuf.hpp682
-rw-r--r--boost/asio/basic_stream_socket.hpp161
-rw-r--r--boost/asio/basic_streambuf.hpp113
-rw-r--r--boost/asio/basic_streambuf_fwd.hpp3
-rw-r--r--boost/asio/basic_waitable_timer.hpp282
-rw-r--r--boost/asio/bind_executor.hpp613
-rw-r--r--boost/asio/buffer.hpp2289
-rw-r--r--boost/asio/buffered_read_stream.hpp39
-rw-r--r--boost/asio/buffered_stream.hpp30
-rw-r--r--boost/asio/buffered_write_stream.hpp39
-rw-r--r--boost/asio/buffers_iterator.hpp80
-rw-r--r--boost/asio/connect.hpp686
-rw-r--r--boost/asio/coroutine.hpp12
-rw-r--r--boost/asio/datagram_socket_service.hpp156
-rw-r--r--boost/asio/deadline_timer_service.hpp36
-rw-r--r--boost/asio/defer.hpp109
-rw-r--r--boost/asio/detail/addressof.hpp40
-rw-r--r--boost/asio/detail/bind_handler.hpp479
-rw-r--r--boost/asio/detail/buffer_sequence_adapter.hpp261
-rw-r--r--boost/asio/detail/call_stack.hpp2
-rw-r--r--boost/asio/detail/chrono.hpp68
-rw-r--r--boost/asio/detail/completion_handler.hpp12
-rw-r--r--boost/asio/detail/concurrency_hint.hpp94
-rw-r--r--boost/asio/detail/conditionally_enabled_event.hpp114
-rw-r--r--boost/asio/detail/conditionally_enabled_mutex.hpp151
-rw-r--r--boost/asio/detail/config.hpp323
-rw-r--r--boost/asio/detail/consuming_buffers.hpp450
-rw-r--r--boost/asio/detail/cstddef.hpp33
-rw-r--r--boost/asio/detail/cstdint.hpp14
-rw-r--r--boost/asio/detail/deadline_timer_service.hpp77
-rw-r--r--boost/asio/detail/descriptor_ops.hpp4
-rw-r--r--boost/asio/detail/descriptor_read_op.hpp23
-rw-r--r--boost/asio/detail/descriptor_write_op.hpp23
-rw-r--r--boost/asio/detail/dev_poll_reactor.hpp28
-rw-r--r--boost/asio/detail/epoll_reactor.hpp39
-rw-r--r--boost/asio/detail/executor_op.hpp86
-rw-r--r--boost/asio/detail/functional.hpp (renamed from boost/asio/detail/function.hpp)18
-rw-r--r--boost/asio/detail/gcc_arm_fenced_block.hpp2
-rw-r--r--boost/asio/detail/gcc_hppa_fenced_block.hpp2
-rw-r--r--boost/asio/detail/gcc_sync_fenced_block.hpp2
-rw-r--r--boost/asio/detail/gcc_x86_fenced_block.hpp2
-rw-r--r--boost/asio/detail/global.hpp54
-rw-r--r--boost/asio/detail/handler_alloc_helpers.hpp159
-rw-r--r--boost/asio/detail/handler_cont_helpers.hpp2
-rw-r--r--boost/asio/detail/handler_invoke_helpers.hpp2
-rw-r--r--boost/asio/detail/handler_tracking.hpp97
-rw-r--r--boost/asio/detail/handler_type_requirements.hpp150
-rw-r--r--boost/asio/detail/handler_work.hpp97
-rw-r--r--boost/asio/detail/impl/buffer_sequence_adapter.ipp10
-rw-r--r--boost/asio/detail/impl/descriptor_ops.ipp23
-rw-r--r--boost/asio/detail/impl/dev_poll_reactor.hpp19
-rw-r--r--boost/asio/detail/impl/dev_poll_reactor.ipp45
-rw-r--r--boost/asio/detail/impl/epoll_reactor.hpp19
-rw-r--r--boost/asio/detail/impl/epoll_reactor.ipp164
-rw-r--r--boost/asio/detail/impl/handler_tracking.ipp105
-rw-r--r--boost/asio/detail/impl/kqueue_reactor.hpp23
-rw-r--r--boost/asio/detail/impl/kqueue_reactor.ipp88
-rw-r--r--boost/asio/detail/impl/null_event.ipp76
-rw-r--r--boost/asio/detail/impl/posix_event.ipp12
-rw-r--r--boost/asio/detail/impl/posix_thread.ipp10
-rw-r--r--boost/asio/detail/impl/reactive_descriptor_service.ipp19
-rw-r--r--boost/asio/detail/impl/reactive_serial_port_service.ipp11
-rw-r--r--boost/asio/detail/impl/reactive_socket_service_base.ipp37
-rw-r--r--boost/asio/detail/impl/resolver_service_base.ipp82
-rw-r--r--boost/asio/detail/impl/scheduler.ipp (renamed from boost/asio/detail/impl/task_io_service.ipp)235
-rw-r--r--boost/asio/detail/impl/select_reactor.hpp19
-rw-r--r--boost/asio/detail/impl/select_reactor.ipp65
-rw-r--r--boost/asio/detail/impl/service_registry.hpp64
-rw-r--r--boost/asio/detail/impl/service_registry.ipp67
-rw-r--r--boost/asio/detail/impl/signal_set_service.ipp56
-rw-r--r--boost/asio/detail/impl/socket_ops.ipp153
-rw-r--r--boost/asio/detail/impl/strand_executor_service.hpp181
-rw-r--r--boost/asio/detail/impl/strand_executor_service.ipp126
-rw-r--r--boost/asio/detail/impl/strand_service.hpp24
-rw-r--r--boost/asio/detail/impl/strand_service.ipp27
-rw-r--r--boost/asio/detail/impl/task_io_service.hpp80
-rw-r--r--boost/asio/detail/impl/timer_queue_ptime.ipp15
-rw-r--r--boost/asio/detail/impl/win_event.ipp5
-rw-r--r--boost/asio/detail/impl/win_iocp_handle_service.ipp44
-rw-r--r--boost/asio/detail/impl/win_iocp_io_context.hpp (renamed from boost/asio/detail/impl/win_iocp_io_service.hpp)71
-rw-r--r--boost/asio/detail/impl/win_iocp_io_context.ipp (renamed from boost/asio/detail/impl/win_iocp_io_service.ipp)112
-rw-r--r--boost/asio/detail/impl/win_iocp_serial_port_service.ipp7
-rw-r--r--boost/asio/detail/impl/win_iocp_socket_service_base.ipp90
-rw-r--r--boost/asio/detail/impl/win_object_handle_service.ipp36
-rw-r--r--boost/asio/detail/impl/win_thread.ipp7
-rw-r--r--boost/asio/detail/impl/win_tss_ptr.ipp4
-rw-r--r--boost/asio/detail/impl/winrt_ssocket_service_base.ipp55
-rw-r--r--boost/asio/detail/impl/winrt_timer_scheduler.hpp19
-rw-r--r--boost/asio/detail/impl/winrt_timer_scheduler.ipp16
-rw-r--r--boost/asio/detail/io_control.hpp50
-rw-r--r--boost/asio/detail/is_buffer_sequence.hpp241
-rw-r--r--boost/asio/detail/is_executor.hpp128
-rw-r--r--boost/asio/detail/kqueue_reactor.hpp36
-rw-r--r--boost/asio/detail/macos_fenced_block.hpp1
-rw-r--r--boost/asio/detail/memory.hpp41
-rw-r--r--boost/asio/detail/null_event.hpp20
-rw-r--r--boost/asio/detail/null_fenced_block.hpp2
-rw-r--r--boost/asio/detail/null_global.hpp61
-rw-r--r--boost/asio/detail/null_reactor.hpp17
-rw-r--r--boost/asio/detail/null_socket_service.hpp46
-rw-r--r--boost/asio/detail/null_thread.hpp6
-rw-r--r--boost/asio/detail/object_pool.hpp25
-rw-r--r--boost/asio/detail/operation.hpp4
-rw-r--r--boost/asio/detail/pop_options.hpp4
-rw-r--r--boost/asio/detail/posix_event.hpp33
-rw-r--r--boost/asio/detail/posix_global.hpp82
-rw-r--r--boost/asio/detail/posix_thread.hpp4
-rw-r--r--boost/asio/detail/push_options.hpp9
-rw-r--r--boost/asio/detail/reactive_descriptor_service.hpp104
-rw-r--r--boost/asio/detail/reactive_null_buffers_op.hpp14
-rw-r--r--boost/asio/detail/reactive_serial_port_service.hpp16
-rw-r--r--boost/asio/detail/reactive_socket_accept_op.hpp119
-rw-r--r--boost/asio/detail/reactive_socket_connect_op.hpp19
-rw-r--r--boost/asio/detail/reactive_socket_recv_op.hpp26
-rw-r--r--boost/asio/detail/reactive_socket_recvfrom_op.hpp19
-rw-r--r--boost/asio/detail/reactive_socket_recvmsg_op.hpp21
-rw-r--r--boost/asio/detail/reactive_socket_send_op.hpp34
-rw-r--r--boost/asio/detail/reactive_socket_sendto_op.hpp21
-rw-r--r--boost/asio/detail/reactive_socket_service.hpp128
-rw-r--r--boost/asio/detail/reactive_socket_service_base.hpp129
-rw-r--r--boost/asio/detail/reactive_wait_op.hpp92
-rw-r--r--boost/asio/detail/reactor.hpp2
-rw-r--r--boost/asio/detail/reactor_fwd.hpp2
-rw-r--r--boost/asio/detail/reactor_op.hpp8
-rw-r--r--boost/asio/detail/recycling_allocator.hpp106
-rw-r--r--boost/asio/detail/resolve_endpoint_op.hpp47
-rw-r--r--boost/asio/detail/resolve_op.hpp96
-rw-r--r--boost/asio/detail/resolve_query_op.hpp136
-rw-r--r--boost/asio/detail/resolver_service.hpp58
-rw-r--r--boost/asio/detail/resolver_service_base.hpp47
-rw-r--r--boost/asio/detail/scheduler.hpp (renamed from boost/asio/detail/task_io_service.hpp)100
-rw-r--r--boost/asio/detail/scheduler_operation.hpp (renamed from boost/asio/detail/task_io_service_operation.hpp)34
-rw-r--r--boost/asio/detail/scheduler_thread_info.hpp (renamed from boost/asio/detail/task_io_service_thread_info.hpp)18
-rw-r--r--boost/asio/detail/scoped_ptr.hpp8
-rw-r--r--boost/asio/detail/select_reactor.hpp40
-rw-r--r--boost/asio/detail/service_registry.hpp86
-rw-r--r--boost/asio/detail/shared_ptr.hpp40
-rw-r--r--boost/asio/detail/signal_handler.hpp12
-rw-r--r--boost/asio/detail/signal_set_service.hpp25
-rw-r--r--boost/asio/detail/socket_ops.hpp13
-rw-r--r--boost/asio/detail/socket_types.hpp6
-rw-r--r--boost/asio/detail/solaris_fenced_block.hpp1
-rw-r--r--boost/asio/detail/std_global.hpp72
-rw-r--r--boost/asio/detail/std_thread.hpp6
-rw-r--r--boost/asio/detail/strand_executor_service.hpp140
-rw-r--r--boost/asio/detail/strand_service.hpp18
-rw-r--r--boost/asio/detail/string_view.hpp47
-rw-r--r--boost/asio/detail/thread.hpp12
-rw-r--r--boost/asio/detail/thread_context.hpp44
-rw-r--r--boost/asio/detail/thread_group.hpp91
-rw-r--r--boost/asio/detail/thread_info_base.hpp11
-rw-r--r--boost/asio/detail/timer_queue.hpp29
-rw-r--r--boost/asio/detail/timer_queue_ptime.hpp14
-rw-r--r--boost/asio/detail/timer_scheduler.hpp2
-rw-r--r--boost/asio/detail/timer_scheduler_fwd.hpp2
-rw-r--r--boost/asio/detail/type_traits.hpp22
-rw-r--r--boost/asio/detail/variadic_templates.hpp98
-rw-r--r--boost/asio/detail/wait_handler.hpp12
-rw-r--r--boost/asio/detail/weak_ptr.hpp40
-rw-r--r--boost/asio/detail/win_event.hpp21
-rw-r--r--boost/asio/detail/win_fenced_block.hpp1
-rw-r--r--boost/asio/detail/win_global.hpp75
-rw-r--r--boost/asio/detail/win_iocp_handle_read_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_handle_service.hpp39
-rw-r--r--boost/asio/detail/win_iocp_handle_write_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_io_context.hpp (renamed from boost/asio/detail/win_iocp_io_service.hpp)75
-rw-r--r--boost/asio/detail/win_iocp_null_buffers_op.hpp14
-rw-r--r--boost/asio/detail/win_iocp_operation.hpp13
-rw-r--r--boost/asio/detail/win_iocp_overlapped_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_overlapped_ptr.hpp25
-rw-r--r--boost/asio/detail/win_iocp_serial_port_service.hpp16
-rw-r--r--boost/asio/detail/win_iocp_socket_accept_op.hpp140
-rw-r--r--boost/asio/detail/win_iocp_socket_connect_op.hpp15
-rw-r--r--boost/asio/detail/win_iocp_socket_recv_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_socket_recvfrom_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_socket_recvmsg_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_socket_send_op.hpp10
-rw-r--r--boost/asio/detail/win_iocp_socket_service.hpp135
-rw-r--r--boost/asio/detail/win_iocp_socket_service_base.hpp153
-rw-r--r--boost/asio/detail/win_iocp_wait_op.hpp123
-rw-r--r--boost/asio/detail/win_object_handle_service.hpp21
-rw-r--r--boost/asio/detail/win_thread.hpp4
-rw-r--r--boost/asio/detail/winapp_thread.hpp (renamed from boost/asio/detail/winapi_thread.hpp)44
-rw-r--r--boost/asio/detail/wince_thread.hpp126
-rw-r--r--boost/asio/detail/winrt_async_manager.hpp26
-rw-r--r--boost/asio/detail/winrt_resolve_op.hpp25
-rw-r--r--boost/asio/detail/winrt_resolver_service.hpp65
-rw-r--r--boost/asio/detail/winrt_socket_connect_op.hpp12
-rw-r--r--boost/asio/detail/winrt_socket_recv_op.hpp10
-rw-r--r--boost/asio/detail/winrt_socket_send_op.hpp10
-rw-r--r--boost/asio/detail/winrt_ssocket_service.hpp22
-rw-r--r--boost/asio/detail/winrt_ssocket_service_base.hpp32
-rw-r--r--boost/asio/detail/winrt_timer_scheduler.hpp20
-rw-r--r--boost/asio/detail/winrt_utils.hpp6
-rw-r--r--boost/asio/detail/work_dispatcher.hpp74
-rw-r--r--boost/asio/dispatch.hpp110
-rw-r--r--boost/asio/error.hpp16
-rw-r--r--boost/asio/execution_context.hpp413
-rw-r--r--boost/asio/executor.hpp343
-rw-r--r--boost/asio/executor_work_guard.hpp171
-rw-r--r--boost/asio/generic/detail/impl/endpoint.ipp3
-rw-r--r--boost/asio/handler_invoke_hook.hpp6
-rw-r--r--boost/asio/handler_type.hpp82
-rw-r--r--boost/asio/high_resolution_timer.hpp25
-rw-r--r--boost/asio/impl/buffered_read_stream.hpp99
-rw-r--r--boost/asio/impl/buffered_write_stream.hpp109
-rw-r--r--boost/asio/impl/connect.hpp666
-rw-r--r--boost/asio/impl/defer.hpp79
-rw-r--r--boost/asio/impl/dispatch.hpp80
-rw-r--r--boost/asio/impl/execution_context.hpp109
-rw-r--r--boost/asio/impl/execution_context.ipp84
-rw-r--r--boost/asio/impl/executor.hpp388
-rw-r--r--boost/asio/impl/executor.ipp (renamed from boost/asio/ssl/basic_context.hpp)28
-rw-r--r--boost/asio/impl/handler_alloc_hook.ipp37
-rw-r--r--boost/asio/impl/io_context.hpp345
-rw-r--r--boost/asio/impl/io_context.ipp176
-rw-r--r--boost/asio/impl/io_service.hpp156
-rw-r--r--boost/asio/impl/io_service.ipp157
-rw-r--r--boost/asio/impl/post.hpp79
-rw-r--r--boost/asio/impl/read.hpp718
-rw-r--r--boost/asio/impl/read_at.hpp514
-rw-r--r--boost/asio/impl/read_until.hpp763
-rw-r--r--boost/asio/impl/serial_port_base.ipp58
-rw-r--r--boost/asio/impl/spawn.hpp308
-rw-r--r--boost/asio/impl/src.hpp14
-rw-r--r--boost/asio/impl/system_context.hpp (renamed from boost/asio/ssl/context_service.hpp)26
-rw-r--r--boost/asio/impl/system_context.ipp75
-rw-r--r--boost/asio/impl/system_executor.hpp87
-rw-r--r--boost/asio/impl/thread_pool.hpp129
-rw-r--r--boost/asio/impl/thread_pool.ipp78
-rw-r--r--boost/asio/impl/use_future.hpp947
-rw-r--r--boost/asio/impl/write.hpp805
-rw-r--r--boost/asio/impl/write_at.hpp581
-rw-r--r--boost/asio/io_context.hpp878
-rw-r--r--boost/asio/io_context_strand.hpp384
-rw-r--r--boost/asio/io_service.hpp747
-rw-r--r--boost/asio/io_service_strand.hpp20
-rw-r--r--boost/asio/ip/address.hpp96
-rw-r--r--boost/asio/ip/address_v4.hpp132
-rw-r--r--boost/asio/ip/address_v4_iterator.hpp164
-rw-r--r--boost/asio/ip/address_v4_range.hpp136
-rw-r--r--boost/asio/ip/address_v6.hpp116
-rw-r--r--boost/asio/ip/address_v6_iterator.hpp185
-rw-r--r--boost/asio/ip/address_v6_range.hpp131
-rw-r--r--boost/asio/ip/bad_address_cast.hpp50
-rw-r--r--boost/asio/ip/basic_endpoint.hpp8
-rw-r--r--boost/asio/ip/basic_resolver.hpp890
-rw-r--r--boost/asio/ip/basic_resolver_entry.hpp25
-rw-r--r--boost/asio/ip/basic_resolver_iterator.hpp128
-rw-r--r--boost/asio/ip/basic_resolver_results.hpp313
-rw-r--r--boost/asio/ip/detail/endpoint.hpp2
-rw-r--r--boost/asio/ip/detail/impl/endpoint.ipp13
-rw-r--r--boost/asio/ip/detail/socket_option.hpp33
-rw-r--r--boost/asio/ip/impl/address.hpp40
-rw-r--r--boost/asio/ip/impl/address.ipp100
-rw-r--r--boost/asio/ip/impl/address_v4.hpp40
-rw-r--r--boost/asio/ip/impl/address_v4.ipp118
-rw-r--r--boost/asio/ip/impl/address_v6.hpp40
-rw-r--r--boost/asio/ip/impl/address_v6.ipp116
-rw-r--r--boost/asio/ip/impl/basic_endpoint.hpp14
-rw-r--r--boost/asio/ip/impl/network_v4.hpp56
-rw-r--r--boost/asio/ip/impl/network_v4.ipp217
-rw-r--r--boost/asio/ip/impl/network_v6.hpp55
-rw-r--r--boost/asio/ip/impl/network_v6.ipp186
-rw-r--r--boost/asio/ip/multicast.hpp14
-rw-r--r--boost/asio/ip/network_v4.hpp263
-rw-r--r--boost/asio/ip/network_v6.hpp237
-rw-r--r--boost/asio/ip/resolver_base.hpp131
-rw-r--r--boost/asio/ip/resolver_query_base.hpp91
-rw-r--r--boost/asio/ip/resolver_service.hpp70
-rw-r--r--boost/asio/ip/tcp.hpp4
-rw-r--r--boost/asio/ip/unicast.hpp4
-rw-r--r--boost/asio/ip/v6_only.hpp4
-rw-r--r--boost/asio/is_executor.hpp48
-rw-r--r--boost/asio/local/connect_pair.hpp42
-rw-r--r--boost/asio/local/detail/impl/endpoint.ipp3
-rw-r--r--boost/asio/packaged_task.hpp128
-rw-r--r--boost/asio/placeholders.hpp30
-rw-r--r--boost/asio/posix/basic_descriptor.hpp182
-rw-r--r--boost/asio/posix/basic_stream_descriptor.hpp28
-rw-r--r--boost/asio/posix/descriptor.hpp646
-rw-r--r--boost/asio/posix/descriptor_base.hpp39
-rw-r--r--boost/asio/posix/stream_descriptor.hpp327
-rw-r--r--boost/asio/posix/stream_descriptor_service.hpp105
-rw-r--r--boost/asio/post.hpp109
-rw-r--r--boost/asio/raw_socket_service.hpp156
-rw-r--r--boost/asio/read.hpp338
-rw-r--r--boost/asio/read_at.hpp17
-rw-r--r--boost/asio/read_until.hpp967
-rw-r--r--boost/asio/seq_packet_socket_service.hpp142
-rw-r--r--boost/asio/serial_port.hpp737
-rw-r--r--boost/asio/serial_port_base.hpp20
-rw-r--r--boost/asio/serial_port_service.hpp84
-rw-r--r--boost/asio/signal_set.hpp423
-rw-r--r--boost/asio/signal_set_service.hpp54
-rw-r--r--boost/asio/socket_acceptor_service.hpp160
-rw-r--r--boost/asio/socket_base.hpp129
-rw-r--r--boost/asio/spawn.hpp105
-rw-r--r--boost/asio/ssl.hpp3
-rw-r--r--boost/asio/ssl/context.hpp93
-rw-r--r--boost/asio/ssl/detail/buffered_handshake_op.hpp48
-rw-r--r--boost/asio/ssl/detail/engine.hpp22
-rw-r--r--boost/asio/ssl/detail/handshake_op.hpp8
-rw-r--r--boost/asio/ssl/detail/impl/engine.ipp45
-rw-r--r--boost/asio/ssl/detail/impl/openssl_init.ipp5
-rw-r--r--boost/asio/ssl/detail/io.hpp53
-rw-r--r--boost/asio/ssl/detail/openssl_init.hpp2
-rw-r--r--boost/asio/ssl/detail/password_callback.hpp12
-rw-r--r--boost/asio/ssl/detail/read_op.hpp10
-rw-r--r--boost/asio/ssl/detail/shutdown_op.hpp8
-rw-r--r--boost/asio/ssl/detail/stream_core.hpp44
-rw-r--r--boost/asio/ssl/detail/verify_callback.hpp8
-rw-r--r--boost/asio/ssl/detail/write_op.hpp10
-rw-r--r--boost/asio/ssl/impl/context.hpp18
-rw-r--r--boost/asio/ssl/impl/context.ipp167
-rw-r--r--boost/asio/ssl/impl/rfc2818_verification.ipp18
-rw-r--r--boost/asio/ssl/old/basic_context.hpp436
-rw-r--r--boost/asio/ssl/old/context_service.hpp176
-rw-r--r--boost/asio/ssl/old/detail/openssl_context_service.hpp396
-rw-r--r--boost/asio/ssl/old/detail/openssl_operation.hpp526
-rw-r--r--boost/asio/ssl/old/detail/openssl_stream_service.hpp573
-rw-r--r--boost/asio/ssl/old/stream.hpp503
-rw-r--r--boost/asio/ssl/old/stream_service.hpp186
-rw-r--r--boost/asio/ssl/rfc2818_verification.hpp18
-rw-r--r--boost/asio/ssl/stream.hpp173
-rw-r--r--boost/asio/ssl/stream_service.hpp42
-rw-r--r--boost/asio/ssl/verify_context.hpp10
-rw-r--r--boost/asio/steady_timer.hpp25
-rw-r--r--boost/asio/strand.hpp382
-rw-r--r--boost/asio/stream_socket_service.hpp142
-rw-r--r--boost/asio/system_context.hpp80
-rw-r--r--boost/asio/system_executor.hpp131
-rw-r--r--boost/asio/system_timer.hpp21
-rw-r--r--boost/asio/thread_pool.hpp234
-rw-r--r--boost/asio/ts/buffer.hpp24
-rw-r--r--boost/asio/ts/executor.hpp35
-rw-r--r--boost/asio/ts/internet.hpp40
-rw-r--r--boost/asio/ts/io_context.hpp20
-rw-r--r--boost/asio/ts/net.hpp26
-rw-r--r--boost/asio/ts/netfwd.hpp199
-rw-r--r--boost/asio/ts/socket.hpp27
-rw-r--r--boost/asio/ts/timer.hpp26
-rw-r--r--boost/asio/use_future.hpp77
-rw-r--r--boost/asio/uses_executor.hpp73
-rw-r--r--boost/asio/version.hpp2
-rw-r--r--boost/asio/wait_traits.hpp17
-rw-r--r--boost/asio/waitable_timer_service.hpp80
-rw-r--r--boost/asio/windows/basic_handle.hpp50
-rw-r--r--boost/asio/windows/basic_object_handle.hpp22
-rw-r--r--boost/asio/windows/basic_random_access_handle.hpp28
-rw-r--r--boost/asio/windows/basic_stream_handle.hpp28
-rw-r--r--boost/asio/windows/object_handle.hpp347
-rw-r--r--boost/asio/windows/object_handle_service.hpp44
-rw-r--r--boost/asio/windows/overlapped_handle.hpp333
-rw-r--r--boost/asio/windows/overlapped_ptr.hpp10
-rw-r--r--boost/asio/windows/random_access_handle.hpp345
-rw-r--r--boost/asio/windows/random_access_handle_service.hpp66
-rw-r--r--boost/asio/windows/stream_handle.hpp329
-rw-r--r--boost/asio/windows/stream_handle_service.hpp64
-rw-r--r--boost/asio/write.hpp331
-rw-r--r--boost/asio/write_at.hpp17
-rw-r--r--boost/atomic/atomic.hpp1
-rw-r--r--boost/atomic/capabilities.hpp2
-rw-r--r--boost/atomic/detail/atomic_template.hpp118
-rw-r--r--boost/atomic/detail/caps_gcc_arm.hpp19
-rw-r--r--boost/atomic/detail/caps_gcc_atomic.hpp11
-rw-r--r--boost/atomic/detail/caps_gcc_ppc.hpp3
-rw-r--r--boost/atomic/detail/caps_gcc_sync.hpp11
-rw-r--r--boost/atomic/detail/caps_gcc_x86.hpp37
-rw-r--r--boost/atomic/detail/config.hpp26
-rw-r--r--boost/atomic/detail/extra_operations.hpp27
-rw-r--r--boost/atomic/detail/extra_operations_fwd.hpp35
-rw-r--r--boost/atomic/detail/extra_ops_gcc_arm.hpp336
-rw-r--r--boost/atomic/detail/extra_ops_gcc_ppc.hpp274
-rw-r--r--boost/atomic/detail/extra_ops_gcc_x86.hpp1382
-rw-r--r--boost/atomic/detail/extra_ops_generic.hpp162
-rw-r--r--boost/atomic/detail/extra_ops_msvc_arm.hpp106
-rw-r--r--boost/atomic/detail/extra_ops_msvc_x86.hpp866
-rw-r--r--boost/atomic/detail/hwcaps_gcc_arm.hpp67
-rw-r--r--boost/atomic/detail/hwcaps_gcc_ppc.hpp42
-rw-r--r--boost/atomic/detail/hwcaps_gcc_x86.hpp58
-rw-r--r--boost/atomic/detail/interlocked.hpp36
-rw-r--r--boost/atomic/detail/operations_lockfree.hpp2
-rw-r--r--boost/atomic/detail/ops_emulated.hpp3
-rw-r--r--boost/atomic/detail/ops_gcc_alpha.hpp7
-rw-r--r--boost/atomic/detail/ops_gcc_arm.hpp661
-rw-r--r--boost/atomic/detail/ops_gcc_arm_common.hpp133
-rw-r--r--boost/atomic/detail/ops_gcc_atomic.hpp56
-rw-r--r--boost/atomic/detail/ops_gcc_ppc.hpp516
-rw-r--r--boost/atomic/detail/ops_gcc_ppc_common.hpp69
-rw-r--r--boost/atomic/detail/ops_gcc_sparc.hpp7
-rw-r--r--boost/atomic/detail/ops_gcc_sync.hpp26
-rw-r--r--boost/atomic/detail/ops_gcc_x86.hpp141
-rw-r--r--boost/atomic/detail/ops_gcc_x86_dcas.hpp64
-rw-r--r--boost/atomic/detail/ops_linux_arm.hpp4
-rw-r--r--boost/atomic/detail/ops_msvc_arm.hpp13
-rw-r--r--boost/atomic/detail/ops_msvc_x86.hpp25
-rw-r--r--boost/atomic/detail/ops_windows.hpp4
-rw-r--r--boost/atomic/detail/platform.hpp123
-rw-r--r--boost/atomic/detail/storage_type.hpp4
-rw-r--r--boost/beast.hpp21
-rw-r--r--boost/beast/core.hpp41
-rw-r--r--boost/beast/core/bind_handler.hpp80
-rw-r--r--boost/beast/core/buffered_read_stream.hpp373
-rw-r--r--boost/beast/core/buffers_adapter.hpp164
-rw-r--r--boost/beast/core/buffers_cat.hpp119
-rw-r--r--boost/beast/core/buffers_prefix.hpp237
-rw-r--r--boost/beast/core/buffers_suffix.hpp161
-rw-r--r--boost/beast/core/buffers_to_string.hpp59
-rw-r--r--boost/beast/core/detail/allocator.hpp42
-rw-r--r--boost/beast/core/detail/base64.hpp251
-rw-r--r--boost/beast/core/detail/bind_handler.hpp189
-rw-r--r--boost/beast/core/detail/buffers_ref.hpp67
-rw-r--r--boost/beast/core/detail/clamp.hpp59
-rw-r--r--boost/beast/core/detail/config.hpp57
-rw-r--r--boost/beast/core/detail/cpu_info.hpp99
-rw-r--r--boost/beast/core/detail/empty_base_optimization.hpp100
-rw-r--r--boost/beast/core/detail/in_place_init.hpp43
-rw-r--r--boost/beast/core/detail/integer_sequence.hpp143
-rw-r--r--boost/beast/core/detail/ostream.hpp319
-rw-r--r--boost/beast/core/detail/sha1.hpp313
-rw-r--r--boost/beast/core/detail/static_ostream.hpp142
-rw-r--r--boost/beast/core/detail/static_string.hpp135
-rw-r--r--boost/beast/core/detail/type_traits.hpp353
-rw-r--r--boost/beast/core/detail/variant.hpp195
-rw-r--r--boost/beast/core/detail/varint.hpp79
-rw-r--r--boost/beast/core/error.hpp58
-rw-r--r--boost/beast/core/file.hpp45
-rw-r--r--boost/beast/core/file_base.hpp89
-rw-r--r--boost/beast/core/file_posix.hpp175
-rw-r--r--boost/beast/core/file_stdio.hpp158
-rw-r--r--boost/beast/core/file_win32.hpp177
-rw-r--r--boost/beast/core/flat_buffer.hpp342
-rw-r--r--boost/beast/core/flat_static_buffer.hpp254
-rw-r--r--boost/beast/core/handler_ptr.hpp213
-rw-r--r--boost/beast/core/impl/buffered_read_stream.ipp248
-rw-r--r--boost/beast/core/impl/buffers_adapter.ipp517
-rw-r--r--boost/beast/core/impl/buffers_cat.ipp503
-rw-r--r--boost/beast/core/impl/buffers_prefix.ipp258
-rw-r--r--boost/beast/core/impl/buffers_suffix.ipp249
-rw-r--r--boost/beast/core/impl/file_posix.ipp349
-rw-r--r--boost/beast/core/impl/file_stdio.ipp239
-rw-r--r--boost/beast/core/impl/file_win32.ipp364
-rw-r--r--boost/beast/core/impl/flat_buffer.ipp475
-rw-r--r--boost/beast/core/impl/flat_static_buffer.ipp151
-rw-r--r--boost/beast/core/impl/handler_ptr.ipp147
-rw-r--r--boost/beast/core/impl/multi_buffer.ipp1063
-rw-r--r--boost/beast/core/impl/read_size.ipp80
-rw-r--r--boost/beast/core/impl/static_buffer.ipp148
-rw-r--r--boost/beast/core/impl/static_string.ipp618
-rw-r--r--boost/beast/core/impl/string_param.ipp108
-rw-r--r--boost/beast/core/multi_buffer.hpp322
-rw-r--r--boost/beast/core/ostream.hpp104
-rw-r--r--boost/beast/core/read_size.hpp64
-rw-r--r--boost/beast/core/span.hpp215
-rw-r--r--boost/beast/core/static_buffer.hpp217
-rw-r--r--boost/beast/core/static_string.hpp1112
-rw-r--r--boost/beast/core/string.hpp155
-rw-r--r--boost/beast/core/string_param.hpp130
-rw-r--r--boost/beast/core/type_traits.hpp490
-rw-r--r--boost/beast/http.hpp38
-rw-r--r--boost/beast/http/basic_dynamic_body.hpp169
-rw-r--r--boost/beast/http/basic_file_body.hpp538
-rw-r--r--boost/beast/http/basic_parser.hpp621
-rw-r--r--boost/beast/http/buffer_body.hpp228
-rw-r--r--boost/beast/http/chunk_encode.hpp736
-rw-r--r--boost/beast/http/detail/basic_parsed_list.hpp198
-rw-r--r--boost/beast/http/detail/basic_parser.hpp896
-rw-r--r--boost/beast/http/detail/chunk_encode.hpp247
-rw-r--r--boost/beast/http/detail/rfc7230.hpp473
-rw-r--r--boost/beast/http/detail/type_traits.hpp202
-rw-r--r--boost/beast/http/dynamic_body.hpp30
-rw-r--r--boost/beast/http/empty_body.hpp132
-rw-r--r--boost/beast/http/error.hpp161
-rw-r--r--boost/beast/http/field.hpp409
-rw-r--r--boost/beast/http/fields.hpp755
-rw-r--r--boost/beast/http/file_body.hpp35
-rw-r--r--boost/beast/http/impl/basic_parser.ipp928
-rw-r--r--boost/beast/http/impl/chunk_encode.ipp707
-rw-r--r--boost/beast/http/impl/error.ipp120
-rw-r--r--boost/beast/http/impl/field.ipp561
-rw-r--r--boost/beast/http/impl/fields.ipp1380
-rw-r--r--boost/beast/http/impl/file_body_win32.ipp584
-rw-r--r--boost/beast/http/impl/message.ipp437
-rw-r--r--boost/beast/http/impl/parser.ipp56
-rw-r--r--boost/beast/http/impl/read.ipp821
-rw-r--r--boost/beast/http/impl/rfc7230.ipp572
-rw-r--r--boost/beast/http/impl/serializer.ipp430
-rw-r--r--boost/beast/http/impl/status.ipp252
-rw-r--r--boost/beast/http/impl/verb.ipp337
-rw-r--r--boost/beast/http/impl/write.ipp887
-rw-r--r--boost/beast/http/message.hpp999
-rw-r--r--boost/beast/http/parser.hpp436
-rw-r--r--boost/beast/http/read.hpp765
-rw-r--r--boost/beast/http/rfc7230.hpp329
-rw-r--r--boost/beast/http/serializer.hpp370
-rw-r--r--boost/beast/http/span_body.hpp171
-rw-r--r--boost/beast/http/status.hpp167
-rw-r--r--boost/beast/http/string_body.hpp199
-rw-r--r--boost/beast/http/type_traits.hpp185
-rw-r--r--boost/beast/http/vector_body.hpp185
-rw-r--r--boost/beast/http/verb.hpp157
-rw-r--r--boost/beast/http/write.hpp569
-rw-r--r--boost/beast/version.hpp28
-rw-r--r--boost/beast/websocket.hpp21
-rw-r--r--boost/beast/websocket/detail/frame.hpp304
-rw-r--r--boost/beast/websocket/detail/hybi13.hpp75
-rw-r--r--boost/beast/websocket/detail/mask.hpp267
-rw-r--r--boost/beast/websocket/detail/pausation.hpp229
-rw-r--r--boost/beast/websocket/detail/pmd_extension.hpp442
-rw-r--r--boost/beast/websocket/detail/type_traits.hpp36
-rw-r--r--boost/beast/websocket/detail/utf8_checker.hpp344
-rw-r--r--boost/beast/websocket/error.hpp45
-rw-r--r--boost/beast/websocket/impl/accept.ipp757
-rw-r--r--boost/beast/websocket/impl/close.ipp459
-rw-r--r--boost/beast/websocket/impl/error.ipp96
-rw-r--r--boost/beast/websocket/impl/handshake.ipp407
-rw-r--r--boost/beast/websocket/impl/ping.ipp271
-rw-r--r--boost/beast/websocket/impl/read.ipp1323
-rw-r--r--boost/beast/websocket/impl/rfc6455.ipp40
-rw-r--r--boost/beast/websocket/impl/ssl.ipp61
-rw-r--r--boost/beast/websocket/impl/stream.ipp717
-rw-r--r--boost/beast/websocket/impl/teardown.ipp187
-rw-r--r--boost/beast/websocket/impl/write.ipp797
-rw-r--r--boost/beast/websocket/option.hpp73
-rw-r--r--boost/beast/websocket/rfc6455.hpp215
-rw-r--r--boost/beast/websocket/role.hpp59
-rw-r--r--boost/beast/websocket/ssl.hpp84
-rw-r--r--boost/beast/websocket/stream.hpp3458
-rw-r--r--boost/beast/websocket/teardown.hpp174
-rw-r--r--boost/beast/zlib.hpp20
-rw-r--r--boost/beast/zlib/deflate_stream.hpp404
-rw-r--r--boost/beast/zlib/detail/bitstream.hpp207
-rw-r--r--boost/beast/zlib/detail/deflate_stream.hpp3006
-rw-r--r--boost/beast/zlib/detail/inflate_stream.hpp1310
-rw-r--r--boost/beast/zlib/detail/ranges.hpp104
-rw-r--r--boost/beast/zlib/detail/window.hpp167
-rw-r--r--boost/beast/zlib/error.hpp139
-rw-r--r--boost/beast/zlib/impl/error.ipp140
-rw-r--r--boost/beast/zlib/inflate_stream.hpp220
-rw-r--r--boost/beast/zlib/zlib.hpp184
-rw-r--r--boost/bimap/container_adaptor/detail/comparison_adaptor.hpp18
-rw-r--r--boost/bimap/container_adaptor/detail/key_extractor.hpp8
-rw-r--r--boost/bimap/detail/modifier_adaptor.hpp10
-rw-r--r--boost/bimap/relation/support/data_extractor.hpp13
-rw-r--r--boost/bind/bind.hpp37
-rw-r--r--boost/bind/bind_cc.hpp60
-rw-r--r--boost/bind/bind_mf_cc.hpp72
-rw-r--r--boost/callable_traits.hpp47
-rw-r--r--boost/callable_traits/add_member_const.hpp105
-rw-r--r--boost/callable_traits/add_member_cv.hpp101
-rw-r--r--boost/callable_traits/add_member_lvalue_reference.hpp114
-rw-r--r--boost/callable_traits/add_member_rvalue_reference.hpp113
-rw-r--r--boost/callable_traits/add_member_volatile.hpp100
-rw-r--r--boost/callable_traits/add_noexcept.hpp108
-rw-r--r--boost/callable_traits/add_transaction_safe.hpp110
-rw-r--r--boost/callable_traits/add_varargs.hpp90
-rw-r--r--boost/callable_traits/apply_member_pointer.hpp123
-rw-r--r--boost/callable_traits/apply_return.hpp109
-rw-r--r--boost/callable_traits/args.hpp97
-rw-r--r--boost/callable_traits/class_of.hpp75
-rw-r--r--boost/callable_traits/detail/config.hpp109
-rw-r--r--boost/callable_traits/detail/core.hpp19
-rw-r--r--boost/callable_traits/detail/default_callable_traits.hpp207
-rw-r--r--boost/callable_traits/detail/forward_declarations.hpp54
-rw-r--r--boost/callable_traits/detail/function.hpp192
-rw-r--r--boost/callable_traits/detail/function_object.hpp107
-rw-r--r--boost/callable_traits/detail/is_invocable_impl.hpp148
-rw-r--r--boost/callable_traits/detail/parameter_index_helper.hpp51
-rw-r--r--boost/callable_traits/detail/pmd.hpp53
-rw-r--r--boost/callable_traits/detail/pmf.hpp97
-rw-r--r--boost/callable_traits/detail/polyfills/disjunction.hpp31
-rw-r--r--boost/callable_traits/detail/polyfills/make_index_sequence.hpp50
-rw-r--r--boost/callable_traits/detail/qualifier_flags.hpp123
-rw-r--r--boost/callable_traits/detail/set_function_qualifiers.hpp120
-rw-r--r--boost/callable_traits/detail/sfinae_errors.hpp89
-rw-r--r--boost/callable_traits/detail/traits.hpp29
-rw-r--r--boost/callable_traits/detail/unguarded/function.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/function_2.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/function_3.hpp260
-rw-r--r--boost/callable_traits/detail/unguarded/function_ptr.hpp25
-rw-r--r--boost/callable_traits/detail/unguarded/function_ptr_2.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/function_ptr_3.hpp94
-rw-r--r--boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp98
-rw-r--r--boost/callable_traits/detail/unguarded/pmf.hpp94
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_2.hpp74
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_3.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_4.hpp147
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_varargs.hpp89
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp78
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp23
-rw-r--r--boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp149
-rw-r--r--boost/callable_traits/detail/utility.hpp111
-rw-r--r--boost/callable_traits/function_type.hpp97
-rw-r--r--boost/callable_traits/has_member_qualifiers.hpp99
-rw-r--r--boost/callable_traits/has_varargs.hpp94
-rw-r--r--boost/callable_traits/has_void_return.hpp93
-rw-r--r--boost/callable_traits/is_const_member.hpp97
-rw-r--r--boost/callable_traits/is_cv_member.hpp95
-rw-r--r--boost/callable_traits/is_invocable.hpp103
-rw-r--r--boost/callable_traits/is_lvalue_reference_member.hpp95
-rw-r--r--boost/callable_traits/is_noexcept.hpp95
-rw-r--r--boost/callable_traits/is_reference_member.hpp98
-rw-r--r--boost/callable_traits/is_rvalue_reference_member.hpp97
-rw-r--r--boost/callable_traits/is_transaction_safe.hpp98
-rw-r--r--boost/callable_traits/is_volatile_member.hpp100
-rw-r--r--boost/callable_traits/qualified_class_of.hpp81
-rw-r--r--boost/callable_traits/remove_member_const.hpp85
-rw-r--r--boost/callable_traits/remove_member_cv.hpp87
-rw-r--r--boost/callable_traits/remove_member_reference.hpp85
-rw-r--r--boost/callable_traits/remove_member_volatile.hpp85
-rw-r--r--boost/callable_traits/remove_noexcept.hpp93
-rw-r--r--boost/callable_traits/remove_transaction_safe.hpp93
-rw-r--r--boost/callable_traits/remove_varargs.hpp91
-rw-r--r--boost/callable_traits/return_type.hpp90
-rw-r--r--boost/chrono/detail/system.hpp10
-rw-r--r--boost/chrono/io/duration_get.hpp6
-rw-r--r--boost/chrono/io/time_point_io.hpp4
-rw-r--r--boost/chrono/io_v1/chrono_io.hpp6
-rw-r--r--boost/compute/algorithm/copy.hpp16
-rw-r--r--boost/compute/algorithm/detail/scan_on_cpu.hpp10
-rw-r--r--boost/compute/cl_ext.hpp18
-rw-r--r--boost/compute/command_queue.hpp116
-rw-r--r--boost/compute/container/vector.hpp66
-rw-r--r--boost/compute/detail/get_object_info.hpp68
-rw-r--r--boost/compute/device.hpp91
-rw-r--r--boost/compute/interop/opengl/cl_gl_ext.hpp18
-rw-r--r--boost/compute/interop/opengl/context.hpp8
-rw-r--r--boost/compute/iterator/strided_iterator.hpp4
-rw-r--r--boost/compute/kernel.hpp117
-rw-r--r--boost/compute/platform.hpp23
-rw-r--r--boost/compute/program.hpp121
-rw-r--r--boost/compute/types.hpp1
-rw-r--r--boost/compute/types/size_t.hpp60
-rw-r--r--boost/config/auto_link.hpp30
-rw-r--r--boost/config/compiler/clang.hpp5
-rw-r--r--boost/config/compiler/cray.hpp34
-rw-r--r--boost/config/compiler/gcc.hpp10
-rw-r--r--boost/config/compiler/intel.hpp8
-rw-r--r--boost/config/compiler/pgi.hpp161
-rw-r--r--boost/config/compiler/sunpro_cc.hpp6
-rw-r--r--boost/config/compiler/vacpp.hpp5
-rw-r--r--boost/config/compiler/visualc.hpp10
-rw-r--r--boost/config/compiler/xlcpp.hpp5
-rw-r--r--boost/config/compiler/xlcpp_zos.hpp1
-rw-r--r--boost/config/detail/select_compiler_config.hpp8
-rw-r--r--boost/config/detail/suffix.hpp8
-rw-r--r--boost/config/stdlib/dinkumware.hpp1
-rw-r--r--boost/config/stdlib/libcomo.hpp1
-rw-r--r--boost/config/stdlib/libcpp.hpp2
-rw-r--r--boost/config/stdlib/libstdcpp3.hpp1
-rw-r--r--boost/config/stdlib/modena.hpp1
-rw-r--r--boost/config/stdlib/msl.hpp1
-rw-r--r--boost/config/stdlib/roguewave.hpp1
-rw-r--r--boost/config/stdlib/sgi.hpp1
-rw-r--r--boost/config/stdlib/stlport.hpp1
-rw-r--r--boost/config/stdlib/vacpp.hpp1
-rw-r--r--boost/config/stdlib/xlcpp_zos.hpp1
-rw-r--r--boost/container/detail/advanced_insert_int.hpp2
-rw-r--r--boost/container/detail/container_or_allocator_rebind.hpp49
-rw-r--r--boost/container/detail/container_rebind.hpp258
-rw-r--r--boost/container/detail/copy_move_algo.hpp14
-rw-r--r--boost/container/detail/destroyers.hpp4
-rw-r--r--boost/container/detail/flat_tree.hpp522
-rw-r--r--boost/container/detail/is_container.hpp55
-rw-r--r--boost/container/detail/is_contiguous_container.hpp47
-rw-r--r--boost/container/detail/workaround.hpp6
-rw-r--r--boost/container/flat_map.hpp376
-rw-r--r--boost/container/flat_set.hpp370
-rw-r--r--boost/container/pmr/polymorphic_allocator.hpp8
-rw-r--r--boost/container/static_vector.hpp15
-rw-r--r--boost/container/string.hpp82
-rw-r--r--boost/container/throw_exception.hpp20
-rw-r--r--boost/container/vector.hpp91
-rw-r--r--boost/context/continuation_fcontext.hpp29
-rw-r--r--boost/context/continuation_ucontext.hpp81
-rw-r--r--boost/context/continuation_winfib.hpp41
-rw-r--r--boost/context/execution_context_v1.hpp28
-rw-r--r--boost/context/execution_context_v2.hpp28
-rw-r--r--boost/context/execution_context_v2_void.ipp28
-rw-r--r--boost/core/lightweight_test.hpp2
-rw-r--r--boost/coroutine/detail/push_coroutine_impl.hpp6
-rw-r--r--boost/coroutine2/detail/create_control_block.ipp4
-rw-r--r--boost/coroutine2/detail/pull_control_block_cc.hpp6
-rw-r--r--boost/coroutine2/detail/pull_control_block_cc.ipp27
-rw-r--r--boost/coroutine2/detail/pull_coroutine.hpp6
-rw-r--r--boost/coroutine2/detail/pull_coroutine.ipp12
-rw-r--r--boost/coroutine2/detail/push_control_block_cc.hpp6
-rw-r--r--boost/coroutine2/detail/push_control_block_cc.ipp18
-rw-r--r--boost/coroutine2/detail/push_coroutine.hpp6
-rw-r--r--boost/coroutine2/detail/push_coroutine.ipp12
-rw-r--r--boost/cstdint.hpp7
-rw-r--r--boost/date_time/adjust_functors.hpp40
-rw-r--r--boost/date_time/filetime_functions.hpp102
-rw-r--r--boost/date_time/gregorian/greg_day.hpp6
-rw-r--r--boost/date_time/gregorian/greg_month.hpp6
-rw-r--r--boost/date_time/gregorian/greg_weekday.hpp4
-rw-r--r--boost/date_time/gregorian/greg_year.hpp8
-rw-r--r--boost/date_time/microsec_time_clock.hpp41
-rw-r--r--boost/date_time/posix_time/conversion.hpp2
-rw-r--r--boost/detail/bitmask.hpp29
-rw-r--r--boost/detail/interlocked.hpp27
-rw-r--r--boost/detail/numeric_traits.hpp128
-rw-r--r--boost/detail/utf8_codecvt_facet.hpp25
-rw-r--r--boost/detail/utf8_codecvt_facet.ipp16
-rw-r--r--boost/detail/winapi/GetCurrentProcess.hpp25
-rw-r--r--boost/detail/winapi/GetCurrentThread.hpp25
-rw-r--r--boost/detail/winapi/GetLastError.hpp25
-rw-r--r--boost/detail/winapi/GetProcessTimes.hpp24
-rw-r--r--boost/detail/winapi/GetThreadTimes.hpp25
-rw-r--r--boost/detail/winapi/access_rights.hpp84
-rw-r--r--boost/detail/winapi/apc.hpp47
-rw-r--r--boost/detail/winapi/basic_types.hpp233
-rw-r--r--boost/detail/winapi/bcrypt.hpp20
-rw-r--r--boost/detail/winapi/character_code_conversion.hpp108
-rw-r--r--boost/detail/winapi/condition_variable.hpp124
-rw-r--r--boost/detail/winapi/config.hpp78
-rw-r--r--boost/detail/winapi/critical_section.hpp184
-rw-r--r--boost/detail/winapi/crypt.hpp230
-rw-r--r--boost/detail/winapi/dbghelp.hpp171
-rw-r--r--boost/detail/winapi/debugapi.hpp79
-rw-r--r--boost/detail/winapi/detail/deprecated_namespace.hpp28
-rw-r--r--boost/detail/winapi/directory_management.hpp94
-rw-r--r--boost/detail/winapi/dll.hpp221
-rw-r--r--boost/detail/winapi/environment.hpp118
-rw-r--r--boost/detail/winapi/error_codes.hpp2959
-rw-r--r--boost/detail/winapi/error_handling.hpp143
-rw-r--r--boost/detail/winapi/event.hpp196
-rw-r--r--boost/detail/winapi/file_management.hpp553
-rw-r--r--boost/detail/winapi/file_mapping.hpp238
-rw-r--r--boost/detail/winapi/get_current_process.hpp34
-rw-r--r--boost/detail/winapi/get_current_process_id.hpp33
-rw-r--r--boost/detail/winapi/get_current_thread.hpp34
-rw-r--r--boost/detail/winapi/get_current_thread_id.hpp34
-rw-r--r--boost/detail/winapi/get_last_error.hpp33
-rw-r--r--boost/detail/winapi/get_process_times.hpp60
-rw-r--r--boost/detail/winapi/get_system_directory.hpp63
-rw-r--r--boost/detail/winapi/get_thread_times.hpp55
-rw-r--r--boost/detail/winapi/handle_info.hpp62
-rw-r--r--boost/detail/winapi/handles.hpp73
-rw-r--r--boost/detail/winapi/heap_memory.hpp78
-rw-r--r--boost/detail/winapi/init_once.hpp123
-rw-r--r--boost/detail/winapi/jobs.hpp131
-rw-r--r--boost/detail/winapi/limits.hpp51
-rw-r--r--boost/detail/winapi/local_memory.hpp51
-rw-r--r--boost/detail/winapi/memory.hpp20
-rw-r--r--boost/detail/winapi/mutex.hpp190
-rw-r--r--boost/detail/winapi/overlapped.hpp51
-rw-r--r--boost/detail/winapi/page_protection_flags.hpp56
-rw-r--r--boost/detail/winapi/pipes.hpp317
-rw-r--r--boost/detail/winapi/priority_class.hpp78
-rw-r--r--boost/detail/winapi/process.hpp421
-rw-r--r--boost/detail/winapi/security.hpp80
-rw-r--r--boost/detail/winapi/semaphore.hpp183
-rw-r--r--boost/detail/winapi/shell.hpp145
-rw-r--r--boost/detail/winapi/show_window.hpp105
-rw-r--r--boost/detail/winapi/srw_lock.hpp117
-rw-r--r--boost/detail/winapi/stack_backtrace.hpp55
-rw-r--r--boost/detail/winapi/synchronization.hpp28
-rw-r--r--boost/detail/winapi/system.hpp83
-rw-r--r--boost/detail/winapi/thread.hpp42
-rw-r--r--boost/detail/winapi/thread_pool.hpp126
-rw-r--r--boost/detail/winapi/time.hpp145
-rw-r--r--boost/detail/winapi/timers.hpp48
-rw-r--r--boost/detail/winapi/tls.hpp60
-rw-r--r--boost/detail/winapi/wait.hpp84
-rw-r--r--boost/detail/winapi/waitable_timer.hpp145
-rw-r--r--boost/dll/detail/pe_info.hpp2
-rw-r--r--boost/dll/detail/type_info.hpp20
-rw-r--r--boost/dll/detail/windows/path_from_handle.hpp20
-rw-r--r--boost/dll/detail/windows/shared_library_impl.hpp20
-rw-r--r--boost/dll/runtime_symbol_info.hpp8
-rw-r--r--boost/dll/shared_library_load_mode.hpp9
-rw-r--r--boost/dynamic_bitset/dynamic_bitset.hpp4
-rw-r--r--boost/fiber/context.hpp3
-rw-r--r--boost/fiber/cuda/waitfor.hpp139
-rw-r--r--boost/fiber/detail/is_all_same.hpp44
-rw-r--r--boost/fiber/future/detail/task_object.hpp4
-rw-r--r--boost/fiber/future/packaged_task.hpp2
-rw-r--r--boost/fiber/future/promise.hpp2
-rw-r--r--boost/fiber/hip/waitfor.hpp139
-rw-r--r--boost/fiber/unbuffered_channel.hpp3
-rw-r--r--boost/format/alt_sstream.hpp9
-rw-r--r--boost/format/feed_args.hpp16
-rw-r--r--boost/format/format_class.hpp12
-rw-r--r--boost/format/internals.hpp3
-rw-r--r--boost/format/parsing.hpp423
-rw-r--r--boost/function.hpp16
-rw-r--r--boost/function/detail/gen_maybe_include.pl2
-rw-r--r--boost/function/detail/maybe_include.hpp102
-rw-r--r--boost/function/function_base.hpp7
-rw-r--r--boost/function_output_iterator.hpp56
-rw-r--r--boost/functional/hash/detail/hash_float.hpp2
-rw-r--r--boost/fusion/adapted/std_array/detail/array_size.hpp4
-rw-r--r--boost/fusion/container/deque/detail/cpp03/deque.hpp23
-rw-r--r--boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp20
-rw-r--r--boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp20
-rw-r--r--boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp20
-rw-r--r--boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp20
-rw-r--r--boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp20
-rw-r--r--boost/fusion/container/set/detail/value_of_data_impl.hpp1
-rw-r--r--boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp36
-rw-r--r--boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp66
-rw-r--r--boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp96
-rw-r--r--boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp126
-rw-r--r--boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp156
-rw-r--r--boost/fusion/container/vector/detail/cpp03/vector.hpp7
-rw-r--r--boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp6
-rw-r--r--boost/fusion/container/vector/detail/value_at_impl.hpp14
-rw-r--r--boost/fusion/container/vector/vector.hpp39
-rw-r--r--boost/fusion/sequence/io/detail/manip.hpp1
-rw-r--r--boost/fusion/tuple/tuple.hpp26
-rw-r--r--boost/geometry/algorithms/correct.hpp22
-rw-r--r--boost/geometry/algorithms/correct_closure.hpp235
-rw-r--r--boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp43
-rw-r--r--boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp146
-rw-r--r--boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp29
-rw-r--r--boost/geometry/algorithms/detail/direction_code.hpp25
-rw-r--r--boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp9
-rw-r--r--boost/geometry/algorithms/detail/distance/point_to_geometry.hpp2
-rw-r--r--boost/geometry/algorithms/detail/envelope/box.hpp15
-rw-r--r--boost/geometry/algorithms/detail/envelope/multipoint.hpp5
-rw-r--r--boost/geometry/algorithms/detail/envelope/point.hpp13
-rw-r--r--boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp15
-rw-r--r--boost/geometry/algorithms/detail/envelope/segment.hpp66
-rw-r--r--boost/geometry/algorithms/detail/expand/box.hpp51
-rw-r--r--boost/geometry/algorithms/detail/expand/indexed.hpp42
-rw-r--r--boost/geometry/algorithms/detail/expand/point.hpp116
-rw-r--r--boost/geometry/algorithms/detail/expand/segment.hpp48
-rw-r--r--boost/geometry/algorithms/detail/has_self_intersections.hpp6
-rw-r--r--boost/geometry/algorithms/detail/intersection/multi.hpp16
-rw-r--r--boost/geometry/algorithms/detail/intersects/implementation.hpp3
-rw-r--r--boost/geometry/algorithms/detail/is_simple/linear.hpp3
-rw-r--r--boost/geometry/algorithms/detail/normalize.hpp27
-rw-r--r--boost/geometry/algorithms/detail/overlay/add_rings.hpp43
-rw-r--r--boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp28
-rw-r--r--boost/geometry/algorithms/detail/overlay/assign_parents.hpp45
-rw-r--r--boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp18
-rw-r--r--boost/geometry/algorithms/detail/overlay/follow.hpp12
-rw-r--r--boost/geometry/algorithms/detail/overlay/get_turns.hpp53
-rw-r--r--boost/geometry/algorithms/detail/overlay/handle_colocations.hpp93
-rw-r--r--boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp193
-rw-r--r--boost/geometry/algorithms/detail/overlay/intersection_insert.hpp438
-rw-r--r--boost/geometry/algorithms/detail/overlay/is_self_turn.hpp11
-rw-r--r--boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp83
-rw-r--r--boost/geometry/algorithms/detail/overlay/overlay.hpp133
-rw-r--r--boost/geometry/algorithms/detail/overlay/overlay_type.hpp27
-rw-r--r--boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp1
-rw-r--r--boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp21
-rw-r--r--boost/geometry/algorithms/detail/overlay/segment_identifier.hpp3
-rw-r--r--boost/geometry/algorithms/detail/overlay/select_rings.hpp6
-rw-r--r--boost/geometry/algorithms/detail/overlay/self_turn_points.hpp32
-rw-r--r--boost/geometry/algorithms/detail/overlay/sort_by_side.hpp11
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal.hpp231
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal_intersection_patterns.hpp153
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp10
-rw-r--r--boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp409
-rw-r--r--boost/geometry/algorithms/detail/overlay/traverse.hpp10
-rw-r--r--boost/geometry/algorithms/detail/overlay/turn_info.hpp13
-rw-r--r--boost/geometry/algorithms/detail/relate/less.hpp83
-rw-r--r--boost/geometry/algorithms/detail/relate/linear_areal.hpp6
-rw-r--r--boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp4
-rw-r--r--boost/geometry/algorithms/detail/relate/point_point.hpp9
-rw-r--r--boost/geometry/algorithms/detail/relate/topology_check.hpp7
-rw-r--r--boost/geometry/algorithms/detail/sections/section_functions.hpp27
-rw-r--r--boost/geometry/algorithms/detail/touches/implementation.hpp6
-rw-r--r--boost/geometry/algorithms/detail/within/multi_point.hpp7
-rw-r--r--boost/geometry/algorithms/dispatch/expand.hpp7
-rw-r--r--boost/geometry/core/exception.hpp23
-rw-r--r--boost/geometry/formulas/andoyer_inverse.hpp35
-rw-r--r--boost/geometry/formulas/area_formulas.hpp19
-rw-r--r--boost/geometry/formulas/authalic_radius_sqr.hpp96
-rw-r--r--boost/geometry/formulas/elliptic_arc_length.hpp214
-rw-r--r--boost/geometry/formulas/geographic.hpp7
-rw-r--r--boost/geometry/formulas/mean_radius.hpp71
-rw-r--r--boost/geometry/formulas/sjoberg_intersection.hpp81
-rw-r--r--boost/geometry/formulas/thomas_direct.hpp7
-rw-r--r--boost/geometry/formulas/unit_spheroid.hpp43
-rw-r--r--boost/geometry/geometries/helper_geometry.hpp15
-rw-r--r--boost/geometry/index/rtree.hpp6
-rw-r--r--boost/geometry/io/wkt/write.hpp115
-rw-r--r--boost/geometry/policies/compare.hpp276
-rw-r--r--boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp2
-rw-r--r--boost/geometry/strategies/agnostic/point_in_point.hpp2
-rw-r--r--boost/geometry/strategies/agnostic/point_in_poly_winding.hpp549
-rw-r--r--boost/geometry/strategies/cartesian/intersection.hpp5
-rw-r--r--boost/geometry/strategies/cartesian/point_in_poly_winding.hpp296
-rw-r--r--boost/geometry/strategies/cartesian/side_by_triangle.hpp16
-rw-r--r--boost/geometry/strategies/compare.hpp248
-rw-r--r--boost/geometry/strategies/geographic/area.hpp36
-rw-r--r--boost/geometry/strategies/geographic/distance.hpp41
-rw-r--r--boost/geometry/strategies/geographic/distance_cross_track.hpp641
-rw-r--r--boost/geometry/strategies/geographic/intersection.hpp21
-rw-r--r--boost/geometry/strategies/geographic/parameters.hpp51
-rw-r--r--boost/geometry/strategies/geographic/point_in_poly_winding.hpp80
-rw-r--r--boost/geometry/strategies/spherical/area.hpp11
-rw-r--r--boost/geometry/strategies/spherical/compare.hpp321
-rw-r--r--boost/geometry/strategies/spherical/compare_circular.hpp152
-rw-r--r--boost/geometry/strategies/spherical/distance_cross_track.hpp61
-rw-r--r--boost/geometry/strategies/spherical/intersection.hpp5
-rw-r--r--boost/geometry/strategies/spherical/point_in_poly_winding.hpp581
-rw-r--r--boost/geometry/strategies/spherical/side_by_cross_track.hpp23
-rw-r--r--boost/geometry/strategies/strategies.hpp6
-rw-r--r--boost/geometry/util/normalize_spheroidal_box_coordinates.hpp36
-rw-r--r--boost/geometry/util/normalize_spheroidal_coordinates.hpp135
-rw-r--r--boost/hana/assert.hpp33
-rw-r--r--boost/hana/bool.hpp6
-rw-r--r--boost/hana/cartesian_product.hpp4
-rw-r--r--boost/hana/config.hpp19
-rw-r--r--boost/hana/detail/unpack_flatten.hpp2
-rw-r--r--boost/hana/group.hpp2
-rw-r--r--boost/hana/index_if.hpp2
-rw-r--r--boost/hana/partition.hpp4
-rw-r--r--boost/hana/version.hpp2
-rw-r--r--boost/icl/detail/element_iterator.hpp8
-rw-r--r--boost/icl/functors.hpp9
-rw-r--r--boost/icl/interval_bounds.hpp4
-rw-r--r--boost/icl/type_traits/predicate.hpp17
-rw-r--r--boost/icl/type_traits/type_to_string.hpp8
-rw-r--r--[-rwxr-xr-x]boost/interprocess/detail/managed_memory_impl.hpp0
-rw-r--r--[-rwxr-xr-x]boost/interprocess/detail/managed_multi_shared_memory.hpp0
-rw-r--r--[-rwxr-xr-x]boost/interprocess/detail/managed_open_or_create_impl.hpp0
-rw-r--r--[-rwxr-xr-x]boost/interprocess/detail/shared_dir_helpers.hpp0
-rw-r--r--boost/interprocess/mem_algo/rbtree_best_fit.hpp2
-rw-r--r--boost/intrusive/bstree.hpp11
-rw-r--r--boost/intrusive/circular_list_algorithms.hpp2
-rw-r--r--boost/intrusive/detail/mpl.hpp20
-rw-r--r--boost/intrusive/hashtable.hpp11
-rw-r--r--boost/intrusive/list.hpp11
-rw-r--r--boost/intrusive/slist.hpp11
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/absolute_path.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/adapter/device_adapter.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/adapter/filter_adapter.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/adapter/non_blocking_adapter.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/bool_trait_def.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/broken_overload_resolution/forward.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/config/enable_warnings.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/config/limits.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/config/windows_posix.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/counted_array.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/detail/template_params.hpp0
-rw-r--r--[-rwxr-xr-x]boost/iostreams/restrict.hpp0
-rw-r--r--boost/iterator/filter_iterator.hpp1
-rw-r--r--boost/iterator/function_input_iterator.hpp53
-rw-r--r--boost/iterator/function_output_iterator.hpp62
-rw-r--r--boost/iterator/indirect_iterator.hpp6
-rw-r--r--boost/iterator/is_lvalue_iterator.hpp9
-rw-r--r--boost/iterator/is_readable_iterator.hpp5
-rw-r--r--boost/iterator/iterator_adaptor.hpp2
-rw-r--r--boost/iterator/iterator_archetypes.hpp1
-rw-r--r--boost/iterator/iterator_categories.hpp5
-rw-r--r--boost/iterator/iterator_concepts.hpp18
-rw-r--r--boost/iterator/iterator_facade.hpp3
-rw-r--r--boost/iterator/iterator_traits.hpp13
-rw-r--r--boost/iterator/new_iterator_tests.hpp25
-rw-r--r--boost/iterator/permutation_iterator.hpp8
-rw-r--r--boost/iterator/reverse_iterator.hpp1
-rw-r--r--boost/iterator/transform_iterator.hpp8
-rw-r--r--boost/iterator/zip_iterator.hpp1
-rw-r--r--boost/lexical_cast/detail/converter_lexical_streams.hpp14
-rw-r--r--boost/log/attributes/attribute.hpp2
-rw-r--r--boost/log/attributes/attribute_name.hpp16
-rw-r--r--boost/log/attributes/attribute_value.hpp2
-rw-r--r--boost/log/attributes/value_visitation.hpp2
-rw-r--r--boost/log/core/record.hpp2
-rw-r--r--boost/log/core/record_view.hpp2
-rw-r--r--boost/log/detail/adaptive_mutex.hpp6
-rw-r--r--boost/log/detail/attachable_sstream_buf.hpp4
-rw-r--r--boost/log/detail/config.hpp12
-rw-r--r--boost/log/detail/light_function.hpp2
-rw-r--r--boost/log/detail/light_rw_mutex.hpp14
-rw-r--r--boost/log/detail/locking_ptr.hpp2
-rw-r--r--boost/log/detail/timestamp.hpp2
-rw-r--r--boost/log/sources/record_ostream.hpp2
-rw-r--r--boost/log/support/date_time.hpp16
-rw-r--r--boost/log/utility/formatting_ostream.hpp16
-rw-r--r--boost/log/utility/setup/settings.hpp2
-rw-r--r--boost/log/utility/type_dispatch/type_dispatcher.hpp2
-rw-r--r--boost/math/concepts/real_concept.hpp20
-rw-r--r--boost/math/concepts/std_real_concept.hpp20
-rw-r--r--boost/math/cstdfloat/cstdfloat_cmath.hpp2
-rw-r--r--boost/math/distributions/detail/common_error_handling.hpp29
-rw-r--r--boost/math/distributions/students_t.hpp49
-rw-r--r--boost/math/interpolators/detail/cubic_b_spline_detail.hpp8
-rw-r--r--boost/math/octonion.hpp1
-rw-r--r--boost/math/quadrature/detail/exp_sinh_detail.hpp475
-rw-r--r--boost/math/quadrature/detail/sinh_sinh_detail.hpp463
-rw-r--r--boost/math/quadrature/detail/tanh_sinh_constants.hpp228
-rw-r--r--boost/math/quadrature/detail/tanh_sinh_detail.hpp705
-rw-r--r--boost/math/quadrature/exp_sinh.hpp96
-rw-r--r--boost/math/quadrature/gauss.hpp1284
-rw-r--r--boost/math/quadrature/gauss_kronrod.hpp1941
-rw-r--r--boost/math/quadrature/sinh_sinh.hpp43
-rw-r--r--boost/math/quadrature/tanh_sinh.hpp245
-rw-r--r--boost/math/quaternion.hpp1459
-rw-r--r--boost/math/special_functions.hpp1
-rw-r--r--boost/math/special_functions/chebyshev.hpp169
-rw-r--r--boost/math/special_functions/chebyshev_transform.hpp247
-rw-r--r--boost/math/special_functions/detail/bernoulli_details.hpp58
-rw-r--r--boost/math/special_functions/detail/bessel_i0.hpp2
-rw-r--r--boost/math/special_functions/detail/bessel_i1.hpp7
-rw-r--r--boost/math/special_functions/legendre.hpp2
-rw-r--r--boost/math/special_functions/legendre_stieltjes.hpp6
-rw-r--r--boost/math/special_functions/math_fwd.hpp37
-rw-r--r--boost/math/special_functions/next.hpp2
-rw-r--r--boost/math/tools/atomic.hpp93
-rw-r--r--boost/math/tools/big_constant.hpp6
-rw-r--r--boost/math/tools/polynomial.hpp268
-rw-r--r--boost/math/tools/polynomial_gcd.hpp2
-rw-r--r--boost/metaparse/v1/cpp11/first_of.hpp36
-rw-r--r--boost/metaparse/v1/cpp11/impl/nth_of_c.hpp82
-rw-r--r--boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp60
-rw-r--r--boost/metaparse/v1/cpp11/last_of.hpp36
-rw-r--r--boost/metaparse/v1/cpp11/nth_of.hpp24
-rw-r--r--boost/metaparse/v1/cpp11/nth_of_c.hpp45
-rw-r--r--boost/metaparse/v1/cpp11/string.hpp11
-rw-r--r--boost/metaparse/v1/cpp98/first_of.hpp35
-rw-r--r--boost/metaparse/v1/cpp98/impl/nth_of_c.hpp (renamed from boost/metaparse/v1/impl/nth_of_c.hpp)6
-rw-r--r--boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp (renamed from boost/metaparse/v1/impl/nth_of_c_impl.hpp)6
-rw-r--r--boost/metaparse/v1/cpp98/impl/skip_seq.hpp (renamed from boost/metaparse/v1/impl/skip_seq.hpp)4
-rw-r--r--boost/metaparse/v1/cpp98/last_of.hpp66
-rw-r--r--boost/metaparse/v1/cpp98/nth_of.hpp40
-rw-r--r--boost/metaparse/v1/cpp98/nth_of_c.hpp70
-rw-r--r--boost/metaparse/v1/first_of.hpp31
-rw-r--r--boost/metaparse/v1/last_of.hpp62
-rw-r--r--boost/metaparse/v1/nth_of.hpp35
-rw-r--r--boost/metaparse/v1/nth_of_c.hpp66
-rw-r--r--boost/move/algo/detail/adaptive_sort_merge.hpp184
-rw-r--r--boost/move/core.hpp10
-rw-r--r--boost/move/detail/type_traits.hpp19
-rw-r--r--boost/mp11.hpp22
-rw-r--r--boost/mp11/algorithm.hpp945
-rw-r--r--boost/mp11/bind.hpp105
-rw-r--r--boost/mp11/detail/config.hpp44
-rw-r--r--boost/mp11/detail/mp_append.hpp149
-rw-r--r--boost/mp11/detail/mp_count.hpp116
-rw-r--r--boost/mp11/detail/mp_fold.hpp63
-rw-r--r--boost/mp11/detail/mp_list.hpp24
-rw-r--r--boost/mp11/detail/mp_map_find.hpp43
-rw-r--r--boost/mp11/detail/mp_min_element.hpp51
-rw-r--r--boost/mp11/detail/mp_plus.hpp82
-rw-r--r--boost/mp11/detail/mp_with_index.hpp374
-rw-r--r--boost/mp11/function.hpp178
-rw-r--r--boost/mp11/integer_sequence.hpp97
-rw-r--r--boost/mp11/integral.hpp40
-rw-r--r--boost/mp11/list.hpp286
-rw-r--r--boost/mp11/map.hpp119
-rw-r--r--boost/mp11/mpl.hpp175
-rw-r--r--boost/mp11/set.hpp103
-rw-r--r--boost/mp11/tuple.hpp92
-rw-r--r--boost/mp11/utility.hpp175
-rw-r--r--boost/mpl/assert.hpp2
-rw-r--r--boost/mpl/get_tag.hpp26
-rw-r--r--[-rwxr-xr-x]boost/msm/mpl_graph/mpl_graph.hpp0
-rw-r--r--boost/multi_array.hpp9
-rw-r--r--boost/multi_array/base.hpp1
-rw-r--r--boost/multi_array/concept_checks.hpp4
-rw-r--r--boost/multi_array/iterator.hpp2
-rw-r--r--boost/multi_index/detail/index_base.hpp4
-rw-r--r--boost/multi_index/detail/ord_index_impl.hpp11
-rw-r--r--boost/multi_index/hashed_index.hpp16
-rw-r--r--boost/multi_index/random_access_index.hpp7
-rw-r--r--boost/multi_index/sequenced_index.hpp7
-rw-r--r--boost/multi_index_container.hpp22
-rw-r--r--boost/next_prior.hpp21
-rw-r--r--boost/numeric/conversion/detail/converter.hpp15
-rw-r--r--boost/operators.hpp33
-rw-r--r--boost/optional/detail/experimental_traits.hpp98
-rw-r--r--boost/optional/detail/old_optional_implementation.hpp16
-rw-r--r--boost/optional/detail/optional_aligned_storage.hpp38
-rw-r--r--boost/optional/detail/optional_config.hpp31
-rw-r--r--boost/optional/detail/optional_relops.hpp2
-rw-r--r--boost/optional/detail/optional_trivially_copyable_base.hpp499
-rw-r--r--boost/optional/optional.hpp137
-rw-r--r--[-rwxr-xr-x]boost/parameter.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/overloads.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/parameter_requirements.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/preprocessor/flatten.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/preprocessor/for_each.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/python/invoker_iterate.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/result_of0.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/tag.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/template_keyword.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/void.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/aux_/yesno.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/match.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/parameters.hpp0
-rw-r--r--[-rwxr-xr-x]boost/parameter/python.hpp0
-rw-r--r--boost/pending/detail/int_iterator.hpp3
-rw-r--r--boost/pending/iterator_tests.hpp118
-rw-r--r--boost/pointee.hpp4
-rw-r--r--boost/poly_collection/algorithm.hpp21
-rw-r--r--boost/poly_collection/any_collection.hpp6
-rw-r--r--boost/poly_collection/base_collection.hpp5
-rw-r--r--boost/poly_collection/detail/any_model.hpp4
-rw-r--r--boost/poly_collection/detail/base_model.hpp2
-rw-r--r--boost/poly_collection/detail/function_model.hpp2
-rw-r--r--boost/poly_collection/detail/functional.hpp66
-rw-r--r--boost/poly_collection/detail/is_acceptable.hpp4
-rw-r--r--boost/poly_collection/detail/is_constructible.hpp8
-rw-r--r--boost/poly_collection/detail/iterator_traits.hpp16
-rw-r--r--boost/poly_collection/detail/packed_segment.hpp9
-rw-r--r--boost/poly_collection/detail/poly_collection.hpp48
-rw-r--r--boost/poly_collection/detail/segment_split.hpp30
-rw-r--r--boost/poly_collection/detail/split_segment.hpp33
-rw-r--r--boost/poly_collection/detail/type_info_map.hpp42
-rw-r--r--boost/poly_collection/detail/type_restitution.hpp6
-rw-r--r--boost/poly_collection/detail/workaround_dr1467.hpp35
-rw-r--r--boost/poly_collection/function_collection.hpp4
-rw-r--r--boost/polygon/detail/boolean_op_45.hpp10
-rw-r--r--boost/polygon/detail/max_cover.hpp5
-rw-r--r--boost/polygon/detail/polygon_arbitrary_formation.hpp26
-rw-r--r--boost/polygon/detail/scan_arbitrary.hpp5
-rw-r--r--boost/polygon/polygon_traits.hpp5
-rw-r--r--boost/predef/architecture/parisc.h2
-rw-r--r--boost/predef/library/c.h1
-rw-r--r--boost/predef/library/c/cloudabi.h53
-rw-r--r--boost/predef/make.h4
-rw-r--r--boost/predef/os/android.h4
-rw-r--r--boost/predef/os/bsd/free.h13
-rw-r--r--boost/predef/os/bsd/open.h80
-rw-r--r--boost/predef/platform.h10
-rw-r--r--boost/predef/platform/cloudabi.h43
-rw-r--r--boost/predef/platform/mingw.h4
-rw-r--r--boost/predef/platform/mingw32.h63
-rw-r--r--boost/predef/platform/mingw64.h63
-rw-r--r--boost/predef/platform/windows_desktop.h12
-rw-r--r--boost/predef/platform/windows_phone.h9
-rw-r--r--boost/predef/platform/windows_runtime.h18
-rw-r--r--boost/predef/platform/windows_server.h47
-rw-r--r--boost/predef/platform/windows_store.h15
-rw-r--r--boost/predef/platform/windows_system.h47
-rw-r--r--boost/predef/platform/windows_uwp.h60
-rw-r--r--boost/predef/version.h2
-rw-r--r--boost/process/async.hpp32
-rw-r--r--boost/process/async_pipe.hpp40
-rw-r--r--boost/process/async_system.hpp18
-rw-r--r--boost/process/child.hpp3
-rw-r--r--boost/process/cmd.hpp188
-rw-r--r--boost/process/detail/async_handler.hpp36
-rw-r--r--boost/process/detail/basic_cmd.hpp584
-rw-r--r--boost/process/detail/child_decl.hpp6
-rw-r--r--boost/process/detail/config.hpp11
-rw-r--r--boost/process/detail/handler.hpp108
-rw-r--r--boost/process/detail/posix/asio_fwd.hpp19
-rw-r--r--boost/process/detail/posix/async_handler.hpp54
-rw-r--r--boost/process/detail/posix/async_in.hpp190
-rw-r--r--boost/process/detail/posix/async_out.hpp338
-rw-r--r--boost/process/detail/posix/async_pipe.hpp83
-rw-r--r--boost/process/detail/posix/basic_pipe.hpp8
-rw-r--r--boost/process/detail/posix/child_handle.hpp2
-rw-r--r--boost/process/detail/posix/environment.hpp644
-rw-r--r--boost/process/detail/posix/executor.hpp5
-rw-r--r--boost/process/detail/posix/file_descriptor.hpp152
-rw-r--r--boost/process/detail/posix/file_in.hpp80
-rw-r--r--boost/process/detail/posix/file_out.hpp102
-rw-r--r--boost/process/detail/posix/group_ref.hpp2
-rw-r--r--boost/process/detail/posix/handler.hpp112
-rw-r--r--boost/process/detail/posix/io_context_ref.hpp (renamed from boost/process/detail/posix/io_service_ref.hpp)269
-rw-r--r--boost/process/detail/posix/null_in.hpp56
-rw-r--r--boost/process/detail/posix/null_out.hpp116
-rw-r--r--boost/process/detail/posix/on_exit.hpp52
-rw-r--r--boost/process/detail/posix/pipe_in.hpp180
-rw-r--r--boost/process/detail/posix/pipe_out.hpp232
-rw-r--r--boost/process/detail/posix/search_path.hpp1
-rw-r--r--boost/process/detail/posix/sigchld_service.hpp113
-rw-r--r--boost/process/detail/posix/wait_for_exit.hpp105
-rw-r--r--boost/process/detail/posix/wait_group.hpp37
-rw-r--r--boost/process/detail/traits.hpp26
-rw-r--r--boost/process/detail/traits/async.hpp36
-rw-r--r--boost/process/detail/traits/cmd_or_exe.hpp114
-rw-r--r--boost/process/detail/traits/decl.hpp98
-rw-r--r--boost/process/detail/traits/env.hpp60
-rw-r--r--boost/process/detail/traits/error.hpp30
-rw-r--r--boost/process/detail/windows/asio_fwd.hpp10
-rw-r--r--boost/process/detail/windows/async_handler.hpp54
-rw-r--r--boost/process/detail/windows/async_in.hpp210
-rw-r--r--boost/process/detail/windows/async_out.hpp355
-rw-r--r--boost/process/detail/windows/async_pipe.hpp233
-rw-r--r--boost/process/detail/windows/basic_cmd.hpp342
-rw-r--r--boost/process/detail/windows/basic_pipe.hpp134
-rw-r--r--boost/process/detail/windows/child_handle.hpp44
-rw-r--r--boost/process/detail/windows/close_in.hpp8
-rw-r--r--boost/process/detail/windows/close_out.hpp18
-rw-r--r--boost/process/detail/windows/cmd.hpp72
-rw-r--r--boost/process/detail/windows/compare_handles.hpp18
-rw-r--r--boost/process/detail/windows/env_init.hpp12
-rw-r--r--boost/process/detail/windows/environment.hpp650
-rw-r--r--boost/process/detail/windows/executor.hpp40
-rw-r--r--boost/process/detail/windows/file_descriptor.hpp208
-rw-r--r--boost/process/detail/windows/file_in.hpp88
-rw-r--r--boost/process/detail/windows/file_out.hpp126
-rw-r--r--boost/process/detail/windows/group_handle.hpp42
-rw-r--r--boost/process/detail/windows/group_ref.hpp8
-rw-r--r--boost/process/detail/windows/handler.hpp24
-rw-r--r--boost/process/detail/windows/io_context_ref.hpp (renamed from boost/process/detail/windows/io_service_ref.hpp)320
-rw-r--r--boost/process/detail/windows/is_running.hpp12
-rw-r--r--boost/process/detail/windows/job_workaround.hpp82
-rw-r--r--boost/process/detail/windows/locale.hpp206
-rw-r--r--boost/process/detail/windows/null_in.hpp82
-rw-r--r--boost/process/detail/windows/null_out.hpp150
-rw-r--r--boost/process/detail/windows/on_exit.hpp79
-rw-r--r--boost/process/detail/windows/pipe_in.hpp178
-rw-r--r--boost/process/detail/windows/pipe_out.hpp244
-rw-r--r--boost/process/detail/windows/search_path.hpp45
-rw-r--r--boost/process/detail/windows/shell_path.hpp14
-rw-r--r--boost/process/detail/windows/show_window.hpp54
-rw-r--r--boost/process/detail/windows/start_dir.hpp72
-rw-r--r--boost/process/detail/windows/terminate.hpp16
-rw-r--r--boost/process/detail/windows/wait_for_exit.hpp114
-rw-r--r--boost/process/detail/windows/wait_group.hpp44
-rw-r--r--boost/process/env.hpp908
-rw-r--r--boost/process/environment.hpp16
-rw-r--r--boost/process/exe.hpp128
-rw-r--r--boost/process/extend.hpp26
-rw-r--r--boost/process/io.hpp922
-rw-r--r--boost/process/locale.hpp452
-rw-r--r--boost/process/pipe.hpp2
-rw-r--r--boost/process/search_path.hpp2
-rw-r--r--boost/process/spawn.hpp2
-rw-r--r--boost/process/start_dir.hpp220
-rw-r--r--boost/process/system.hpp22
-rw-r--r--boost/process/windows.hpp116
-rw-r--r--boost/ptr_container/clone_allocator.hpp11
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/detail/default_deleter.hpp2
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/detail/is_convertible.hpp0
-rw-r--r--boost/ptr_container/detail/map_iterator.hpp4
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/detail/move.hpp0
-rw-r--r--boost/ptr_container/detail/reversible_ptr_container.hpp203
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/detail/scoped_deleter.hpp39
-rw-r--r--boost/ptr_container/detail/serialize_ptr_map_adapter.hpp2
-rw-r--r--boost/ptr_container/detail/static_move_ptr.hpp14
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/detail/throw_exception.hpp0
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/detail/void_ptr_iterator.hpp52
-rw-r--r--[-rwxr-xr-x]boost/ptr_container/nullable.hpp12
-rw-r--r--boost/ptr_container/ptr_array.hpp28
-rw-r--r--boost/ptr_container/ptr_circular_buffer.hpp45
-rw-r--r--boost/ptr_container/ptr_deque.hpp10
-rw-r--r--boost/ptr_container/ptr_inserter.hpp27
-rw-r--r--boost/ptr_container/ptr_list.hpp19
-rw-r--r--boost/ptr_container/ptr_map.hpp8
-rw-r--r--boost/ptr_container/ptr_map_adapter.hpp40
-rw-r--r--boost/ptr_container/ptr_sequence_adapter.hpp16
-rw-r--r--boost/ptr_container/ptr_set.hpp11
-rw-r--r--boost/ptr_container/ptr_set_adapter.hpp18
-rw-r--r--boost/ptr_container/ptr_unordered_map.hpp9
-rw-r--r--boost/ptr_container/ptr_unordered_set.hpp14
-rw-r--r--boost/ptr_container/ptr_vector.hpp10
-rw-r--r--[-rwxr-xr-x]boost/python/arg_from_python.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/base_type_traits.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/borrowed.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/cast.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/converter/arg_to_python.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/converter/context_result_converter.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/converter/pytype_function.hpp0
-rw-r--r--boost/python/converter/registered.hpp2
-rw-r--r--[-rwxr-xr-x]boost/python/converter/return_from_python.hpp0
-rw-r--r--boost/python/converter/shared_ptr_to_python.hpp2
-rw-r--r--[-rwxr-xr-x]boost/python/def_visitor.hpp0
-rw-r--r--boost/python/detail/caller.hpp2
-rw-r--r--[-rwxr-xr-x]boost/python/detail/convertible.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/copy_ctor_mutates_rhs.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/def_helper_fwd.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/is_shared_ptr.hpp2
-rw-r--r--[-rwxr-xr-x]boost/python/detail/is_wrapper.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/nullary_function_adaptor.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/prefix.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/python_type.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/sfinae.hpp0
-rw-r--r--boost/python/detail/type_traits.hpp9
-rw-r--r--[-rwxr-xr-x]boost/python/detail/unwind_type.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/unwrap_type_id.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/unwrap_wrapper.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/detail/value_arg.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/docstring_options.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/handle_fwd.hpp0
-rw-r--r--boost/python/make_constructor.hpp4
-rw-r--r--boost/python/module_init.hpp22
-rw-r--r--boost/python/numpy/ndarray.hpp8
-rw-r--r--boost/python/numpy/ufunc.hpp4
-rw-r--r--[-rwxr-xr-x]boost/python/object.hpp0
-rw-r--r--boost/python/object/class_metadata.hpp2
-rw-r--r--[-rwxr-xr-x]boost/python/object/function_doc_signature.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/object/inheritance_query.hpp0
-rw-r--r--boost/python/object/make_ptr_instance.hpp4
-rw-r--r--boost/python/object/pointer_holder.hpp4
-rw-r--r--boost/python/object/py_function.hpp4
-rw-r--r--[-rwxr-xr-x]boost/python/object/stl_iterator_core.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/object_protocol_core.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/raw_function.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/refcount.hpp0
-rw-r--r--[-rwxr-xr-x]boost/python/self.hpp0
-rw-r--r--boost/python/signature.hpp18
-rw-r--r--[-rwxr-xr-x]boost/python/stl_iterator.hpp0
-rw-r--r--boost/python/to_python_indirect.hpp2
-rw-r--r--boost/python/to_python_value.hpp2
-rw-r--r--[-rwxr-xr-x]boost/python/wrapper.hpp0
-rw-r--r--boost/range/concepts.hpp10
-rw-r--r--boost/regex/config.hpp2
-rw-r--r--boost/regex/icu.hpp14
-rw-r--r--boost/regex/pending/object_cache.hpp4
-rw-r--r--boost/regex/v4/basic_regex_creator.hpp4
-rw-r--r--boost/regex/v4/basic_regex_parser.hpp67
-rw-r--r--boost/regex/v4/perl_matcher.hpp9
-rw-r--r--boost/regex/v4/perl_matcher_common.hpp7
-rw-r--r--boost/regex/v4/perl_matcher_non_recursive.hpp50
-rw-r--r--boost/regex/v4/perl_matcher_recursive.hpp8
-rw-r--r--boost/regex/v4/regex_traits_defaults.hpp15
-rw-r--r--boost/regex/v4/regex_workaround.hpp2
-rw-r--r--boost/serialization/collections_save_imp.hpp3
-rw-r--r--boost/serialization/nvp.hpp4
-rw-r--r--boost/serialization/singleton.hpp24
-rw-r--r--boost/serialization/valarray.hpp5
-rw-r--r--boost/signals2/deconstruct_ptr.hpp6
-rw-r--r--boost/signals2/last_value.hpp2
-rw-r--r--boost/signals2/slot_base.hpp5
-rw-r--r--boost/smart_ptr/allocate_shared_array.hpp18
-rw-r--r--boost/smart_ptr/detail/lwm_win32_cs.hpp9
-rw-r--r--boost/stacktrace/detail/libbacktrace_impls.hpp19
-rw-r--r--boost/stacktrace/detail/location_from_symbol.hpp35
-rw-r--r--boost/stacktrace/detail/safe_dump_posix.ipp1
-rw-r--r--boost/stacktrace/safe_dump_to.hpp3
-rw-r--r--boost/system/detail/error_code.ipp57
-rw-r--r--boost/system/detail/local_free_on_destruction.hpp4
-rw-r--r--boost/system/error_code.hpp32
-rw-r--r--boost/system/linux_error.hpp2
-rw-r--r--boost/system/windows_error.hpp104
-rw-r--r--boost/thread/concurrent_queues/detail/sync_deque_base.hpp14
-rw-r--r--boost/thread/concurrent_queues/detail/sync_queue_base.hpp14
-rw-r--r--[-rwxr-xr-x]boost/thread/concurrent_queues/queue_base.hpp0
-rw-r--r--boost/thread/concurrent_queues/sync_priority_queue.hpp14
-rw-r--r--boost/thread/concurrent_queues/sync_timed_queue.hpp155
-rw-r--r--boost/thread/detail/atomic_redef_macros.hpp (renamed from boost/detail/atomic_redef_macros.hpp)0
-rw-r--r--boost/thread/detail/atomic_undef_macros.hpp (renamed from boost/detail/atomic_undef_macros.hpp)0
-rw-r--r--boost/thread/detail/config.hpp19
-rw-r--r--boost/thread/detail/log.hpp15
-rw-r--r--boost/thread/detail/move.hpp2
-rw-r--r--boost/thread/detail/thread.hpp4
-rw-r--r--boost/thread/executors/basic_thread_pool.hpp14
-rw-r--r--boost/thread/executors/detail/priority_executor_base.hpp14
-rw-r--r--boost/thread/executors/scheduled_thread_pool.hpp1
-rw-r--r--boost/thread/executors/scheduler.hpp10
-rw-r--r--boost/thread/executors/scheduling_adaptor.hpp19
-rw-r--r--boost/thread/executors/serial_executor.hpp9
-rw-r--r--[-rwxr-xr-x]boost/thread/experimental/parallel/v2/task_region.hpp0
-rw-r--r--boost/thread/future.hpp227
-rw-r--r--boost/thread/once.hpp10
-rw-r--r--boost/thread/pthread/condition_variable.hpp8
-rw-r--r--boost/thread/pthread/condition_variable_fwd.hpp34
-rw-r--r--boost/thread/pthread/pthread_mutex_scoped_lock.hpp2
-rw-r--r--boost/thread/pthread/shared_mutex.hpp1
-rw-r--r--boost/thread/pthread/thread_data.hpp18
-rw-r--r--boost/thread/pthread/thread_heap_alloc.hpp34
-rw-r--r--boost/thread/pthread/timespec.hpp19
-rw-r--r--[-rwxr-xr-x]boost/thread/v2/shared_mutex.hpp36
-rw-r--r--boost/thread/win32/basic_recursive_mutex.hpp10
-rw-r--r--boost/thread/win32/basic_timed_mutex.hpp14
-rw-r--r--boost/thread/win32/condition_variable.hpp6
-rw-r--r--boost/thread/win32/mfc_thread_init.hpp6
-rw-r--r--boost/thread/win32/once.hpp50
-rw-r--r--boost/thread/win32/shared_mutex.hpp30
-rw-r--r--boost/thread/win32/thread_data.hpp2
-rw-r--r--boost/thread/win32/thread_heap_alloc.hpp144
-rw-r--r--boost/thread/win32/thread_primitives.hpp248
-rw-r--r--boost/timer/timer.hpp2
-rw-r--r--boost/token_functions.hpp3
-rw-r--r--boost/tuple/detail/tuple_basic.hpp16
-rw-r--r--boost/tuple/tuple.hpp16
-rw-r--r--boost/tuple/tuple_comparison.hpp16
-rw-r--r--boost/tuple/tuple_io.hpp122
-rw-r--r--[-rwxr-xr-x]boost/typeof/dmc/typeof_impl.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/encode_decode.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/encode_decode_params.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/incr_registration_group.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/int_encoding.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/integral_template_param.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/modifiers.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/pointers_data_members.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/register_mem_functions.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/bitset.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/complex.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/deque.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/fstream.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/functional.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/iostream.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/istream.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/iterator.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/list.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/locale.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/map.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/memory.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/ostream.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/queue.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/set.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/sstream.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/stack.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/streambuf.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/string.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/utility.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/valarray.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/std/vector.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/template_encoding.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/template_template_param.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/type_encoding.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/type_template_param.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/typeof_impl.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/vector.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/vector100.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/vector150.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/vector200.hpp0
-rw-r--r--[-rwxr-xr-x]boost/typeof/vector50.hpp0
-rw-r--r--boost/unordered/detail/fwd.hpp19
-rw-r--r--boost/unordered/detail/implementation.hpp6575
-rw-r--r--boost/unordered/detail/map.hpp93
-rw-r--r--boost/unordered/detail/set.hpp109
-rw-r--r--boost/unordered/unordered_map.hpp3474
-rw-r--r--boost/unordered/unordered_map_fwd.hpp74
-rw-r--r--boost/unordered/unordered_set.hpp2773
-rw-r--r--boost/unordered/unordered_set_fwd.hpp79
-rw-r--r--boost/utility/detail/result_of_iterate.hpp9
-rw-r--r--boost/utility/empty_deleter.hpp43
-rw-r--r--boost/uuid/basic_name_generator.hpp166
-rw-r--r--boost/uuid/detail/md5.hpp342
-rw-r--r--boost/uuid/detail/seed_rng.hpp320
-rw-r--r--boost/uuid/detail/sha1.hpp239
-rw-r--r--boost/uuid/detail/uuid_generic.ipp (renamed from boost/uuid/detail/uuid_generic.hpp)8
-rw-r--r--boost/uuid/detail/uuid_x86.ipp (renamed from boost/uuid/detail/uuid_x86.hpp)8
-rw-r--r--boost/uuid/name_generator.hpp129
-rw-r--r--boost/uuid/name_generator_md5.hpp25
-rw-r--r--boost/uuid/name_generator_sha1.hpp26
-rw-r--r--boost/uuid/random_generator.hpp2
-rw-r--r--boost/uuid/seed_rng.hpp327
-rw-r--r--boost/uuid/sha1.hpp237
-rw-r--r--boost/uuid/string_generator.hpp45
-rw-r--r--boost/uuid/uuid.hpp4
-rw-r--r--boost/variant/detail/apply_visitor_binary.hpp164
-rw-r--r--boost/variant/detail/apply_visitor_unary.hpp39
-rw-r--r--boost/variant/detail/multivisitors_cpp11_based.hpp84
-rw-r--r--boost/variant/detail/multivisitors_cpp14_based.hpp42
-rw-r--r--boost/variant/get.hpp11
-rw-r--r--boost/variant/variant.hpp98
-rw-r--r--boost/version.hpp4
-rw-r--r--boost/wave/cpp_context.hpp198
-rw-r--r--boost/wave/cpp_throw.hpp56
-rw-r--r--boost/wave/cpplexer/convert_trigraphs.hpp20
-rw-r--r--boost/wave/cpplexer/cpp_lex_interface.hpp8
-rw-r--r--boost/wave/cpplexer/cpp_lex_interface_generator.hpp26
-rw-r--r--boost/wave/cpplexer/cpp_lex_iterator.hpp50
-rw-r--r--boost/wave/cpplexer/cpp_lex_token.hpp46
-rw-r--r--boost/wave/cpplexer/detect_include_guards.hpp48
-rw-r--r--boost/wave/cpplexer/re2clex/aq.hpp8
-rw-r--r--boost/wave/cpplexer/re2clex/cpp_re.hpp4
-rw-r--r--boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp2
-rw-r--r--boost/wave/cpplexer/token_cache.hpp6
-rw-r--r--boost/wave/cpplexer/validate_universal_char.hpp2
-rw-r--r--boost/wave/grammars/cpp_chlit_grammar.hpp110
-rw-r--r--boost/wave/grammars/cpp_defined_grammar.hpp36
-rw-r--r--boost/wave/grammars/cpp_defined_grammar_gen.hpp18
-rw-r--r--boost/wave/grammars/cpp_expression_grammar.hpp200
-rw-r--r--boost/wave/grammars/cpp_expression_grammar_gen.hpp12
-rw-r--r--boost/wave/grammars/cpp_expression_value.hpp308
-rw-r--r--boost/wave/grammars/cpp_grammar.hpp214
-rw-r--r--boost/wave/grammars/cpp_grammar_gen.hpp12
-rw-r--r--boost/wave/grammars/cpp_intlit_grammar.hpp44
-rw-r--r--boost/wave/grammars/cpp_literal_grammar_gen.hpp14
-rw-r--r--boost/wave/grammars/cpp_predef_macros_gen.hpp10
-rw-r--r--boost/wave/grammars/cpp_predef_macros_grammar.hpp42
-rw-r--r--boost/wave/grammars/cpp_value_error.hpp6
-rw-r--r--boost/wave/language_support.hpp32
-rw-r--r--boost/wave/token_ids.hpp72
-rw-r--r--boost/wave/util/cpp_ifblock.hpp32
-rw-r--r--boost/wave/util/cpp_include_paths.hpp112
-rw-r--r--boost/wave/util/cpp_iterator.hpp64
-rw-r--r--boost/wave/util/cpp_macromap.hpp4
-rw-r--r--boost/wave/util/cpp_macromap_predef.hpp40
-rw-r--r--boost/wave/util/cpp_macromap_utils.hpp80
-rw-r--r--boost/wave/util/file_position.hpp28
-rw-r--r--boost/wave/util/flex_string.hpp648
-rw-r--r--boost/wave/util/functor_input.hpp20
-rw-r--r--boost/wave/util/insert_whitespace_detection.hpp182
-rw-r--r--boost/wave/util/interpret_pragma.hpp50
-rw-r--r--boost/wave/util/macro_definition.hpp32
-rw-r--r--boost/wave/util/macro_helpers.hpp60
-rw-r--r--boost/wave/util/pattern_parser.hpp8
-rw-r--r--boost/wave/util/symbol_table.hpp24
-rw-r--r--boost/wave/util/time_conversion_helper.hpp46
-rw-r--r--boost/wave/util/transform_iterator.hpp10
-rw-r--r--boost/wave/util/unput_queue_iterator.hpp80
-rw-r--r--boost/wave/wave_config.hpp144
-rw-r--r--boost/wave/wave_config_constant.hpp8
-rw-r--r--boost/wave/whitespace_handling.hpp76
-rw-r--r--boost/winapi/access_rights.hpp81
-rw-r--r--boost/winapi/apc.hpp43
-rw-r--r--boost/winapi/basic_types.hpp255
-rw-r--r--boost/winapi/bcrypt.hpp83
-rw-r--r--boost/winapi/character_code_conversion.hpp105
-rw-r--r--boost/winapi/condition_variable.hpp120
-rw-r--r--boost/winapi/config.hpp218
-rw-r--r--boost/winapi/critical_section.hpp189
-rw-r--r--boost/winapi/crypt.hpp241
-rw-r--r--boost/winapi/dbghelp.hpp171
-rw-r--r--boost/winapi/debugapi.hpp58
-rw-r--r--boost/winapi/detail/cast_ptr.hpp (renamed from boost/detail/winapi/detail/cast_ptr.hpp)23
-rw-r--r--boost/winapi/directory_management.hpp103
-rw-r--r--boost/winapi/dll.hpp238
-rw-r--r--boost/winapi/environment.hpp121
-rw-r--r--boost/winapi/error_codes.hpp2956
-rw-r--r--boost/winapi/error_handling.hpp153
-rw-r--r--boost/winapi/event.hpp190
-rw-r--r--boost/winapi/file_management.hpp594
-rw-r--r--boost/winapi/file_mapping.hpp259
-rw-r--r--boost/winapi/get_current_process.hpp31
-rw-r--r--boost/winapi/get_current_process_id.hpp30
-rw-r--r--boost/winapi/get_current_thread.hpp31
-rw-r--r--boost/winapi/get_current_thread_id.hpp31
-rw-r--r--boost/winapi/get_last_error.hpp30
-rw-r--r--boost/winapi/get_process_times.hpp60
-rw-r--r--boost/winapi/get_system_directory.hpp60
-rw-r--r--boost/winapi/get_thread_times.hpp55
-rw-r--r--boost/winapi/handle_info.hpp59
-rw-r--r--boost/winapi/handles.hpp69
-rw-r--r--boost/winapi/heap_memory.hpp83
-rw-r--r--boost/winapi/init_once.hpp120
-rw-r--r--boost/winapi/jobs.hpp146
-rw-r--r--boost/winapi/limits.hpp49
-rw-r--r--boost/winapi/local_memory.hpp53
-rw-r--r--boost/winapi/memory.hpp19
-rw-r--r--boost/winapi/mutex.hpp182
-rw-r--r--boost/winapi/overlapped.hpp51
-rw-r--r--boost/winapi/page_protection_flags.hpp54
-rw-r--r--boost/winapi/pipes.hpp318
-rw-r--r--boost/winapi/priority_class.hpp75
-rw-r--r--boost/winapi/process.hpp457
-rw-r--r--boost/winapi/security.hpp80
-rw-r--r--boost/winapi/semaphore.hpp186
-rw-r--r--boost/winapi/shell.hpp151
-rw-r--r--boost/winapi/show_window.hpp101
-rw-r--r--boost/winapi/srw_lock.hpp113
-rw-r--r--boost/winapi/stack_backtrace.hpp54
-rw-r--r--boost/winapi/synchronization.hpp27
-rw-r--r--boost/winapi/system.hpp87
-rw-r--r--boost/winapi/thread.hpp42
-rw-r--r--boost/winapi/thread_pool.hpp129
-rw-r--r--boost/winapi/time.hpp140
-rw-r--r--boost/winapi/timers.hpp45
-rw-r--r--boost/winapi/tls.hpp60
-rw-r--r--boost/winapi/wait.hpp113
-rw-r--r--boost/winapi/waitable_timer.hpp145
1576 files changed, 143293 insertions, 43603 deletions
diff --git a/boost/archive/basic_archive.hpp b/boost/archive/basic_archive.hpp
index ce7ac99a6d..9283974ff1 100644
--- a/boost/archive/basic_archive.hpp
+++ b/boost/archive/basic_archive.hpp
@@ -127,11 +127,11 @@ public:
}
// used for text output
- operator int () const {
+ operator base_type () const {
return t;
}
// used for text input
- operator int_least16_t &() {
+ operator base_type &() {
return t;
}
bool operator==(const class_id_type & rhs) const {
@@ -151,7 +151,10 @@ private:
public:
object_id_type(): t(0) {};
// note: presumes that size_t >= unsigned int.
- explicit object_id_type(const std::size_t & t_) : t(t_){
+ // use explicit cast to silence useless warning
+ explicit object_id_type(const std::size_t & t_) : t(static_cast<base_type>(t_)){
+ // make quadriple sure that we haven't lost any real integer
+ // precision
BOOST_ASSERT(t_ <= boost::integer_traits<base_type>::const_max);
}
object_id_type(const object_id_type & t_) :
@@ -162,11 +165,11 @@ public:
return *this;
}
// used for text output
- operator uint_least32_t () const {
+ operator base_type () const {
return t;
}
// used for text input
- operator uint_least32_t & () {
+ operator base_type & () {
return t;
}
bool operator==(const object_id_type & rhs) const {
diff --git a/boost/archive/codecvt_null.hpp b/boost/archive/codecvt_null.hpp
index 7bce2b9b32..3b39c8edef 100644
--- a/boost/archive/codecvt_null.hpp
+++ b/boost/archive/codecvt_null.hpp
@@ -63,9 +63,10 @@ public:
};
template<>
-class BOOST_SYMBOL_VISIBLE codecvt_null<wchar_t> : public std::codecvt<wchar_t, char, std::mbstate_t>
+class BOOST_WARCHIVE_DECL codecvt_null<wchar_t> :
+ public std::codecvt<wchar_t, char, std::mbstate_t>
{
- virtual BOOST_WARCHIVE_DECL BOOST_DLLEXPORT std::codecvt_base::result
+ virtual std::codecvt_base::result
do_out(
std::mbstate_t & state,
const wchar_t * first1,
@@ -74,8 +75,8 @@ class BOOST_SYMBOL_VISIBLE codecvt_null<wchar_t> : public std::codecvt<wchar_t,
char * first2,
char * last2,
char * & next2
- ) const BOOST_USED;
- virtual BOOST_WARCHIVE_DECL BOOST_DLLEXPORT std::codecvt_base::result
+ ) const;
+ virtual std::codecvt_base::result
do_in(
std::mbstate_t & state,
const char * first1,
@@ -84,7 +85,7 @@ class BOOST_SYMBOL_VISIBLE codecvt_null<wchar_t> : public std::codecvt<wchar_t,
wchar_t * first2,
wchar_t * last2,
wchar_t * & next2
- ) const BOOST_USED;
+ ) const;
virtual int do_encoding( ) const throw( ){
return sizeof(wchar_t) / sizeof(char);
}
@@ -92,10 +93,10 @@ class BOOST_SYMBOL_VISIBLE codecvt_null<wchar_t> : public std::codecvt<wchar_t,
return do_encoding();
}
public:
- BOOST_DLLEXPORT explicit codecvt_null(std::size_t no_locale_manage = 0) :
+ explicit codecvt_null(std::size_t no_locale_manage = 0) :
std::codecvt<wchar_t, char, std::mbstate_t>(no_locale_manage)
{}
- virtual ~codecvt_null(){};
+ //virtual ~codecvt_null(){};
};
} // namespace archive
diff --git a/boost/archive/detail/common_iarchive.hpp b/boost/archive/detail/common_iarchive.hpp
index 82304f1e5a..4176a8a5ef 100644
--- a/boost/archive/detail/common_iarchive.hpp
+++ b/boost/archive/detail/common_iarchive.hpp
@@ -35,11 +35,12 @@ class extended_type_info;
// note: referred to as Curiously Recurring Template Patter (CRTP)
template<class Archive>
-class BOOST_SYMBOL_VISIBLE common_iarchive :
+class BOOST_SYMBOL_VISIBLE common_iarchive :
public basic_iarchive,
public interface_iarchive<Archive>
{
friend class interface_iarchive<Archive>;
+ friend class basic_iarchive;
private:
virtual void vload(version_type & t){
* this->This() >> t;
diff --git a/boost/archive/detail/common_oarchive.hpp b/boost/archive/detail/common_oarchive.hpp
index ee42bbe597..f7428637e4 100644
--- a/boost/archive/detail/common_oarchive.hpp
+++ b/boost/archive/detail/common_oarchive.hpp
@@ -38,6 +38,7 @@ class BOOST_SYMBOL_VISIBLE common_oarchive :
public interface_oarchive<Archive>
{
friend class interface_oarchive<Archive>;
+ friend class basic_oarchive;
private:
virtual void vsave(const version_type t){
* this->This() << t;
diff --git a/boost/archive/detail/iserializer.hpp b/boost/archive/detail/iserializer.hpp
index 193e98a82e..6c2fd67ddd 100644
--- a/boost/archive/detail/iserializer.hpp
+++ b/boost/archive/detail/iserializer.hpp
@@ -57,11 +57,10 @@ namespace std{
#include <boost/serialization/assume_abstract.hpp>
-#ifndef BOOST_MSVC
- #define DONT_USE_HAS_NEW_OPERATOR ( \
- BOOST_WORKAROUND(__IBMCPP__, < 1210) \
- || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \
- )
+#if !defined(BOOST_MSVC) && \
+ (BOOST_WORKAROUND(__IBMCPP__, < 1210) || \
+ defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590))
+ #define DONT_USE_HAS_NEW_OPERATOR 1
#else
#define DONT_USE_HAS_NEW_OPERATOR 0
#endif
@@ -90,6 +89,8 @@ namespace std{
#include <boost/archive/detail/archive_serializer_map.hpp>
#include <boost/archive/detail/check.hpp>
+#include <boost/core/addressof.hpp>
+
namespace boost {
namespace serialization {
@@ -234,7 +235,7 @@ struct heap_allocation {
// that the class might have class specific new with NO
// class specific delete at all. Patches (compatible with
// C++03) welcome!
- delete t;
+ (operator delete)(t);
}
};
struct doesnt_have_new_operator {
@@ -243,7 +244,7 @@ struct heap_allocation {
}
static void invoke_delete(T * t) {
// Note: I'm reliance upon automatic conversion from T * to void * here
- delete t;
+ (operator delete)(t);
}
};
static T * invoke_new() {
@@ -406,7 +407,7 @@ struct load_non_pointer_type {
struct load_standard {
template<class T>
static void invoke(Archive &ar, const T & t){
- void * x = & const_cast<T &>(t);
+ void * x = boost::addressof(const_cast<T &>(t));
ar.load_object(
x,
boost::serialization::singleton<
@@ -484,7 +485,7 @@ struct load_pointer_type {
};
template<class T>
- static const basic_pointer_iserializer * register_type(Archive &ar, const T & /*t*/){
+ static const basic_pointer_iserializer * register_type(Archive &ar, const T* const /*t*/){
// there should never be any need to load an abstract polymorphic
// class pointer. Inhibiting code generation for this
// permits abstract base classes to be used - note: exception
@@ -523,7 +524,7 @@ struct load_pointer_type {
}
template<class T>
- static void check_load(T & /* t */){
+ static void check_load(T * const /* t */){
check_pointer_level< T >();
check_pointer_tracking< T >();
}
@@ -537,8 +538,8 @@ struct load_pointer_type {
template<class Tptr>
static void invoke(Archive & ar, Tptr & t){
- check_load(*t);
- const basic_pointer_iserializer * bpis_ptr = register_type(ar, *t);
+ check_load(t);
+ const basic_pointer_iserializer * bpis_ptr = register_type(ar, t);
const basic_pointer_iserializer * newbpis_ptr = ar.load_pointer(
// note major hack here !!!
// I tried every way to convert Tptr &t (where Tptr might
diff --git a/boost/archive/detail/oserializer.hpp b/boost/archive/detail/oserializer.hpp
index c120ec5507..612e1f2cb1 100644
--- a/boost/archive/detail/oserializer.hpp
+++ b/boost/archive/detail/oserializer.hpp
@@ -26,6 +26,7 @@
#include <cstddef> // NULL
#include <boost/config.hpp>
+
#include <boost/static_assert.hpp>
#include <boost/detail/workaround.hpp>
@@ -68,6 +69,8 @@
#include <boost/archive/detail/archive_serializer_map.hpp>
#include <boost/archive/detail/check.hpp>
+#include <boost/core/addressof.hpp>
+
namespace boost {
namespace serialization {
@@ -253,7 +256,7 @@ struct save_non_pointer_type {
template<class T>
static void invoke(Archive &ar, const T & t){
ar.save_object(
- & t,
+ boost::addressof(t),
boost::serialization::singleton<
oserializer<Archive, T>
>::get_const_instance()
@@ -261,6 +264,8 @@ struct save_non_pointer_type {
}
};
+
+
// adds class information to the archive. This includes
// serialization level and class version
struct save_conditional {
@@ -338,7 +343,7 @@ struct save_pointer_type {
};
template<class T>
- static const basic_pointer_oserializer * register_type(Archive &ar, T & /*t*/){
+ static const basic_pointer_oserializer * register_type(Archive &ar, T* const /*t*/){
// there should never be any need to save an abstract polymorphic
// class pointer. Inhibiting code generation for this
// permits abstract base classes to be used - note: exception
@@ -405,7 +410,7 @@ struct save_pointer_type {
// if its not a pointer to a more derived type
const void *vp = static_cast<const void *>(&t);
if(*this_type == *true_type){
- const basic_pointer_oserializer * bpos = register_type(ar, t);
+ const basic_pointer_oserializer * bpos = register_type(ar, &t);
ar.save_pointer(vp, bpos);
return;
}
@@ -464,7 +469,7 @@ struct save_pointer_type {
template<class TPtr>
static void invoke(Archive &ar, const TPtr t){
- register_type(ar, * t);
+ register_type(ar, t);
if(NULL == t){
basic_oarchive & boa
= boost::serialization::smart_cast_reference<basic_oarchive &>(ar);
diff --git a/boost/archive/detail/utf8_codecvt_facet.hpp b/boost/archive/detail/utf8_codecvt_facet.hpp
index a40104abea..00b2b4193d 100644
--- a/boost/archive/detail/utf8_codecvt_facet.hpp
+++ b/boost/archive/detail/utf8_codecvt_facet.hpp
@@ -13,27 +13,17 @@
#error "wide char i/o not supported on this platform"
#endif
-// std::codecvt_utf8 doesn't seem to work for any versions of msvc
-
-#if defined(_MSC_VER) || defined(BOOST_NO_CXX11_HDR_CODECVT)
- // use boost's utf8 codecvt facet
- #include <boost/archive/detail/decl.hpp>
- #define BOOST_UTF8_BEGIN_NAMESPACE \
- namespace boost { namespace archive { namespace detail {
- #define BOOST_UTF8_DECL BOOST_ARCHIVE_DECL
- #define BOOST_UTF8_END_NAMESPACE }}}
-
- #include <boost/detail/utf8_codecvt_facet.hpp>
-
- #undef BOOST_UTF8_END_NAMESPACE
- #undef BOOST_UTF8_DECL
- #undef BOOST_UTF8_BEGIN_NAMESPACE
-#else
- // use the standard vendor supplied facet
- #include <codecvt>
- namespace boost { namespace archive { namespace detail {
- typedef std::codecvt_utf8<wchar_t> utf8_codecvt_facet;
- } } }
-#endif
+// use boost's utf8 codecvt facet
+#include <boost/archive/detail/decl.hpp>
+#define BOOST_UTF8_BEGIN_NAMESPACE \
+ namespace boost { namespace archive { namespace detail {
+#define BOOST_UTF8_DECL BOOST_ARCHIVE_DECL
+#define BOOST_UTF8_END_NAMESPACE }}}
+
+#include <boost/detail/utf8_codecvt_facet.hpp>
+
+#undef BOOST_UTF8_END_NAMESPACE
+#undef BOOST_UTF8_DECL
+#undef BOOST_UTF8_BEGIN_NAMESPACE
#endif // BOOST_ARCHIVE_DETAIL_UTF8_CODECVT_FACET_HPP
diff --git a/boost/archive/impl/basic_binary_iprimitive.ipp b/boost/archive/impl/basic_binary_iprimitive.ipp
index bbe933ccf6..e2d051080e 100644
--- a/boost/archive/impl/basic_binary_iprimitive.ipp
+++ b/boost/archive/impl/basic_binary_iprimitive.ipp
@@ -85,6 +85,7 @@ basic_binary_iprimitive<Archive, Elem, Tr>::init()
}
#ifndef BOOST_NO_CWCHAR
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
template<class Archive, class Elem, class Tr>
BOOST_ARCHIVE_OR_WARCHIVE_DECL void
basic_binary_iprimitive<Archive, Elem, Tr>::load(wchar_t * ws)
@@ -95,6 +96,7 @@ basic_binary_iprimitive<Archive, Elem, Tr>::load(wchar_t * ws)
ws[l] = L'\0';
}
#endif
+#endif
template<class Archive, class Elem, class Tr>
BOOST_ARCHIVE_OR_WARCHIVE_DECL void
diff --git a/boost/archive/impl/xml_wiarchive_impl.ipp b/boost/archive/impl/xml_wiarchive_impl.ipp
index ee66c1263e..f572b76220 100644
--- a/boost/archive/impl/xml_wiarchive_impl.ipp
+++ b/boost/archive/impl/xml_wiarchive_impl.ipp
@@ -161,13 +161,13 @@ xml_wiarchive_impl<Archive>::xml_wiarchive_impl(
gimpl(new xml_wgrammar())
{
if(0 == (flags & no_codecvt)){
- std::locale l = std::locale(
+ archive_locale = std::locale(
is_.getloc(),
new boost::archive::detail::utf8_codecvt_facet
);
// libstdc++ crashes without this
is_.sync();
- is_.imbue(l);
+ is_.imbue(archive_locale);
}
if(0 == (flags & no_header))
init();
diff --git a/boost/archive/impl/xml_woarchive_impl.ipp b/boost/archive/impl/xml_woarchive_impl.ipp
index 01b1a052d5..630898b86a 100644
--- a/boost/archive/impl/xml_woarchive_impl.ipp
+++ b/boost/archive/impl/xml_woarchive_impl.ipp
@@ -103,7 +103,6 @@ xml_woarchive_impl<Archive>::save(const char * s){
template<class Archive>
BOOST_WARCHIVE_DECL void
xml_woarchive_impl<Archive>::save(const wchar_t * ws){
- os << ws;
typedef iterators::xml_escape<const wchar_t *> xmbtows;
std::copy(
xmbtows(ws),
@@ -126,12 +125,12 @@ xml_woarchive_impl<Archive>::xml_woarchive_impl(
basic_xml_oarchive<Archive>(flags)
{
if(0 == (flags & no_codecvt)){
- std::locale l = std::locale(
+ archive_locale = std::locale(
os_.getloc(),
new boost::archive::detail::utf8_codecvt_facet
);
os_.flush();
- os_.imbue(l);
+ os_.imbue(archive_locale);
}
if(0 == (flags & no_header))
this->init();
@@ -143,7 +142,7 @@ xml_woarchive_impl<Archive>::~xml_woarchive_impl(){
if(std::uncaught_exception())
return;
if(0 == (this->get_flags() & no_header)){
- save(L"</boost_serialization>\n");
+ os << L"</boost_serialization>";
}
}
diff --git a/boost/archive/iterators/mb_from_wchar.hpp b/boost/archive/iterators/mb_from_wchar.hpp
index 05df71c258..eb30480cc0 100644
--- a/boost/archive/iterators/mb_from_wchar.hpp
+++ b/boost/archive/iterators/mb_from_wchar.hpp
@@ -86,12 +86,15 @@ class mb_from_wchar
wchar_t value = * this->base_reference();
const wchar_t *wend;
char *bend;
- std::codecvt_base::result r = m_codecvt_facet.out(
- m_mbs,
- & value, & value + 1, wend,
- m_buffer, m_buffer + sizeof(m_buffer), bend
+ BOOST_VERIFY(
+ m_codecvt_facet.out(
+ m_mbs,
+ & value, & value + 1, wend,
+ m_buffer, m_buffer + sizeof(m_buffer), bend
+ )
+ ==
+ std::codecvt_base::ok
);
- BOOST_ASSERT(std::codecvt_base::ok == r);
m_bnext = 0;
m_bend = bend - m_buffer;
}
diff --git a/boost/archive/xml_wiarchive.hpp b/boost/archive/xml_wiarchive.hpp
index ac24289ac1..2ca3e5595e 100644
--- a/boost/archive/xml_wiarchive.hpp
+++ b/boost/archive/xml_wiarchive.hpp
@@ -62,6 +62,7 @@ protected:
friend class basic_xml_iarchive<Archive>;
friend class load_access;
#endif
+ std::locale archive_locale;
boost::scoped_ptr<xml_wgrammar> gimpl;
std::wistream & get_is(){
return is;
diff --git a/boost/asio.hpp b/boost/asio.hpp
index 114d871c0c..c8179c7ec0 100644
--- a/boost/asio.hpp
+++ b/boost/asio.hpp
@@ -17,6 +17,8 @@
# pragma once
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+#include <boost/asio/associated_allocator.hpp>
+#include <boost/asio/associated_executor.hpp>
#include <boost/asio/async_result.hpp>
#include <boost/asio/basic_datagram_socket.hpp>
#include <boost/asio/basic_deadline_timer.hpp>
@@ -31,6 +33,7 @@
#include <boost/asio/basic_stream_socket.hpp>
#include <boost/asio/basic_streambuf.hpp>
#include <boost/asio/basic_waitable_timer.hpp>
+#include <boost/asio/bind_executor.hpp>
#include <boost/asio/buffer.hpp>
#include <boost/asio/buffered_read_stream_fwd.hpp>
#include <boost/asio/buffered_read_stream.hpp>
@@ -45,7 +48,12 @@
#include <boost/asio/datagram_socket_service.hpp>
#include <boost/asio/deadline_timer_service.hpp>
#include <boost/asio/deadline_timer.hpp>
+#include <boost/asio/defer.hpp>
+#include <boost/asio/dispatch.hpp>
#include <boost/asio/error.hpp>
+#include <boost/asio/execution_context.hpp>
+#include <boost/asio/executor.hpp>
+#include <boost/asio/executor_work_guard.hpp>
#include <boost/asio/generic/basic_endpoint.hpp>
#include <boost/asio/generic/datagram_protocol.hpp>
#include <boost/asio/generic/raw_protocol.hpp>
@@ -55,10 +63,19 @@
#include <boost/asio/handler_continuation_hook.hpp>
#include <boost/asio/handler_invoke_hook.hpp>
#include <boost/asio/handler_type.hpp>
+#include <boost/asio/high_resolution_timer.hpp>
+#include <boost/asio/io_context.hpp>
+#include <boost/asio/io_context_strand.hpp>
#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_service_strand.hpp>
#include <boost/asio/ip/address.hpp>
#include <boost/asio/ip/address_v4.hpp>
+#include <boost/asio/ip/address_v4_iterator.hpp>
+#include <boost/asio/ip/address_v4_range.hpp>
#include <boost/asio/ip/address_v6.hpp>
+#include <boost/asio/ip/address_v6_iterator.hpp>
+#include <boost/asio/ip/address_v6_range.hpp>
+#include <boost/asio/ip/bad_address_cast.hpp>
#include <boost/asio/ip/basic_endpoint.hpp>
#include <boost/asio/ip/basic_resolver.hpp>
#include <boost/asio/ip/basic_resolver_entry.hpp>
@@ -67,24 +84,29 @@
#include <boost/asio/ip/host_name.hpp>
#include <boost/asio/ip/icmp.hpp>
#include <boost/asio/ip/multicast.hpp>
+#include <boost/asio/ip/resolver_base.hpp>
#include <boost/asio/ip/resolver_query_base.hpp>
#include <boost/asio/ip/resolver_service.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ip/udp.hpp>
#include <boost/asio/ip/unicast.hpp>
#include <boost/asio/ip/v6_only.hpp>
+#include <boost/asio/is_executor.hpp>
#include <boost/asio/is_read_buffered.hpp>
#include <boost/asio/is_write_buffered.hpp>
#include <boost/asio/local/basic_endpoint.hpp>
#include <boost/asio/local/connect_pair.hpp>
#include <boost/asio/local/datagram_protocol.hpp>
#include <boost/asio/local/stream_protocol.hpp>
+#include <boost/asio/packaged_task.hpp>
#include <boost/asio/placeholders.hpp>
#include <boost/asio/posix/basic_descriptor.hpp>
#include <boost/asio/posix/basic_stream_descriptor.hpp>
+#include <boost/asio/posix/descriptor.hpp>
#include <boost/asio/posix/descriptor_base.hpp>
#include <boost/asio/posix/stream_descriptor.hpp>
#include <boost/asio/posix/stream_descriptor_service.hpp>
+#include <boost/asio/post.hpp>
#include <boost/asio/raw_socket_service.hpp>
#include <boost/asio/read.hpp>
#include <boost/asio/read_at.hpp>
@@ -97,10 +119,17 @@
#include <boost/asio/signal_set_service.hpp>
#include <boost/asio/socket_acceptor_service.hpp>
#include <boost/asio/socket_base.hpp>
+#include <boost/asio/steady_timer.hpp>
#include <boost/asio/strand.hpp>
#include <boost/asio/stream_socket_service.hpp>
#include <boost/asio/streambuf.hpp>
+#include <boost/asio/system_context.hpp>
+#include <boost/asio/system_executor.hpp>
+#include <boost/asio/system_timer.hpp>
+#include <boost/asio/thread_pool.hpp>
#include <boost/asio/time_traits.hpp>
+#include <boost/asio/use_future.hpp>
+#include <boost/asio/uses_executor.hpp>
#include <boost/asio/version.hpp>
#include <boost/asio/wait_traits.hpp>
#include <boost/asio/waitable_timer_service.hpp>
@@ -110,6 +139,7 @@
#include <boost/asio/windows/basic_stream_handle.hpp>
#include <boost/asio/windows/object_handle.hpp>
#include <boost/asio/windows/object_handle_service.hpp>
+#include <boost/asio/windows/overlapped_handle.hpp>
#include <boost/asio/windows/overlapped_ptr.hpp>
#include <boost/asio/windows/random_access_handle.hpp>
#include <boost/asio/windows/random_access_handle_service.hpp>
diff --git a/boost/asio/associated_allocator.hpp b/boost/asio/associated_allocator.hpp
new file mode 100644
index 0000000000..b9ef5a452f
--- /dev/null
+++ b/boost/asio/associated_allocator.hpp
@@ -0,0 +1,133 @@
+//
+// associated_allocator.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_ASSOCIATED_ALLOCATOR_HPP
+#define BOOST_ASIO_ASSOCIATED_ALLOCATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/config.hpp>
+#include <memory>
+#include <boost/asio/detail/type_traits.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename>
+struct associated_allocator_check
+{
+ typedef void type;
+};
+
+template <typename T, typename E, typename = void>
+struct associated_allocator_impl
+{
+ typedef E type;
+
+ static type get(const T&, const E& e) BOOST_ASIO_NOEXCEPT
+ {
+ return e;
+ }
+};
+
+template <typename T, typename E>
+struct associated_allocator_impl<T, E,
+ typename associated_allocator_check<typename T::allocator_type>::type>
+{
+ typedef typename T::allocator_type type;
+
+ static type get(const T& t, const E&) BOOST_ASIO_NOEXCEPT
+ {
+ return t.get_allocator();
+ }
+};
+
+} // namespace detail
+
+/// Traits type used to obtain the allocator associated with an object.
+/**
+ * A program may specialise this traits type if the @c T template parameter in
+ * the specialisation is a user-defined type. The template parameter @c
+ * Allocator shall be a type meeting the Allocator requirements.
+ *
+ * Specialisations shall meet the following requirements, where @c t is a const
+ * reference to an object of type @c T, and @c a is an object of type @c
+ * Allocator.
+ *
+ * @li Provide a nested typedef @c type that identifies a type meeting the
+ * Allocator requirements.
+ *
+ * @li Provide a noexcept static member function named @c get, callable as @c
+ * get(t) and with return type @c type.
+ *
+ * @li Provide a noexcept static member function named @c get, callable as @c
+ * get(t,a) and with return type @c type.
+ */
+template <typename T, typename Allocator = std::allocator<void> >
+struct associated_allocator
+{
+ /// If @c T has a nested type @c allocator_type, <tt>T::allocator_type</tt>.
+ /// Otherwise @c Allocator.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef see_below type;
+#else // defined(GENERATING_DOCUMENTATION)
+ typedef typename detail::associated_allocator_impl<T, Allocator>::type type;
+#endif // defined(GENERATING_DOCUMENTATION)
+
+ /// If @c T has a nested type @c allocator_type, returns
+ /// <tt>t.get_allocator()</tt>. Otherwise returns @c a.
+ static type get(const T& t,
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
+ {
+ return detail::associated_allocator_impl<T, Allocator>::get(t, a);
+ }
+};
+
+/// Helper function to obtain an object's associated allocator.
+/**
+ * @returns <tt>associated_allocator<T>::get(t)</tt>
+ */
+template <typename T>
+inline typename associated_allocator<T>::type
+get_associated_allocator(const T& t) BOOST_ASIO_NOEXCEPT
+{
+ return associated_allocator<T>::get(t);
+}
+
+/// Helper function to obtain an object's associated allocator.
+/**
+ * @returns <tt>associated_allocator<T, Allocator>::get(t, a)</tt>
+ */
+template <typename T, typename Allocator>
+inline typename associated_allocator<T, Allocator>::type
+get_associated_allocator(const T& t, const Allocator& a) BOOST_ASIO_NOEXCEPT
+{
+ return associated_allocator<T, Allocator>::get(t, a);
+}
+
+#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES)
+
+template <typename T, typename Allocator = std::allocator<void> >
+using associated_allocator_t
+ = typename associated_allocator<T, Allocator>::type;
+
+#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES)
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_ASSOCIATED_ALLOCATOR_HPP
diff --git a/boost/asio/associated_executor.hpp b/boost/asio/associated_executor.hpp
new file mode 100644
index 0000000000..d0347afcfa
--- /dev/null
+++ b/boost/asio/associated_executor.hpp
@@ -0,0 +1,151 @@
+//
+// associated_executor.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_ASSOCIATED_EXECUTOR_HPP
+#define BOOST_ASIO_ASSOCIATED_EXECUTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/config.hpp>
+#include <boost/asio/detail/type_traits.hpp>
+#include <boost/asio/is_executor.hpp>
+#include <boost/asio/system_executor.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename>
+struct associated_executor_check
+{
+ typedef void type;
+};
+
+template <typename T, typename E, typename = void>
+struct associated_executor_impl
+{
+ typedef E type;
+
+ static type get(const T&, const E& e) BOOST_ASIO_NOEXCEPT
+ {
+ return e;
+ }
+};
+
+template <typename T, typename E>
+struct associated_executor_impl<T, E,
+ typename associated_executor_check<typename T::executor_type>::type>
+{
+ typedef typename T::executor_type type;
+
+ static type get(const T& t, const E&) BOOST_ASIO_NOEXCEPT
+ {
+ return t.get_executor();
+ }
+};
+
+} // namespace detail
+
+/// Traits type used to obtain the executor associated with an object.
+/**
+ * A program may specialise this traits type if the @c T template parameter in
+ * the specialisation is a user-defined type. The template parameter @c
+ * Executor shall be a type meeting the Executor requirements.
+ *
+ * Specialisations shall meet the following requirements, where @c t is a const
+ * reference to an object of type @c T, and @c e is an object of type @c
+ * Executor.
+ *
+ * @li Provide a nested typedef @c type that identifies a type meeting the
+ * Executor requirements.
+ *
+ * @li Provide a noexcept static member function named @c get, callable as @c
+ * get(t) and with return type @c type.
+ *
+ * @li Provide a noexcept static member function named @c get, callable as @c
+ * get(t,e) and with return type @c type.
+ */
+template <typename T, typename Executor = system_executor>
+struct associated_executor
+{
+ /// If @c T has a nested type @c executor_type, <tt>T::executor_type</tt>.
+ /// Otherwise @c Executor.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef see_below type;
+#else // defined(GENERATING_DOCUMENTATION)
+ typedef typename detail::associated_executor_impl<T, Executor>::type type;
+#endif // defined(GENERATING_DOCUMENTATION)
+
+ /// If @c T has a nested type @c executor_type, returns
+ /// <tt>t.get_executor()</tt>. Otherwise returns @c ex.
+ static type get(const T& t,
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
+ {
+ return detail::associated_executor_impl<T, Executor>::get(t, ex);
+ }
+};
+
+/// Helper function to obtain an object's associated executor.
+/**
+ * @returns <tt>associated_executor<T>::get(t)</tt>
+ */
+template <typename T>
+inline typename associated_executor<T>::type
+get_associated_executor(const T& t) BOOST_ASIO_NOEXCEPT
+{
+ return associated_executor<T>::get(t);
+}
+
+/// Helper function to obtain an object's associated executor.
+/**
+ * @returns <tt>associated_executor<T, Executor>::get(t, ex)</tt>
+ */
+template <typename T, typename Executor>
+inline typename associated_executor<T, Executor>::type
+get_associated_executor(const T& t, const Executor& ex,
+ typename enable_if<is_executor<
+ Executor>::value>::type* = 0) BOOST_ASIO_NOEXCEPT
+{
+ return associated_executor<T, Executor>::get(t, ex);
+}
+
+/// Helper function to obtain an object's associated executor.
+/**
+ * @returns <tt>associated_executor<T, typename
+ * ExecutionContext::executor_type>::get(t, ctx.get_executor())</tt>
+ */
+template <typename T, typename ExecutionContext>
+inline typename associated_executor<T,
+ typename ExecutionContext::executor_type>::type
+get_associated_executor(const T& t, ExecutionContext& ctx,
+ typename enable_if<is_convertible<ExecutionContext&,
+ execution_context&>::value>::type* = 0) BOOST_ASIO_NOEXCEPT
+{
+ return associated_executor<T,
+ typename ExecutionContext::executor_type>::get(t, ctx.get_executor());
+}
+
+#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES)
+
+template <typename T, typename Executor = system_executor>
+using associated_executor_t = typename associated_executor<T, Executor>::type;
+
+#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES)
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_ASSOCIATED_EXECUTOR_HPP
diff --git a/boost/asio/async_result.hpp b/boost/asio/async_result.hpp
index 6290b8462a..f49f2eb2e0 100644
--- a/boost/asio/async_result.hpp
+++ b/boost/asio/async_result.hpp
@@ -16,6 +16,7 @@
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
#include <boost/asio/detail/config.hpp>
+#include <boost/asio/detail/type_traits.hpp>
#include <boost/asio/handler_type.hpp>
#include <boost/asio/detail/push_options.hpp>
@@ -25,10 +26,93 @@ namespace asio {
/// An interface for customising the behaviour of an initiating function.
/**
+ * The async_result traits class is used for determining:
+ *
+ * @li the concrete completion handler type to be called at the end of the
+ * asynchronous operation;
+ *
+ * @li the initiating function return type; and
+ *
+ * @li how the return value of the initiating function is obtained.
+ *
+ * The trait allows the handler and return types to be determined at the point
+ * where the specific completion handler signature is known.
+ *
+ * This template may be specialised for user-defined completion token types.
+ * The primary template assumes that the CompletionToken is the completion
+ * handler.
+ */
+#if defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+template <typename CompletionToken, typename Signature>
+#else // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+template <typename CompletionToken, typename Signature = void>
+#endif // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+class async_result
+{
+public:
+#if defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ /// The concrete completion handler type for the specific signature.
+ typedef CompletionToken completion_handler_type;
+
+ /// The return type of the initiating function.
+ typedef void return_type;
+#else // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ // For backward compatibility, determine the concrete completion handler type
+ // by using the legacy handler_type trait.
+ typedef typename handler_type<CompletionToken, Signature>::type
+ completion_handler_type;
+
+ // For backward compatibility, determine the initiating function return type
+ // using the legacy single-parameter version of async_result.
+ typedef typename async_result<completion_handler_type>::type return_type;
+#endif // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+
+ /// Construct an async result from a given handler.
+ /**
+ * When using a specalised async_result, the constructor has an opportunity
+ * to initialise some state associated with the completion handler, which is
+ * then returned from the initiating function.
+ */
+ explicit async_result(completion_handler_type& h)
+#if defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ // No data members to initialise.
+#else // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ : legacy_result_(h)
+#endif // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ {
+ (void)h;
+ }
+
+ /// Obtain the value to be returned from the initiating function.
+ return_type get()
+ {
+#if defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ // Nothing to do.
+#else // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ return legacy_result_.get();
+#endif // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ }
+
+private:
+ async_result(const async_result&) BOOST_ASIO_DELETED;
+ async_result& operator=(const async_result&) BOOST_ASIO_DELETED;
+
+#if defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ // No data members.
+#else // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+ async_result<completion_handler_type> legacy_result_;
+#endif // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
+};
+
+#if !defined(BOOST_ASIO_NO_DEPRECATED)
+
+/// (Deprecated: Use two-parameter version of async_result.) An interface for
+/// customising the behaviour of an initiating function.
+/**
* This template may be specialised for user-defined handler types.
*/
template <typename Handler>
-class async_result
+class async_result<Handler>
{
public:
/// The return type of the initiating function.
@@ -50,29 +134,65 @@ public:
}
};
-namespace detail {
+#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
-// Helper template to deduce the true type of a handler, capture a local copy
-// of the handler, and then create an async_result for the handler.
-template <typename Handler, typename Signature>
-struct async_result_init
+/// Helper template to deduce the handler type from a CompletionToken, capture
+/// a local copy of the handler, and then create an async_result for the
+/// handler.
+template <typename CompletionToken, typename Signature>
+struct async_completion
{
- explicit async_result_init(BOOST_ASIO_MOVE_ARG(Handler) orig_handler)
- : handler(BOOST_ASIO_MOVE_CAST(Handler)(orig_handler)),
- result(handler)
+ /// The real handler type to be used for the asynchronous operation.
+ typedef typename boost::asio::async_result<
+ typename decay<CompletionToken>::type,
+ Signature>::completion_handler_type completion_handler_type;
+
+#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ /// Constructor.
+ /**
+ * The constructor creates the concrete completion handler and makes the link
+ * between the handler and the asynchronous result.
+ */
+ explicit async_completion(CompletionToken& token)
+ : completion_handler(static_cast<typename conditional<
+ is_same<CompletionToken, completion_handler_type>::value,
+ completion_handler_type&, CompletionToken&&>::type>(token)),
+ result(completion_handler)
+ {
+ }
+#else // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ explicit async_completion(typename decay<CompletionToken>::type& token)
+ : completion_handler(token),
+ result(completion_handler)
{
}
- typename handler_type<Handler, Signature>::type handler;
- async_result<typename handler_type<Handler, Signature>::type> result;
+ explicit async_completion(const typename decay<CompletionToken>::type& token)
+ : completion_handler(token),
+ result(completion_handler)
+ {
+ }
+#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+
+ /// A copy of, or reference to, a real handler object.
+#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ typename conditional<
+ is_same<CompletionToken, completion_handler_type>::value,
+ completion_handler_type&, completion_handler_type>::type completion_handler;
+#else // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ completion_handler_type completion_handler;
+#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+
+ /// The result of the asynchronous operation's initiating function.
+ async_result<typename decay<CompletionToken>::type, Signature> result;
};
-template <typename Handler, typename Signature>
-struct async_result_type_helper
+namespace detail {
+
+template <typename CompletionToken, typename Signature>
+struct async_result_helper
+ : async_result<typename decay<CompletionToken>::type, Signature>
{
- typedef typename async_result<
- typename handler_type<Handler, Signature>::type
- >::type type;
};
} // namespace detail
@@ -82,15 +202,22 @@ struct async_result_type_helper
#include <boost/asio/detail/pop_options.hpp>
#if defined(GENERATING_DOCUMENTATION)
-# define BOOST_ASIO_INITFN_RESULT_TYPE(h, sig) \
+# define BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) \
void_or_deduced
#elif defined(_MSC_VER) && (_MSC_VER < 1500)
-# define BOOST_ASIO_INITFN_RESULT_TYPE(h, sig) \
- typename ::boost::asio::detail::async_result_type_helper<h, sig>::type
+# define BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) \
+ typename ::boost::asio::detail::async_result_helper< \
+ ct, sig>::return_type
+#define BOOST_ASIO_HANDLER_TYPE(ct, sig) \
+ typename ::boost::asio::detail::async_result_helper< \
+ ct, sig>::completion_handler_type
#else
-# define BOOST_ASIO_INITFN_RESULT_TYPE(h, sig) \
+# define BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) \
+ typename ::boost::asio::async_result< \
+ typename ::boost::asio::decay<ct>::type, sig>::return_type
+#define BOOST_ASIO_HANDLER_TYPE(ct, sig) \
typename ::boost::asio::async_result< \
- typename ::boost::asio::handler_type<h, sig>::type>::type
+ typename ::boost::asio::decay<ct>::type, sig>::completion_handler_type
#endif
#endif // BOOST_ASIO_ASYNC_RESULT_HPP
diff --git a/boost/asio/basic_datagram_socket.hpp b/boost/asio/basic_datagram_socket.hpp
index 22801ee081..c2aa00bf48 100644
--- a/boost/asio/basic_datagram_socket.hpp
+++ b/boost/asio/basic_datagram_socket.hpp
@@ -18,12 +18,15 @@
#include <boost/asio/detail/config.hpp>
#include <cstddef>
#include <boost/asio/basic_socket.hpp>
-#include <boost/asio/datagram_socket_service.hpp>
#include <boost/asio/detail/handler_type_requirements.hpp>
#include <boost/asio/detail/throw_error.hpp>
#include <boost/asio/detail/type_traits.hpp>
#include <boost/asio/error.hpp>
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# include <boost/asio/datagram_socket_service.hpp>
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#include <boost/asio/detail/push_options.hpp>
namespace boost {
@@ -38,18 +41,19 @@ namespace asio {
* @e Distinct @e objects: Safe.@n
* @e Shared @e objects: Unsafe.
*/
-template <typename Protocol,
- typename DatagramSocketService = datagram_socket_service<Protocol> >
+template <typename Protocol
+ BOOST_ASIO_SVC_TPARAM_DEF1(= datagram_socket_service<Protocol>)>
class basic_datagram_socket
- : public basic_socket<Protocol, DatagramSocketService>
+ : public basic_socket<Protocol BOOST_ASIO_SVC_TARG>
{
public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename DatagramSocketService::native_handle_type native_type;
-
/// The native representation of a socket.
- typedef typename DatagramSocketService::native_handle_type native_handle_type;
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_handle_type;
+#else
+ typedef typename basic_socket<
+ Protocol BOOST_ASIO_SVC_TARG>::native_handle_type native_handle_type;
+#endif
/// The protocol type.
typedef Protocol protocol_type;
@@ -62,12 +66,12 @@ public:
* This constructor creates a datagram socket without opening it. The open()
* function must be called before data can be sent or received on the socket.
*
- * @param io_service The io_service object that the datagram socket will use
+ * @param io_context The io_context object that the datagram socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*/
- explicit basic_datagram_socket(boost::asio::io_service& io_service)
- : basic_socket<Protocol, DatagramSocketService>(io_service)
+ explicit basic_datagram_socket(boost::asio::io_context& io_context)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context)
{
}
@@ -75,7 +79,7 @@ public:
/**
* This constructor creates and opens a datagram socket.
*
- * @param io_service The io_service object that the datagram socket will use
+ * @param io_context The io_context object that the datagram socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*
@@ -83,9 +87,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_datagram_socket(boost::asio::io_service& io_service,
+ basic_datagram_socket(boost::asio::io_context& io_context,
const protocol_type& protocol)
- : basic_socket<Protocol, DatagramSocketService>(io_service, protocol)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context, protocol)
{
}
@@ -96,7 +100,7 @@ public:
* to the specified endpoint on the local machine. The protocol used is the
* protocol associated with the given endpoint.
*
- * @param io_service The io_service object that the datagram socket will use
+ * @param io_context The io_context object that the datagram socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*
@@ -105,9 +109,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_datagram_socket(boost::asio::io_service& io_service,
+ basic_datagram_socket(boost::asio::io_context& io_context,
const endpoint_type& endpoint)
- : basic_socket<Protocol, DatagramSocketService>(io_service, endpoint)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context, endpoint)
{
}
@@ -116,7 +120,7 @@ public:
* This constructor creates a datagram socket object to hold an existing
* native socket.
*
- * @param io_service The io_service object that the datagram socket will use
+ * @param io_context The io_context object that the datagram socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*
@@ -126,10 +130,10 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_datagram_socket(boost::asio::io_service& io_service,
+ basic_datagram_socket(boost::asio::io_context& io_context,
const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, DatagramSocketService>(
- io_service, protocol, native_socket)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(
+ io_context, protocol, native_socket)
{
}
@@ -142,11 +146,10 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
+ * constructed using the @c basic_datagram_socket(io_context&) constructor.
*/
basic_datagram_socket(basic_datagram_socket&& other)
- : basic_socket<Protocol, DatagramSocketService>(
- BOOST_ASIO_MOVE_CAST(basic_datagram_socket)(other))
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other))
{
}
@@ -159,12 +162,11 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
+ * constructed using the @c basic_datagram_socket(io_context&) constructor.
*/
basic_datagram_socket& operator=(basic_datagram_socket&& other)
{
- basic_socket<Protocol, DatagramSocketService>::operator=(
- BOOST_ASIO_MOVE_CAST(basic_datagram_socket)(other));
+ basic_socket<Protocol BOOST_ASIO_SVC_TARG>::operator=(std::move(other));
return *this;
}
@@ -177,15 +179,13 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
+ * constructed using the @c basic_datagram_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename DatagramSocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
basic_datagram_socket(
- basic_datagram_socket<Protocol1, DatagramSocketService1>&& other,
+ basic_datagram_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other,
typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, DatagramSocketService>(
- BOOST_ASIO_MOVE_CAST2(basic_datagram_socket<
- Protocol1, DatagramSocketService1>)(other))
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other))
{
}
@@ -199,20 +199,27 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_datagram_socket(io_service&) constructor.
+ * constructed using the @c basic_datagram_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename DatagramSocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
typename enable_if<is_convertible<Protocol1, Protocol>::value,
basic_datagram_socket>::type& operator=(
- basic_datagram_socket<Protocol1, DatagramSocketService1>&& other)
+ basic_datagram_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other)
{
- basic_socket<Protocol, DatagramSocketService>::operator=(
- BOOST_ASIO_MOVE_CAST2(basic_datagram_socket<
- Protocol1, DatagramSocketService1>)(other));
+ basic_socket<Protocol BOOST_ASIO_SVC_TARG>::operator=(std::move(other));
return *this;
}
#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ /// Destroys the socket.
+ /**
+ * This function destroys the socket, cancelling any outstanding asynchronous
+ * operations associated with the socket as if by calling @c cancel.
+ */
+ ~basic_datagram_socket()
+ {
+ }
+
/// Send some data on a connected socket.
/**
* This function is used to send data on the datagram socket. The function
@@ -318,7 +325,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_send operation can only be used with a connected socket.
* Use the async_send_to function to send data on an unconnected datagram
@@ -343,8 +350,18 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send(this->get_implementation(),
buffers, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send(this->get_implementation(),
+ buffers, 0, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous send on a connected socket.
@@ -369,7 +386,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_send operation can only be used with a connected socket.
* Use the async_send_to function to send data on an unconnected datagram
@@ -386,8 +403,18 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send(this->get_implementation(),
buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send(this->get_implementation(),
+ buffers, flags, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Send a datagram to the specified endpoint.
@@ -501,7 +528,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To send a single data buffer use the @ref buffer function as follows:
@@ -526,9 +553,20 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send_to(
this->get_implementation(), buffers, destination, 0,
BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send_to(
+ this->get_implementation(), buffers, destination, 0,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous send.
@@ -556,7 +594,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*/
template <typename ConstBufferSequence, typename WriteHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
@@ -569,9 +607,20 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send_to(
this->get_implementation(), buffers, destination, flags,
BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send_to(
+ this->get_implementation(), buffers, destination, flags,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Receive some data on a connected socket.
@@ -683,7 +732,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_receive operation can only be used with a connected socket.
* Use the async_receive_from function to receive data on an unconnected
@@ -709,8 +758,18 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive(this->get_implementation(),
buffers, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive(this->get_implementation(),
+ buffers, 0, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous receive on a connected socket.
@@ -735,7 +794,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_receive operation can only be used with a connected socket.
* Use the async_receive_from function to receive data on an unconnected
@@ -752,8 +811,18 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive(this->get_implementation(),
buffers, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive(this->get_implementation(),
+ buffers, flags, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Receive a datagram with the endpoint of the sender.
@@ -870,7 +939,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To receive into a single data buffer use the @ref buffer function as
@@ -892,9 +961,20 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive_from(
this->get_implementation(), buffers, sender_endpoint, 0,
BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive_from(
+ this->get_implementation(), buffers, sender_endpoint, 0,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous receive.
@@ -924,7 +1004,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*/
template <typename MutableBufferSequence, typename ReadHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
@@ -937,9 +1017,20 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive_from(
this->get_implementation(), buffers, sender_endpoint, flags,
BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive_from(
+ this->get_implementation(), buffers, sender_endpoint, flags,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
};
diff --git a/boost/asio/basic_deadline_timer.hpp b/boost/asio/basic_deadline_timer.hpp
index 930370046b..f7179a853e 100644
--- a/boost/asio/basic_deadline_timer.hpp
+++ b/boost/asio/basic_deadline_timer.hpp
@@ -22,10 +22,17 @@
#include <cstddef>
#include <boost/asio/basic_io_object.hpp>
-#include <boost/asio/deadline_timer_service.hpp>
#include <boost/asio/detail/handler_type_requirements.hpp>
#include <boost/asio/detail/throw_error.hpp>
#include <boost/asio/error.hpp>
+#include <boost/asio/time_traits.hpp>
+
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# include <boost/asio/deadline_timer_service.hpp>
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# include <boost/asio/detail/deadline_timer_service.hpp>
+# define BOOST_ASIO_SVC_T detail::deadline_timer_service<TimeTraits>
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
#include <boost/asio/detail/push_options.hpp>
@@ -51,7 +58,7 @@ namespace asio {
* Performing a blocking wait:
* @code
* // Construct a timer without setting an expiry time.
- * boost::asio::deadline_timer timer(io_service);
+ * boost::asio::deadline_timer timer(io_context);
*
* // Set an expiry time relative to now.
* timer.expires_from_now(boost::posix_time::seconds(5));
@@ -74,7 +81,7 @@ namespace asio {
* ...
*
* // Construct a timer with an absolute expiry time.
- * boost::asio::deadline_timer timer(io_service,
+ * boost::asio::deadline_timer timer(io_context,
* boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
*
* // Start an asynchronous wait.
@@ -121,12 +128,15 @@ namespace asio {
* it contains the value boost::asio::error::operation_aborted.
*/
template <typename Time,
- typename TimeTraits = boost::asio::time_traits<Time>,
- typename TimerService = deadline_timer_service<Time, TimeTraits> >
+ typename TimeTraits = boost::asio::time_traits<Time>
+ BOOST_ASIO_SVC_TPARAM_DEF2(= deadline_timer_service<Time, TimeTraits>)>
class basic_deadline_timer
- : public basic_io_object<TimerService>
+ : BOOST_ASIO_SVC_ACCESS basic_io_object<BOOST_ASIO_SVC_T>
{
public:
+ /// The type of the executor associated with the object.
+ typedef io_context::executor_type executor_type;
+
/// The time traits type.
typedef TimeTraits traits_type;
@@ -142,11 +152,11 @@ public:
* expires_at() or expires_from_now() functions must be called to set an
* expiry time before the timer can be waited on.
*
- * @param io_service The io_service object that the timer will use to dispatch
+ * @param io_context The io_context object that the timer will use to dispatch
* handlers for any asynchronous operations performed on the timer.
*/
- explicit basic_deadline_timer(boost::asio::io_service& io_service)
- : basic_io_object<TimerService>(io_service)
+ explicit basic_deadline_timer(boost::asio::io_context& io_context)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
}
@@ -154,18 +164,18 @@ public:
/**
* This constructor creates a timer and sets the expiry time.
*
- * @param io_service The io_service object that the timer will use to dispatch
+ * @param io_context The io_context object that the timer will use to dispatch
* handlers for any asynchronous operations performed on the timer.
*
* @param expiry_time The expiry time to be used for the timer, expressed
* as an absolute time.
*/
- basic_deadline_timer(boost::asio::io_service& io_service,
+ basic_deadline_timer(boost::asio::io_context& io_context,
const time_type& expiry_time)
- : basic_io_object<TimerService>(io_service)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
boost::system::error_code ec;
- this->service.expires_at(this->implementation, expiry_time, ec);
+ this->get_service().expires_at(this->get_implementation(), expiry_time, ec);
boost::asio::detail::throw_error(ec, "expires_at");
}
@@ -173,21 +183,105 @@ public:
/**
* This constructor creates a timer and sets the expiry time.
*
- * @param io_service The io_service object that the timer will use to dispatch
+ * @param io_context The io_context object that the timer will use to dispatch
* handlers for any asynchronous operations performed on the timer.
*
* @param expiry_time The expiry time to be used for the timer, relative to
* now.
*/
- basic_deadline_timer(boost::asio::io_service& io_service,
+ basic_deadline_timer(boost::asio::io_context& io_context,
const duration_type& expiry_time)
- : basic_io_object<TimerService>(io_service)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
boost::system::error_code ec;
- this->service.expires_from_now(this->implementation, expiry_time, ec);
+ this->get_service().expires_from_now(
+ this->get_implementation(), expiry_time, ec);
boost::asio::detail::throw_error(ec, "expires_from_now");
}
+#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ /// Move-construct a basic_deadline_timer from another.
+ /**
+ * This constructor moves a timer from one object to another.
+ *
+ * @param other The other basic_deadline_timer object from which the move will
+ * occur.
+ *
+ * @note Following the move, the moved-from object is in the same state as if
+ * constructed using the @c basic_deadline_timer(io_context&) constructor.
+ */
+ basic_deadline_timer(basic_deadline_timer&& other)
+ : basic_io_object<BOOST_ASIO_SVC_T>(std::move(other))
+ {
+ }
+
+ /// Move-assign a basic_deadline_timer from another.
+ /**
+ * This assignment operator moves a timer from one object to another. Cancels
+ * any outstanding asynchronous operations associated with the target object.
+ *
+ * @param other The other basic_deadline_timer object from which the move will
+ * occur.
+ *
+ * @note Following the move, the moved-from object is in the same state as if
+ * constructed using the @c basic_deadline_timer(io_context&) constructor.
+ */
+ basic_deadline_timer& operator=(basic_deadline_timer&& other)
+ {
+ basic_io_object<BOOST_ASIO_SVC_T>::operator=(std::move(other));
+ return *this;
+ }
+#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+
+ /// Destroys the timer.
+ /**
+ * This function destroys the timer, cancelling any outstanding asynchronous
+ * wait operations associated with the timer as if by calling @c cancel.
+ */
+ ~basic_deadline_timer()
+ {
+ }
+
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ // These functions are provided by basic_io_object<>.
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+#if !defined(BOOST_ASIO_NO_DEPRECATED)
+ /// (Deprecated: Use get_executor().) Get the io_context associated with the
+ /// object.
+ /**
+ * This function may be used to obtain the io_context object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_context object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_context& get_io_context()
+ {
+ return basic_io_object<BOOST_ASIO_SVC_T>::get_io_context();
+ }
+
+ /// (Deprecated: Use get_executor().) Get the io_context associated with the
+ /// object.
+ /**
+ * This function may be used to obtain the io_context object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_context object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_context& get_io_service()
+ {
+ return basic_io_object<BOOST_ASIO_SVC_T>::get_io_service();
+ }
+#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
+
+ /// Get the executor associated with the object.
+ executor_type get_executor() BOOST_ASIO_NOEXCEPT
+ {
+ return basic_io_object<BOOST_ASIO_SVC_T>::get_executor();
+ }
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
/// Cancel any asynchronous operations that are waiting on the timer.
/**
* This function forces the completion of any pending asynchronous wait
@@ -213,7 +307,7 @@ public:
std::size_t cancel()
{
boost::system::error_code ec;
- std::size_t s = this->service.cancel(this->implementation, ec);
+ std::size_t s = this->get_service().cancel(this->get_implementation(), ec);
boost::asio::detail::throw_error(ec, "cancel");
return s;
}
@@ -242,7 +336,7 @@ public:
*/
std::size_t cancel(boost::system::error_code& ec)
{
- return this->service.cancel(this->implementation, ec);
+ return this->get_service().cancel(this->get_implementation(), ec);
}
/// Cancels one asynchronous operation that is waiting on the timer.
@@ -272,7 +366,8 @@ public:
std::size_t cancel_one()
{
boost::system::error_code ec;
- std::size_t s = this->service.cancel_one(this->implementation, ec);
+ std::size_t s = this->get_service().cancel_one(
+ this->get_implementation(), ec);
boost::asio::detail::throw_error(ec, "cancel_one");
return s;
}
@@ -303,7 +398,7 @@ public:
*/
std::size_t cancel_one(boost::system::error_code& ec)
{
- return this->service.cancel_one(this->implementation, ec);
+ return this->get_service().cancel_one(this->get_implementation(), ec);
}
/// Get the timer's expiry time as an absolute time.
@@ -313,7 +408,7 @@ public:
*/
time_type expires_at() const
{
- return this->service.expires_at(this->implementation);
+ return this->get_service().expires_at(this->get_implementation());
}
/// Set the timer's expiry time as an absolute time.
@@ -341,8 +436,8 @@ public:
std::size_t expires_at(const time_type& expiry_time)
{
boost::system::error_code ec;
- std::size_t s = this->service.expires_at(
- this->implementation, expiry_time, ec);
+ std::size_t s = this->get_service().expires_at(
+ this->get_implementation(), expiry_time, ec);
boost::asio::detail::throw_error(ec, "expires_at");
return s;
}
@@ -372,7 +467,8 @@ public:
std::size_t expires_at(const time_type& expiry_time,
boost::system::error_code& ec)
{
- return this->service.expires_at(this->implementation, expiry_time, ec);
+ return this->get_service().expires_at(
+ this->get_implementation(), expiry_time, ec);
}
/// Get the timer's expiry time relative to now.
@@ -382,7 +478,7 @@ public:
*/
duration_type expires_from_now() const
{
- return this->service.expires_from_now(this->implementation);
+ return this->get_service().expires_from_now(this->get_implementation());
}
/// Set the timer's expiry time relative to now.
@@ -410,8 +506,8 @@ public:
std::size_t expires_from_now(const duration_type& expiry_time)
{
boost::system::error_code ec;
- std::size_t s = this->service.expires_from_now(
- this->implementation, expiry_time, ec);
+ std::size_t s = this->get_service().expires_from_now(
+ this->get_implementation(), expiry_time, ec);
boost::asio::detail::throw_error(ec, "expires_from_now");
return s;
}
@@ -441,8 +537,8 @@ public:
std::size_t expires_from_now(const duration_type& expiry_time,
boost::system::error_code& ec)
{
- return this->service.expires_from_now(
- this->implementation, expiry_time, ec);
+ return this->get_service().expires_from_now(
+ this->get_implementation(), expiry_time, ec);
}
/// Perform a blocking wait on the timer.
@@ -455,7 +551,7 @@ public:
void wait()
{
boost::system::error_code ec;
- this->service.wait(this->implementation, ec);
+ this->get_service().wait(this->get_implementation(), ec);
boost::asio::detail::throw_error(ec, "wait");
}
@@ -468,7 +564,7 @@ public:
*/
void wait(boost::system::error_code& ec)
{
- this->service.wait(this->implementation, ec);
+ this->get_service().wait(this->get_implementation(), ec);
}
/// Start an asynchronous wait on the timer.
@@ -493,7 +589,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*/
template <typename WaitHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(WaitHandler,
@@ -504,8 +600,18 @@ public:
// not meet the documented type requirements for a WaitHandler.
BOOST_ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
- return this->service.async_wait(this->implementation,
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ return this->get_service().async_wait(this->get_implementation(),
BOOST_ASIO_MOVE_CAST(WaitHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WaitHandler,
+ void (boost::system::error_code)> init(handler);
+
+ this->get_service().async_wait(this->get_implementation(),
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
};
@@ -514,6 +620,10 @@ public:
#include <boost/asio/detail/pop_options.hpp>
+#if !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# undef BOOST_ASIO_SVC_T
+#endif // !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
// || defined(GENERATING_DOCUMENTATION)
diff --git a/boost/asio/basic_io_object.hpp b/boost/asio/basic_io_object.hpp
index d490a161f6..87653b5c53 100644
--- a/boost/asio/basic_io_object.hpp
+++ b/boost/asio/basic_io_object.hpp
@@ -16,7 +16,7 @@
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
#include <boost/asio/detail/config.hpp>
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
#include <boost/asio/detail/push_options.hpp>
@@ -68,17 +68,43 @@ public:
/// The underlying implementation type of I/O object.
typedef typename service_type::implementation_type implementation_type;
- /// Get the io_service associated with the object.
+#if !defined(BOOST_ASIO_NO_DEPRECATED)
+ /// (Deprecated: Use get_executor().) Get the io_context associated with the
+ /// object.
/**
- * This function may be used to obtain the io_service object that the I/O
+ * This function may be used to obtain the io_context object that the I/O
* object uses to dispatch handlers for asynchronous operations.
*
- * @return A reference to the io_service object that the I/O object will use
+ * @return A reference to the io_context object that the I/O object will use
* to dispatch handlers. Ownership is not transferred to the caller.
*/
- boost::asio::io_service& get_io_service()
+ boost::asio::io_context& get_io_context()
{
- return service.get_io_service();
+ return service_.get_io_context();
+ }
+
+ /// (Deprecated: Use get_executor().) Get the io_context associated with the
+ /// object.
+ /**
+ * This function may be used to obtain the io_context object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_context object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_context& get_io_service()
+ {
+ return service_.get_io_context();
+ }
+#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
+
+ /// The type of the executor associated with the object.
+ typedef boost::asio::io_context::executor_type executor_type;
+
+ /// Get the executor associated with the object.
+ executor_type get_executor() BOOST_ASIO_NOEXCEPT
+ {
+ return service_.get_io_context().get_executor();
}
protected:
@@ -87,10 +113,10 @@ protected:
* Performs:
* @code get_service().construct(get_implementation()); @endcode
*/
- explicit basic_io_object(boost::asio::io_service& io_service)
- : service(boost::asio::use_service<IoObjectService>(io_service))
+ explicit basic_io_object(boost::asio::io_context& io_context)
+ : service_(boost::asio::use_service<IoObjectService>(io_context))
{
- service.construct(implementation);
+ service_.construct(implementation_);
}
#if defined(GENERATING_DOCUMENTATION)
@@ -127,47 +153,42 @@ protected:
*/
~basic_io_object()
{
- service.destroy(implementation);
+ service_.destroy(implementation_);
}
/// Get the service associated with the I/O object.
service_type& get_service()
{
- return service;
+ return service_;
}
/// Get the service associated with the I/O object.
const service_type& get_service() const
{
- return service;
+ return service_;
}
- /// (Deprecated: Use get_service().) The service associated with the I/O
- /// object.
- /**
- * @note Available only for services that do not support movability.
- */
- service_type& service;
-
/// Get the underlying implementation of the I/O object.
implementation_type& get_implementation()
{
- return implementation;
+ return implementation_;
}
/// Get the underlying implementation of the I/O object.
const implementation_type& get_implementation() const
{
- return implementation;
+ return implementation_;
}
- /// (Deprecated: Use get_implementation().) The underlying implementation of
- /// the I/O object.
- implementation_type implementation;
-
private:
basic_io_object(const basic_io_object&);
basic_io_object& operator=(const basic_io_object&);
+
+ // The service associated with the I/O object.
+ service_type& service_;
+
+ /// The underlying implementation of the I/O object.
+ implementation_type implementation_;
};
#if defined(BOOST_ASIO_HAS_MOVE)
@@ -179,43 +200,57 @@ public:
typedef IoObjectService service_type;
typedef typename service_type::implementation_type implementation_type;
- boost::asio::io_service& get_io_service()
+#if !defined(BOOST_ASIO_NO_DEPRECATED)
+ boost::asio::io_context& get_io_context()
+ {
+ return service_->get_io_context();
+ }
+
+ boost::asio::io_context& get_io_service()
{
- return service_->get_io_service();
+ return service_->get_io_context();
+ }
+#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
+
+ typedef boost::asio::io_context::executor_type executor_type;
+
+ executor_type get_executor() BOOST_ASIO_NOEXCEPT
+ {
+ return service_->get_io_context().get_executor();
}
protected:
- explicit basic_io_object(boost::asio::io_service& io_service)
- : service_(&boost::asio::use_service<IoObjectService>(io_service))
+ explicit basic_io_object(boost::asio::io_context& io_context)
+ : service_(&boost::asio::use_service<IoObjectService>(io_context))
{
- service_->construct(implementation);
+ service_->construct(implementation_);
}
basic_io_object(basic_io_object&& other)
: service_(&other.get_service())
{
- service_->move_construct(implementation, other.implementation);
+ service_->move_construct(implementation_, other.implementation_);
}
template <typename IoObjectService1>
basic_io_object(IoObjectService1& other_service,
typename IoObjectService1::implementation_type& other_implementation)
: service_(&boost::asio::use_service<IoObjectService>(
- other_service.get_io_service()))
+ other_service.get_io_context()))
{
- service_->converting_move_construct(implementation,
+ service_->converting_move_construct(implementation_,
other_service, other_implementation);
}
~basic_io_object()
{
- service_->destroy(implementation);
+ service_->destroy(implementation_);
}
basic_io_object& operator=(basic_io_object&& other)
{
- service_->move_assign(implementation,
- *other.service_, other.implementation);
+ service_->move_assign(implementation_,
+ *other.service_, other.implementation_);
service_ = other.service_;
return *this;
}
@@ -232,21 +267,20 @@ protected:
implementation_type& get_implementation()
{
- return implementation;
+ return implementation_;
}
const implementation_type& get_implementation() const
{
- return implementation;
+ return implementation_;
}
- implementation_type implementation;
-
private:
basic_io_object(const basic_io_object&);
void operator=(const basic_io_object&);
IoObjectService* service_;
+ implementation_type implementation_;
};
#endif // defined(BOOST_ASIO_HAS_MOVE)
diff --git a/boost/asio/basic_raw_socket.hpp b/boost/asio/basic_raw_socket.hpp
index 85f8f42642..09058de224 100644
--- a/boost/asio/basic_raw_socket.hpp
+++ b/boost/asio/basic_raw_socket.hpp
@@ -22,7 +22,10 @@
#include <boost/asio/detail/throw_error.hpp>
#include <boost/asio/detail/type_traits.hpp>
#include <boost/asio/error.hpp>
-#include <boost/asio/raw_socket_service.hpp>
+
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# include <boost/asio/raw_socket_service.hpp>
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
#include <boost/asio/detail/push_options.hpp>
@@ -38,18 +41,19 @@ namespace asio {
* @e Distinct @e objects: Safe.@n
* @e Shared @e objects: Unsafe.
*/
-template <typename Protocol,
- typename RawSocketService = raw_socket_service<Protocol> >
+template <typename Protocol
+ BOOST_ASIO_SVC_TPARAM_DEF1(= raw_socket_service<Protocol>)>
class basic_raw_socket
- : public basic_socket<Protocol, RawSocketService>
+ : public basic_socket<Protocol BOOST_ASIO_SVC_TARG>
{
public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename RawSocketService::native_handle_type native_type;
-
/// The native representation of a socket.
- typedef typename RawSocketService::native_handle_type native_handle_type;
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_handle_type;
+#else
+ typedef typename basic_socket<
+ Protocol BOOST_ASIO_SVC_TARG>::native_handle_type native_handle_type;
+#endif
/// The protocol type.
typedef Protocol protocol_type;
@@ -62,12 +66,12 @@ public:
* This constructor creates a raw socket without opening it. The open()
* function must be called before data can be sent or received on the socket.
*
- * @param io_service The io_service object that the raw socket will use
+ * @param io_context The io_context object that the raw socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*/
- explicit basic_raw_socket(boost::asio::io_service& io_service)
- : basic_socket<Protocol, RawSocketService>(io_service)
+ explicit basic_raw_socket(boost::asio::io_context& io_context)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context)
{
}
@@ -75,7 +79,7 @@ public:
/**
* This constructor creates and opens a raw socket.
*
- * @param io_service The io_service object that the raw socket will use
+ * @param io_context The io_context object that the raw socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*
@@ -83,9 +87,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_raw_socket(boost::asio::io_service& io_service,
+ basic_raw_socket(boost::asio::io_context& io_context,
const protocol_type& protocol)
- : basic_socket<Protocol, RawSocketService>(io_service, protocol)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context, protocol)
{
}
@@ -96,7 +100,7 @@ public:
* to the specified endpoint on the local machine. The protocol used is the
* protocol associated with the given endpoint.
*
- * @param io_service The io_service object that the raw socket will use
+ * @param io_context The io_context object that the raw socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*
@@ -105,9 +109,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_raw_socket(boost::asio::io_service& io_service,
+ basic_raw_socket(boost::asio::io_context& io_context,
const endpoint_type& endpoint)
- : basic_socket<Protocol, RawSocketService>(io_service, endpoint)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context, endpoint)
{
}
@@ -116,7 +120,7 @@ public:
* This constructor creates a raw socket object to hold an existing
* native socket.
*
- * @param io_service The io_service object that the raw socket will use
+ * @param io_context The io_context object that the raw socket will use
* to dispatch handlers for any asynchronous operations performed on the
* socket.
*
@@ -126,10 +130,10 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_raw_socket(boost::asio::io_service& io_service,
+ basic_raw_socket(boost::asio::io_context& io_context,
const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, RawSocketService>(
- io_service, protocol, native_socket)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(
+ io_context, protocol, native_socket)
{
}
@@ -142,11 +146,10 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
+ * constructed using the @c basic_raw_socket(io_context&) constructor.
*/
basic_raw_socket(basic_raw_socket&& other)
- : basic_socket<Protocol, RawSocketService>(
- BOOST_ASIO_MOVE_CAST(basic_raw_socket)(other))
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other))
{
}
@@ -158,12 +161,11 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
+ * constructed using the @c basic_raw_socket(io_context&) constructor.
*/
basic_raw_socket& operator=(basic_raw_socket&& other)
{
- basic_socket<Protocol, RawSocketService>::operator=(
- BOOST_ASIO_MOVE_CAST(basic_raw_socket)(other));
+ basic_socket<Protocol BOOST_ASIO_SVC_TARG>::operator=(std::move(other));
return *this;
}
@@ -175,14 +177,12 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
+ * constructed using the @c basic_raw_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename RawSocketService1>
- basic_raw_socket(basic_raw_socket<Protocol1, RawSocketService1>&& other,
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
+ basic_raw_socket(basic_raw_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other,
typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, RawSocketService>(
- BOOST_ASIO_MOVE_CAST2(basic_raw_socket<
- Protocol1, RawSocketService1>)(other))
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other))
{
}
@@ -194,20 +194,27 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_raw_socket(io_service&) constructor.
+ * constructed using the @c basic_raw_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename RawSocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
typename enable_if<is_convertible<Protocol1, Protocol>::value,
basic_raw_socket>::type& operator=(
- basic_raw_socket<Protocol1, RawSocketService1>&& other)
+ basic_raw_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other)
{
- basic_socket<Protocol, RawSocketService>::operator=(
- BOOST_ASIO_MOVE_CAST2(basic_raw_socket<
- Protocol1, RawSocketService1>)(other));
+ basic_socket<Protocol BOOST_ASIO_SVC_TARG>::operator=(std::move(other));
return *this;
}
#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ /// Destroys the socket.
+ /**
+ * This function destroys the socket, cancelling any outstanding asynchronous
+ * operations associated with the socket as if by calling @c cancel.
+ */
+ ~basic_raw_socket()
+ {
+ }
+
/// Send some data on a connected socket.
/**
* This function is used to send data on the raw socket. The function call
@@ -310,7 +317,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_send operation can only be used with a connected socket.
* Use the async_send_to function to send data on an unconnected raw
@@ -335,8 +342,18 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send(this->get_implementation(),
buffers, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send(this->get_implementation(),
+ buffers, 0, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous send on a connected socket.
@@ -361,7 +378,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_send operation can only be used with a connected socket.
* Use the async_send_to function to send data on an unconnected raw
@@ -378,8 +395,18 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send(this->get_implementation(),
buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send(this->get_implementation(),
+ buffers, flags, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Send raw data to the specified endpoint.
@@ -493,7 +520,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To send a single data buffer use the @ref buffer function as follows:
@@ -518,8 +545,18 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send_to(this->get_implementation(),
buffers, destination, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send_to(this->get_implementation(),
+ buffers, destination, 0, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous send.
@@ -547,7 +584,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*/
template <typename ConstBufferSequence, typename WriteHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
@@ -560,9 +597,20 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send_to(
this->get_implementation(), buffers, destination, flags,
BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send_to(
+ this->get_implementation(), buffers, destination, flags,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Receive some data on a connected socket.
@@ -674,7 +722,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_receive operation can only be used with a connected socket.
* Use the async_receive_from function to receive data on an unconnected
@@ -700,8 +748,18 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive(this->get_implementation(),
buffers, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive(this->get_implementation(),
+ buffers, 0, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous receive on a connected socket.
@@ -726,7 +784,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The async_receive operation can only be used with a connected socket.
* Use the async_receive_from function to receive data on an unconnected
@@ -743,8 +801,18 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive(this->get_implementation(),
buffers, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive(this->get_implementation(),
+ buffers, flags, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Receive raw data with the endpoint of the sender.
@@ -861,7 +929,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To receive into a single data buffer use the @ref buffer function as
@@ -883,9 +951,20 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive_from(
this->get_implementation(), buffers, sender_endpoint, 0,
BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive_from(
+ this->get_implementation(), buffers, sender_endpoint, 0,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous receive.
@@ -915,7 +994,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*/
template <typename MutableBufferSequence, typename ReadHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
@@ -928,9 +1007,20 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive_from(
this->get_implementation(), buffers, sender_endpoint, flags,
BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive_from(
+ this->get_implementation(), buffers, sender_endpoint, flags,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
};
diff --git a/boost/asio/basic_seq_packet_socket.hpp b/boost/asio/basic_seq_packet_socket.hpp
index c8e43f77d6..a48a5b847e 100644
--- a/boost/asio/basic_seq_packet_socket.hpp
+++ b/boost/asio/basic_seq_packet_socket.hpp
@@ -21,7 +21,10 @@
#include <boost/asio/detail/handler_type_requirements.hpp>
#include <boost/asio/detail/throw_error.hpp>
#include <boost/asio/error.hpp>
-#include <boost/asio/seq_packet_socket_service.hpp>
+
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# include <boost/asio/seq_packet_socket_service.hpp>
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
#include <boost/asio/detail/push_options.hpp>
@@ -37,19 +40,19 @@ namespace asio {
* @e Distinct @e objects: Safe.@n
* @e Shared @e objects: Unsafe.
*/
-template <typename Protocol,
- typename SeqPacketSocketService = seq_packet_socket_service<Protocol> >
+template <typename Protocol
+ BOOST_ASIO_SVC_TPARAM_DEF1(= seq_packet_socket_service<Protocol>)>
class basic_seq_packet_socket
- : public basic_socket<Protocol, SeqPacketSocketService>
+ : public basic_socket<Protocol BOOST_ASIO_SVC_TARG>
{
public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename SeqPacketSocketService::native_handle_type native_type;
-
/// The native representation of a socket.
- typedef typename SeqPacketSocketService::native_handle_type
- native_handle_type;
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_handle_type;
+#else
+ typedef typename basic_socket<
+ Protocol BOOST_ASIO_SVC_TARG>::native_handle_type native_handle_type;
+#endif
/// The protocol type.
typedef Protocol protocol_type;
@@ -63,12 +66,12 @@ public:
* socket needs to be opened and then connected or accepted before data can
* be sent or received on it.
*
- * @param io_service The io_service object that the sequenced packet socket
+ * @param io_context The io_context object that the sequenced packet socket
* will use to dispatch handlers for any asynchronous operations performed on
* the socket.
*/
- explicit basic_seq_packet_socket(boost::asio::io_service& io_service)
- : basic_socket<Protocol, SeqPacketSocketService>(io_service)
+ explicit basic_seq_packet_socket(boost::asio::io_context& io_context)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context)
{
}
@@ -78,7 +81,7 @@ public:
* needs to be connected or accepted before data can be sent or received on
* it.
*
- * @param io_service The io_service object that the sequenced packet socket
+ * @param io_context The io_context object that the sequenced packet socket
* will use to dispatch handlers for any asynchronous operations performed on
* the socket.
*
@@ -86,9 +89,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_seq_packet_socket(boost::asio::io_service& io_service,
+ basic_seq_packet_socket(boost::asio::io_context& io_context,
const protocol_type& protocol)
- : basic_socket<Protocol, SeqPacketSocketService>(io_service, protocol)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context, protocol)
{
}
@@ -99,7 +102,7 @@ public:
* it bound to the specified endpoint on the local machine. The protocol used
* is the protocol associated with the given endpoint.
*
- * @param io_service The io_service object that the sequenced packet socket
+ * @param io_context The io_context object that the sequenced packet socket
* will use to dispatch handlers for any asynchronous operations performed on
* the socket.
*
@@ -108,9 +111,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_seq_packet_socket(boost::asio::io_service& io_service,
+ basic_seq_packet_socket(boost::asio::io_context& io_context,
const endpoint_type& endpoint)
- : basic_socket<Protocol, SeqPacketSocketService>(io_service, endpoint)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(io_context, endpoint)
{
}
@@ -119,7 +122,7 @@ public:
* This constructor creates a sequenced packet socket object to hold an
* existing native socket.
*
- * @param io_service The io_service object that the sequenced packet socket
+ * @param io_context The io_context object that the sequenced packet socket
* will use to dispatch handlers for any asynchronous operations performed on
* the socket.
*
@@ -129,10 +132,10 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_seq_packet_socket(boost::asio::io_service& io_service,
+ basic_seq_packet_socket(boost::asio::io_context& io_context,
const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_socket<Protocol, SeqPacketSocketService>(
- io_service, protocol, native_socket)
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(
+ io_context, protocol, native_socket)
{
}
@@ -146,11 +149,10 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
+ * constructed using the @c basic_seq_packet_socket(io_context&) constructor.
*/
basic_seq_packet_socket(basic_seq_packet_socket&& other)
- : basic_socket<Protocol, SeqPacketSocketService>(
- BOOST_ASIO_MOVE_CAST(basic_seq_packet_socket)(other))
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other))
{
}
@@ -163,12 +165,11 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
+ * constructed using the @c basic_seq_packet_socket(io_context&) constructor.
*/
basic_seq_packet_socket& operator=(basic_seq_packet_socket&& other)
{
- basic_socket<Protocol, SeqPacketSocketService>::operator=(
- BOOST_ASIO_MOVE_CAST(basic_seq_packet_socket)(other));
+ basic_socket<Protocol BOOST_ASIO_SVC_TARG>::operator=(std::move(other));
return *this;
}
@@ -182,15 +183,13 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
+ * constructed using the @c basic_seq_packet_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename SeqPacketSocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
basic_seq_packet_socket(
- basic_seq_packet_socket<Protocol1, SeqPacketSocketService1>&& other,
+ basic_seq_packet_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other,
typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_socket<Protocol, SeqPacketSocketService>(
- BOOST_ASIO_MOVE_CAST2(basic_seq_packet_socket<
- Protocol1, SeqPacketSocketService1>)(other))
+ : basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other))
{
}
@@ -204,20 +203,27 @@ public:
* will occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
+ * constructed using the @c basic_seq_packet_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename SeqPacketSocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
typename enable_if<is_convertible<Protocol1, Protocol>::value,
basic_seq_packet_socket>::type& operator=(
- basic_seq_packet_socket<Protocol1, SeqPacketSocketService1>&& other)
+ basic_seq_packet_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other)
{
- basic_socket<Protocol, SeqPacketSocketService>::operator=(
- BOOST_ASIO_MOVE_CAST2(basic_seq_packet_socket<
- Protocol1, SeqPacketSocketService1>)(other));
+ basic_socket<Protocol BOOST_ASIO_SVC_TARG>::operator=(std::move(other));
return *this;
}
#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+ /// Destroys the socket.
+ /**
+ * This function destroys the socket, cancelling any outstanding asynchronous
+ * operations associated with the socket as if by calling @c cancel.
+ */
+ ~basic_seq_packet_socket()
+ {
+ }
+
/// Send some data on the socket.
/**
* This function is used to send data on the sequenced packet socket. The
@@ -300,7 +306,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To send a single data buffer use the @ref buffer function as follows:
@@ -322,8 +328,18 @@ public:
// not meet the documented type requirements for a WriteHandler.
BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_send(this->get_implementation(),
buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WriteHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_send(this->get_implementation(),
+ buffers, flags, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Receive some data on the socket.
@@ -360,8 +376,13 @@ public:
socket_base::message_flags& out_flags)
{
boost::system::error_code ec;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
std::size_t s = this->get_service().receive(
this->get_implementation(), buffers, 0, out_flags, ec);
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ std::size_t s = this->get_service().receive_with_flags(
+ this->get_implementation(), buffers, 0, out_flags, ec);
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
boost::asio::detail::throw_error(ec, "receive");
return s;
}
@@ -407,8 +428,13 @@ public:
socket_base::message_flags& out_flags)
{
boost::system::error_code ec;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
std::size_t s = this->get_service().receive(
this->get_implementation(), buffers, in_flags, out_flags, ec);
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ std::size_t s = this->get_service().receive_with_flags(
+ this->get_implementation(), buffers, in_flags, out_flags, ec);
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
boost::asio::detail::throw_error(ec, "receive");
return s;
}
@@ -441,8 +467,13 @@ public:
socket_base::message_flags in_flags,
socket_base::message_flags& out_flags, boost::system::error_code& ec)
{
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().receive(this->get_implementation(),
buffers, in_flags, out_flags, ec);
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ return this->get_service().receive_with_flags(this->get_implementation(),
+ buffers, in_flags, out_flags, ec);
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous receive.
@@ -471,7 +502,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To receive into a single data buffer use the @ref buffer function as
@@ -494,9 +525,20 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive(
this->get_implementation(), buffers, 0, out_flags,
BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive_with_flags(
+ this->get_implementation(), buffers, 0, out_flags,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Start an asynchronous receive.
@@ -527,7 +569,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* To receive into a single data buffer use the @ref buffer function as
@@ -553,9 +595,20 @@ public:
// not meet the documented type requirements for a ReadHandler.
BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_receive(
this->get_implementation(), buffers, in_flags, out_flags,
BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ReadHandler,
+ void (boost::system::error_code, std::size_t)> init(handler);
+
+ this->get_service().async_receive_with_flags(
+ this->get_implementation(), buffers, in_flags, out_flags,
+ init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
};
diff --git a/boost/asio/basic_serial_port.hpp b/boost/asio/basic_serial_port.hpp
index bfc78afaf6..af2193f7cb 100644
--- a/boost/asio/basic_serial_port.hpp
+++ b/boost/asio/basic_serial_port.hpp
@@ -18,6 +18,8 @@
#include <boost/asio/detail/config.hpp>
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
|| defined(GENERATING_DOCUMENTATION)
@@ -49,10 +51,6 @@ class basic_serial_port
public serial_port_base
{
public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// serial port.
- typedef typename SerialPortService::native_handle_type native_type;
-
/// The native representation of a serial port.
typedef typename SerialPortService::native_handle_type native_handle_type;
@@ -63,11 +61,11 @@ public:
/**
* This constructor creates a serial port without opening it.
*
- * @param io_service The io_service object that the serial port will use to
+ * @param io_context The io_context object that the serial port will use to
* dispatch handlers for any asynchronous operations performed on the port.
*/
- explicit basic_serial_port(boost::asio::io_service& io_service)
- : basic_io_object<SerialPortService>(io_service)
+ explicit basic_serial_port(boost::asio::io_context& io_context)
+ : basic_io_object<SerialPortService>(io_context)
{
}
@@ -76,15 +74,15 @@ public:
* This constructor creates and opens a serial port for the specified device
* name.
*
- * @param io_service The io_service object that the serial port will use to
+ * @param io_context The io_context object that the serial port will use to
* dispatch handlers for any asynchronous operations performed on the port.
*
* @param device The platform-specific device name for this serial
* port.
*/
- explicit basic_serial_port(boost::asio::io_service& io_service,
+ explicit basic_serial_port(boost::asio::io_context& io_context,
const char* device)
- : basic_io_object<SerialPortService>(io_service)
+ : basic_io_object<SerialPortService>(io_context)
{
boost::system::error_code ec;
this->get_service().open(this->get_implementation(), device, ec);
@@ -96,15 +94,15 @@ public:
* This constructor creates and opens a serial port for the specified device
* name.
*
- * @param io_service The io_service object that the serial port will use to
+ * @param io_context The io_context object that the serial port will use to
* dispatch handlers for any asynchronous operations performed on the port.
*
* @param device The platform-specific device name for this serial
* port.
*/
- explicit basic_serial_port(boost::asio::io_service& io_service,
+ explicit basic_serial_port(boost::asio::io_context& io_context,
const std::string& device)
- : basic_io_object<SerialPortService>(io_service)
+ : basic_io_object<SerialPortService>(io_context)
{
boost::system::error_code ec;
this->get_service().open(this->get_implementation(), device, ec);
@@ -116,16 +114,16 @@ public:
* This constructor creates a serial port object to hold an existing native
* serial port.
*
- * @param io_service The io_service object that the serial port will use to
+ * @param io_context The io_context object that the serial port will use to
* dispatch handlers for any asynchronous operations performed on the port.
*
* @param native_serial_port A native serial port.
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_serial_port(boost::asio::io_service& io_service,
+ basic_serial_port(boost::asio::io_context& io_context,
const native_handle_type& native_serial_port)
- : basic_io_object<SerialPortService>(io_service)
+ : basic_io_object<SerialPortService>(io_context)
{
boost::system::error_code ec;
this->get_service().assign(this->get_implementation(),
@@ -142,7 +140,7 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_serial_port(io_service&) constructor.
+ * constructed using the @c basic_serial_port(io_context&) constructor.
*/
basic_serial_port(basic_serial_port&& other)
: basic_io_object<SerialPortService>(
@@ -158,7 +156,7 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_serial_port(io_service&) constructor.
+ * constructed using the @c basic_serial_port(io_context&) constructor.
*/
basic_serial_port& operator=(basic_serial_port&& other)
{
@@ -220,10 +218,11 @@ public:
*
* @param ec Set the indicate what error occurred, if any.
*/
- boost::system::error_code open(const std::string& device,
+ BOOST_ASIO_SYNC_OP_VOID open(const std::string& device,
boost::system::error_code& ec)
{
- return this->get_service().open(this->get_implementation(), device, ec);
+ this->get_service().open(this->get_implementation(), device, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Assign an existing native serial port to the serial port.
@@ -250,11 +249,12 @@ public:
*
* @param ec Set to indicate what error occurred, if any.
*/
- boost::system::error_code assign(const native_handle_type& native_serial_port,
+ BOOST_ASIO_SYNC_OP_VOID assign(const native_handle_type& native_serial_port,
boost::system::error_code& ec)
{
- return this->get_service().assign(this->get_implementation(),
+ this->get_service().assign(this->get_implementation(),
native_serial_port, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Determine whether the serial port is open.
@@ -286,21 +286,10 @@ public:
*
* @param ec Set to indicate what error occurred, if any.
*/
- boost::system::error_code close(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID close(boost::system::error_code& ec)
{
- return this->get_service().close(this->get_implementation(), ec);
- }
-
- /// (Deprecated: Use native_handle().) Get the native serial port
- /// representation.
- /**
- * This function may be used to obtain the underlying representation of the
- * serial port. This is intended to allow access to native serial port
- * functionality that is not otherwise provided.
- */
- native_type native()
- {
- return this->get_service().native_handle(this->get_implementation());
+ this->get_service().close(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Get the native serial port representation.
@@ -337,9 +326,10 @@ public:
*
* @param ec Set to indicate what error occurred, if any.
*/
- boost::system::error_code cancel(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID cancel(boost::system::error_code& ec)
{
- return this->get_service().cancel(this->get_implementation(), ec);
+ this->get_service().cancel(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Send a break sequence to the serial port.
@@ -363,9 +353,10 @@ public:
*
* @param ec Set to indicate what error occurred, if any.
*/
- boost::system::error_code send_break(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID send_break(boost::system::error_code& ec)
{
- return this->get_service().send_break(this->get_implementation(), ec);
+ this->get_service().send_break(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Set an option on the serial port.
@@ -407,11 +398,11 @@ public:
* boost::asio::serial_port_base::character_size
*/
template <typename SettableSerialPortOption>
- boost::system::error_code set_option(const SettableSerialPortOption& option,
+ BOOST_ASIO_SYNC_OP_VOID set_option(const SettableSerialPortOption& option,
boost::system::error_code& ec)
{
- return this->get_service().set_option(
- this->get_implementation(), option, ec);
+ this->get_service().set_option(this->get_implementation(), option, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Get an option from the serial port.
@@ -455,11 +446,11 @@ public:
* boost::asio::serial_port_base::character_size
*/
template <typename GettableSerialPortOption>
- boost::system::error_code get_option(GettableSerialPortOption& option,
+ BOOST_ASIO_SYNC_OP_VOID get_option(GettableSerialPortOption& option,
boost::system::error_code& ec)
{
- return this->get_service().get_option(
- this->get_implementation(), option, ec);
+ this->get_service().get_option(this->get_implementation(), option, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Write some data to the serial port.
@@ -543,7 +534,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The write operation may not transmit all of the data to the peer.
* Consider using the @ref async_write function if you need to ensure that all
@@ -655,7 +646,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @note The read operation may not read all of the requested number of bytes.
* Consider using the @ref async_read function if you need to ensure that the
@@ -694,4 +685,6 @@ public:
#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
// || defined(GENERATING_DOCUMENTATION)
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#endif // BOOST_ASIO_BASIC_SERIAL_PORT_HPP
diff --git a/boost/asio/basic_signal_set.hpp b/boost/asio/basic_signal_set.hpp
index 608bc0a6d8..3c00fa6e26 100644
--- a/boost/asio/basic_signal_set.hpp
+++ b/boost/asio/basic_signal_set.hpp
@@ -17,6 +17,8 @@
#include <boost/asio/detail/config.hpp>
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#include <boost/asio/basic_io_object.hpp>
#include <boost/asio/detail/handler_type_requirements.hpp>
#include <boost/asio/detail/throw_error.hpp>
@@ -55,7 +57,7 @@ namespace asio {
* ...
*
* // Construct a signal set registered for process termination.
- * boost::asio::signal_set signals(io_service, SIGINT, SIGTERM);
+ * boost::asio::signal_set signals(io_context, SIGINT, SIGTERM);
*
* // Start an asynchronous wait for one of the signals to occur.
* signals.async_wait(handler);
@@ -99,11 +101,11 @@ public:
/**
* This constructor creates a signal set without registering for any signals.
*
- * @param io_service The io_service object that the signal set will use to
+ * @param io_context The io_context object that the signal set will use to
* dispatch handlers for any asynchronous operations performed on the set.
*/
- explicit basic_signal_set(boost::asio::io_service& io_service)
- : basic_io_object<SignalSetService>(io_service)
+ explicit basic_signal_set(boost::asio::io_context& io_context)
+ : basic_io_object<SignalSetService>(io_context)
{
}
@@ -111,20 +113,20 @@ public:
/**
* This constructor creates a signal set and registers for one signal.
*
- * @param io_service The io_service object that the signal set will use to
+ * @param io_context The io_context object that the signal set will use to
* dispatch handlers for any asynchronous operations performed on the set.
*
* @param signal_number_1 The signal number to be added.
*
* @note This constructor is equivalent to performing:
- * @code boost::asio::signal_set signals(io_service);
+ * @code boost::asio::signal_set signals(io_context);
* signals.add(signal_number_1); @endcode
*/
- basic_signal_set(boost::asio::io_service& io_service, int signal_number_1)
- : basic_io_object<SignalSetService>(io_service)
+ basic_signal_set(boost::asio::io_context& io_context, int signal_number_1)
+ : basic_io_object<SignalSetService>(io_context)
{
boost::system::error_code ec;
- this->service.add(this->implementation, signal_number_1, ec);
+ this->get_service().add(this->get_implementation(), signal_number_1, ec);
boost::asio::detail::throw_error(ec, "add");
}
@@ -132,7 +134,7 @@ public:
/**
* This constructor creates a signal set and registers for two signals.
*
- * @param io_service The io_service object that the signal set will use to
+ * @param io_context The io_context object that the signal set will use to
* dispatch handlers for any asynchronous operations performed on the set.
*
* @param signal_number_1 The first signal number to be added.
@@ -140,18 +142,18 @@ public:
* @param signal_number_2 The second signal number to be added.
*
* @note This constructor is equivalent to performing:
- * @code boost::asio::signal_set signals(io_service);
+ * @code boost::asio::signal_set signals(io_context);
* signals.add(signal_number_1);
* signals.add(signal_number_2); @endcode
*/
- basic_signal_set(boost::asio::io_service& io_service, int signal_number_1,
+ basic_signal_set(boost::asio::io_context& io_context, int signal_number_1,
int signal_number_2)
- : basic_io_object<SignalSetService>(io_service)
+ : basic_io_object<SignalSetService>(io_context)
{
boost::system::error_code ec;
- this->service.add(this->implementation, signal_number_1, ec);
+ this->get_service().add(this->get_implementation(), signal_number_1, ec);
boost::asio::detail::throw_error(ec, "add");
- this->service.add(this->implementation, signal_number_2, ec);
+ this->get_service().add(this->get_implementation(), signal_number_2, ec);
boost::asio::detail::throw_error(ec, "add");
}
@@ -159,7 +161,7 @@ public:
/**
* This constructor creates a signal set and registers for three signals.
*
- * @param io_service The io_service object that the signal set will use to
+ * @param io_context The io_context object that the signal set will use to
* dispatch handlers for any asynchronous operations performed on the set.
*
* @param signal_number_1 The first signal number to be added.
@@ -169,21 +171,21 @@ public:
* @param signal_number_3 The third signal number to be added.
*
* @note This constructor is equivalent to performing:
- * @code boost::asio::signal_set signals(io_service);
+ * @code boost::asio::signal_set signals(io_context);
* signals.add(signal_number_1);
* signals.add(signal_number_2);
* signals.add(signal_number_3); @endcode
*/
- basic_signal_set(boost::asio::io_service& io_service, int signal_number_1,
+ basic_signal_set(boost::asio::io_context& io_context, int signal_number_1,
int signal_number_2, int signal_number_3)
- : basic_io_object<SignalSetService>(io_service)
+ : basic_io_object<SignalSetService>(io_context)
{
boost::system::error_code ec;
- this->service.add(this->implementation, signal_number_1, ec);
+ this->get_service().add(this->get_implementation(), signal_number_1, ec);
boost::asio::detail::throw_error(ec, "add");
- this->service.add(this->implementation, signal_number_2, ec);
+ this->get_service().add(this->get_implementation(), signal_number_2, ec);
boost::asio::detail::throw_error(ec, "add");
- this->service.add(this->implementation, signal_number_3, ec);
+ this->get_service().add(this->get_implementation(), signal_number_3, ec);
boost::asio::detail::throw_error(ec, "add");
}
@@ -199,7 +201,7 @@ public:
void add(int signal_number)
{
boost::system::error_code ec;
- this->service.add(this->implementation, signal_number, ec);
+ this->get_service().add(this->get_implementation(), signal_number, ec);
boost::asio::detail::throw_error(ec, "add");
}
@@ -212,10 +214,10 @@ public:
*
* @param ec Set to indicate what error occurred, if any.
*/
- boost::system::error_code add(int signal_number,
- boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID add(int signal_number, boost::system::error_code& ec)
{
- return this->service.add(this->implementation, signal_number, ec);
+ this->get_service().add(this->get_implementation(), signal_number, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Remove a signal from a signal_set.
@@ -233,7 +235,7 @@ public:
void remove(int signal_number)
{
boost::system::error_code ec;
- this->service.remove(this->implementation, signal_number, ec);
+ this->get_service().remove(this->get_implementation(), signal_number, ec);
boost::asio::detail::throw_error(ec, "remove");
}
@@ -249,10 +251,11 @@ public:
* @note Removes any notifications that have been queued for the specified
* signal number.
*/
- boost::system::error_code remove(int signal_number,
+ BOOST_ASIO_SYNC_OP_VOID remove(int signal_number,
boost::system::error_code& ec)
{
- return this->service.remove(this->implementation, signal_number, ec);
+ this->get_service().remove(this->get_implementation(), signal_number, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Remove all signals from a signal_set.
@@ -267,7 +270,7 @@ public:
void clear()
{
boost::system::error_code ec;
- this->service.clear(this->implementation, ec);
+ this->get_service().clear(this->get_implementation(), ec);
boost::asio::detail::throw_error(ec, "clear");
}
@@ -280,9 +283,10 @@ public:
*
* @note Removes all queued notifications.
*/
- boost::system::error_code clear(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID clear(boost::system::error_code& ec)
{
- return this->service.clear(this->implementation, ec);
+ this->get_service().clear(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Cancel all operations associated with the signal set.
@@ -309,7 +313,7 @@ public:
void cancel()
{
boost::system::error_code ec;
- this->service.cancel(this->implementation, ec);
+ this->get_service().cancel(this->get_implementation(), ec);
boost::asio::detail::throw_error(ec, "cancel");
}
@@ -334,9 +338,10 @@ public:
* These handlers can no longer be cancelled, and therefore are passed an
* error code that indicates the successful completion of the wait operation.
*/
- boost::system::error_code cancel(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID cancel(boost::system::error_code& ec)
{
- return this->service.cancel(this->implementation, ec);
+ this->get_service().cancel(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Start an asynchronous operation to wait for a signal to be delivered.
@@ -362,7 +367,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*/
template <typename SignalHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(SignalHandler,
@@ -373,7 +378,7 @@ public:
// not meet the documented type requirements for a SignalHandler.
BOOST_ASIO_SIGNAL_HANDLER_CHECK(SignalHandler, handler) type_check;
- return this->service.async_wait(this->implementation,
+ return this->get_service().async_wait(this->get_implementation(),
BOOST_ASIO_MOVE_CAST(SignalHandler)(handler));
}
};
@@ -383,4 +388,6 @@ public:
#include <boost/asio/detail/pop_options.hpp>
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#endif // BOOST_ASIO_BASIC_SIGNAL_SET_HPP
diff --git a/boost/asio/basic_socket.hpp b/boost/asio/basic_socket.hpp
index 777f6a9ce1..cf51470690 100644
--- a/boost/asio/basic_socket.hpp
+++ b/boost/asio/basic_socket.hpp
@@ -22,8 +22,26 @@
#include <boost/asio/detail/throw_error.hpp>
#include <boost/asio/detail/type_traits.hpp>
#include <boost/asio/error.hpp>
+#include <boost/asio/post.hpp>
#include <boost/asio/socket_base.hpp>
+#if defined(BOOST_ASIO_HAS_MOVE)
+# include <utility>
+#endif // defined(BOOST_ASIO_HAS_MOVE)
+
+#if !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# if defined(BOOST_ASIO_WINDOWS_RUNTIME)
+# include <boost/asio/detail/winrt_ssocket_service.hpp>
+# define BOOST_ASIO_SVC_T detail::winrt_ssocket_service<Protocol>
+# elif defined(BOOST_ASIO_HAS_IOCP)
+# include <boost/asio/detail/win_iocp_socket_service.hpp>
+# define BOOST_ASIO_SVC_T detail::win_iocp_socket_service<Protocol>
+# else
+# include <boost/asio/detail/reactive_socket_service.hpp>
+# define BOOST_ASIO_SVC_T detail::reactive_socket_service<Protocol>
+# endif
+#endif // !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#include <boost/asio/detail/push_options.hpp>
namespace boost {
@@ -38,18 +56,21 @@ namespace asio {
* @e Distinct @e objects: Safe.@n
* @e Shared @e objects: Unsafe.
*/
-template <typename Protocol, typename SocketService>
+template <typename Protocol BOOST_ASIO_SVC_TPARAM>
class basic_socket
- : public basic_io_object<SocketService>,
+ : BOOST_ASIO_SVC_ACCESS basic_io_object<BOOST_ASIO_SVC_T>,
public socket_base
{
public:
- /// (Deprecated: Use native_handle_type.) The native representation of a
- /// socket.
- typedef typename SocketService::native_handle_type native_type;
+ /// The type of the executor associated with the object.
+ typedef io_context::executor_type executor_type;
/// The native representation of a socket.
- typedef typename SocketService::native_handle_type native_handle_type;
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_handle_type;
+#else
+ typedef typename BOOST_ASIO_SVC_T::native_handle_type native_handle_type;
+#endif
/// The protocol type.
typedef Protocol protocol_type;
@@ -57,18 +78,20 @@ public:
/// The endpoint type.
typedef typename Protocol::endpoint endpoint_type;
+#if !defined(BOOST_ASIO_NO_EXTENSIONS)
/// A basic_socket is always the lowest layer.
- typedef basic_socket<Protocol, SocketService> lowest_layer_type;
+ typedef basic_socket<Protocol BOOST_ASIO_SVC_TARG> lowest_layer_type;
+#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
/// Construct a basic_socket without opening it.
/**
* This constructor creates a socket without opening it.
*
- * @param io_service The io_service object that the socket will use to
+ * @param io_context The io_context object that the socket will use to
* dispatch handlers for any asynchronous operations performed on the socket.
*/
- explicit basic_socket(boost::asio::io_service& io_service)
- : basic_io_object<SocketService>(io_service)
+ explicit basic_socket(boost::asio::io_context& io_context)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
}
@@ -76,16 +99,16 @@ public:
/**
* This constructor creates and opens a socket.
*
- * @param io_service The io_service object that the socket will use to
+ * @param io_context The io_context object that the socket will use to
* dispatch handlers for any asynchronous operations performed on the socket.
*
* @param protocol An object specifying protocol parameters to be used.
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_socket(boost::asio::io_service& io_service,
+ basic_socket(boost::asio::io_context& io_context,
const protocol_type& protocol)
- : basic_io_object<SocketService>(io_service)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
boost::system::error_code ec;
this->get_service().open(this->get_implementation(), protocol, ec);
@@ -99,7 +122,7 @@ public:
* specified endpoint on the local machine. The protocol used is the protocol
* associated with the given endpoint.
*
- * @param io_service The io_service object that the socket will use to
+ * @param io_context The io_context object that the socket will use to
* dispatch handlers for any asynchronous operations performed on the socket.
*
* @param endpoint An endpoint on the local machine to which the socket will
@@ -107,9 +130,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_socket(boost::asio::io_service& io_service,
+ basic_socket(boost::asio::io_context& io_context,
const endpoint_type& endpoint)
- : basic_io_object<SocketService>(io_service)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
boost::system::error_code ec;
const protocol_type protocol = endpoint.protocol();
@@ -123,7 +146,7 @@ public:
/**
* This constructor creates a socket object to hold an existing native socket.
*
- * @param io_service The io_service object that the socket will use to
+ * @param io_context The io_context object that the socket will use to
* dispatch handlers for any asynchronous operations performed on the socket.
*
* @param protocol An object specifying protocol parameters to be used.
@@ -132,9 +155,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_socket(boost::asio::io_service& io_service,
+ basic_socket(boost::asio::io_context& io_context,
const protocol_type& protocol, const native_handle_type& native_socket)
- : basic_io_object<SocketService>(io_service)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
boost::system::error_code ec;
this->get_service().assign(this->get_implementation(),
@@ -151,11 +174,10 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
+ * constructed using the @c basic_socket(io_context&) constructor.
*/
basic_socket(basic_socket&& other)
- : basic_io_object<SocketService>(
- BOOST_ASIO_MOVE_CAST(basic_socket)(other))
+ : basic_io_object<BOOST_ASIO_SVC_T>(std::move(other))
{
}
@@ -167,17 +189,16 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
+ * constructed using the @c basic_socket(io_context&) constructor.
*/
basic_socket& operator=(basic_socket&& other)
{
- basic_io_object<SocketService>::operator=(
- BOOST_ASIO_MOVE_CAST(basic_socket)(other));
+ basic_io_object<BOOST_ASIO_SVC_T>::operator=(std::move(other));
return *this;
}
// All sockets have access to each other's implementations.
- template <typename Protocol1, typename SocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
friend class basic_socket;
/// Move-construct a basic_socket from a socket of another protocol type.
@@ -188,12 +209,12 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
+ * constructed using the @c basic_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename SocketService1>
- basic_socket(basic_socket<Protocol1, SocketService1>&& other,
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
+ basic_socket(basic_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other,
typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
- : basic_io_object<SocketService>(
+ : basic_io_object<BOOST_ASIO_SVC_T>(
other.get_service(), other.get_implementation())
{
}
@@ -206,21 +227,60 @@ public:
* occur.
*
* @note Following the move, the moved-from object is in the same state as if
- * constructed using the @c basic_socket(io_service&) constructor.
+ * constructed using the @c basic_socket(io_context&) constructor.
*/
- template <typename Protocol1, typename SocketService1>
+ template <typename Protocol1 BOOST_ASIO_SVC_TPARAM1>
typename enable_if<is_convertible<Protocol1, Protocol>::value,
basic_socket>::type& operator=(
- basic_socket<Protocol1, SocketService1>&& other)
+ basic_socket<Protocol1 BOOST_ASIO_SVC_TARG1>&& other)
{
- basic_socket tmp(BOOST_ASIO_MOVE_CAST2(basic_socket<
- Protocol1, SocketService1>)(other));
- basic_io_object<SocketService>::operator=(
- BOOST_ASIO_MOVE_CAST(basic_socket)(tmp));
+ basic_socket tmp(std::move(other));
+ basic_io_object<BOOST_ASIO_SVC_T>::operator=(std::move(tmp));
return *this;
}
#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ // These functions are provided by basic_io_object<>.
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+#if !defined(BOOST_ASIO_NO_DEPRECATED)
+ /// (Deprecated: Use get_executor().) Get the io_context associated with the
+ /// object.
+ /**
+ * This function may be used to obtain the io_context object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_context object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_context& get_io_context()
+ {
+ return basic_io_object<BOOST_ASIO_SVC_T>::get_io_context();
+ }
+
+ /// (Deprecated: Use get_executor().) Get the io_context associated with the
+ /// object.
+ /**
+ * This function may be used to obtain the io_context object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_context object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_context& get_io_service()
+ {
+ return basic_io_object<BOOST_ASIO_SVC_T>::get_io_service();
+ }
+#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
+
+ /// Get the executor associated with the object.
+ executor_type get_executor() BOOST_ASIO_NOEXCEPT
+ {
+ return basic_io_object<BOOST_ASIO_SVC_T>::get_executor();
+ }
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
+#if !defined(BOOST_ASIO_NO_EXTENSIONS)
/// Get a reference to the lowest layer.
/**
* This function returns a reference to the lowest layer in a stack of
@@ -248,6 +308,7 @@ public:
{
return *this;
}
+#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
/// Open the socket using the specified protocol.
/**
@@ -259,7 +320,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* socket.open(boost::asio::ip::tcp::v4());
* @endcode
*/
@@ -280,7 +341,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* boost::system::error_code ec;
* socket.open(boost::asio::ip::tcp::v4(), ec);
* if (ec)
@@ -289,10 +350,11 @@ public:
* }
* @endcode
*/
- boost::system::error_code open(const protocol_type& protocol,
+ BOOST_ASIO_SYNC_OP_VOID open(const protocol_type& protocol,
boost::system::error_code& ec)
{
- return this->get_service().open(this->get_implementation(), protocol, ec);
+ this->get_service().open(this->get_implementation(), protocol, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Assign an existing native socket to the socket.
@@ -324,11 +386,12 @@ public:
*
* @param ec Set to indicate what error occurred, if any.
*/
- boost::system::error_code assign(const protocol_type& protocol,
+ BOOST_ASIO_SYNC_OP_VOID assign(const protocol_type& protocol,
const native_handle_type& native_socket, boost::system::error_code& ec)
{
- return this->get_service().assign(this->get_implementation(),
+ this->get_service().assign(this->get_implementation(),
protocol, native_socket, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Determine whether the socket is open.
@@ -367,7 +430,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::system::error_code ec;
* socket.close(ec);
@@ -380,20 +443,62 @@ public:
* @note For portable behaviour with respect to graceful closure of a
* connected socket, call shutdown() before closing the socket.
*/
- boost::system::error_code close(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID close(boost::system::error_code& ec)
{
- return this->get_service().close(this->get_implementation(), ec);
+ this->get_service().close(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
- /// (Deprecated: Use native_handle().) Get the native socket representation.
+ /// Release ownership of the underlying native socket.
/**
- * This function may be used to obtain the underlying representation of the
- * socket. This is intended to allow access to native socket functionality
- * that is not otherwise provided.
+ * This function causes all outstanding asynchronous connect, send and receive
+ * operations to finish immediately, and the handlers for cancelled operations
+ * will be passed the boost::asio::error::operation_aborted error. Ownership
+ * of the native socket is then transferred to the caller.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note This function is unsupported on Windows versions prior to Windows
+ * 8.1, and will fail with boost::asio::error::operation_not_supported on
+ * these platforms.
+ */
+#if defined(BOOST_ASIO_MSVC) && (BOOST_ASIO_MSVC >= 1400) \
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603)
+ __declspec(deprecated("This function always fails with "
+ "operation_not_supported when used on Windows versions "
+ "prior to Windows 8.1."))
+#endif
+ native_handle_type release()
+ {
+ boost::system::error_code ec;
+ native_handle_type s = this->get_service().release(
+ this->get_implementation(), ec);
+ boost::asio::detail::throw_error(ec, "release");
+ return s;
+ }
+
+ /// Release ownership of the underlying native socket.
+ /**
+ * This function causes all outstanding asynchronous connect, send and receive
+ * operations to finish immediately, and the handlers for cancelled operations
+ * will be passed the boost::asio::error::operation_aborted error. Ownership
+ * of the native socket is then transferred to the caller.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @note This function is unsupported on Windows versions prior to Windows
+ * 8.1, and will fail with boost::asio::error::operation_not_supported on
+ * these platforms.
*/
- native_type native()
+#if defined(BOOST_ASIO_MSVC) && (BOOST_ASIO_MSVC >= 1400) \
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603)
+ __declspec(deprecated("This function always fails with "
+ "operation_not_supported when used on Windows versions "
+ "prior to Windows 8.1."))
+#endif
+ native_handle_type release(boost::system::error_code& ec)
{
- return this->get_service().native_handle(this->get_implementation());
+ return this->get_service().release(this->get_implementation(), ec);
}
/// Get the native socket representation.
@@ -496,9 +601,10 @@ public:
"operation_not_supported when used on Windows XP, Windows Server 2003, "
"or earlier. Consult documentation for details."))
#endif
- boost::system::error_code cancel(boost::system::error_code& ec)
+ BOOST_ASIO_SYNC_OP_VOID cancel(boost::system::error_code& ec)
{
- return this->get_service().cancel(this->get_implementation(), ec);
+ this->get_service().cancel(this->get_implementation(), ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Determine whether the socket is at the out-of-band data mark.
@@ -580,7 +686,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* socket.open(boost::asio::ip::tcp::v4());
* socket.bind(boost::asio::ip::tcp::endpoint(
* boost::asio::ip::tcp::v4(), 12345));
@@ -605,7 +711,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* socket.open(boost::asio::ip::tcp::v4());
* boost::system::error_code ec;
* socket.bind(boost::asio::ip::tcp::endpoint(
@@ -616,10 +722,11 @@ public:
* }
* @endcode
*/
- boost::system::error_code bind(const endpoint_type& endpoint,
+ BOOST_ASIO_SYNC_OP_VOID bind(const endpoint_type& endpoint,
boost::system::error_code& ec)
{
- return this->get_service().bind(this->get_implementation(), endpoint, ec);
+ this->get_service().bind(this->get_implementation(), endpoint, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Connect the socket to the specified endpoint.
@@ -639,7 +746,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* boost::asio::ip::tcp::endpoint endpoint(
* boost::asio::ip::address::from_string("1.2.3.4"), 12345);
* socket.connect(endpoint);
@@ -675,7 +782,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* boost::asio::ip::tcp::endpoint endpoint(
* boost::asio::ip::address::from_string("1.2.3.4"), 12345);
* boost::system::error_code ec;
@@ -686,20 +793,21 @@ public:
* }
* @endcode
*/
- boost::system::error_code connect(const endpoint_type& peer_endpoint,
+ BOOST_ASIO_SYNC_OP_VOID connect(const endpoint_type& peer_endpoint,
boost::system::error_code& ec)
{
if (!is_open())
{
- if (this->get_service().open(this->get_implementation(),
- peer_endpoint.protocol(), ec))
+ this->get_service().open(this->get_implementation(),
+ peer_endpoint.protocol(), ec);
+ if (ec)
{
- return ec;
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
}
- return this->get_service().connect(
- this->get_implementation(), peer_endpoint, ec);
+ this->get_service().connect(this->get_implementation(), peer_endpoint, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Start an asynchronous connect.
@@ -723,7 +831,7 @@ public:
* Regardless of whether the asynchronous operation completes immediately or
* not, the handler will not be invoked from within this function. Invocation
* of the handler will be performed in a manner equivalent to using
- * boost::asio::io_service::post().
+ * boost::asio::io_context::post().
*
* @par Example
* @code
@@ -737,7 +845,7 @@ public:
*
* ...
*
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* boost::asio::ip::tcp::endpoint endpoint(
* boost::asio::ip::address::from_string("1.2.3.4"), 12345);
* socket.async_connect(endpoint, connect_handler);
@@ -757,24 +865,34 @@ public:
{
boost::system::error_code ec;
const protocol_type protocol = peer_endpoint.protocol();
- if (this->get_service().open(this->get_implementation(), protocol, ec))
+ this->get_service().open(this->get_implementation(), protocol, ec);
+ if (ec)
{
- detail::async_result_init<
- ConnectHandler, void (boost::system::error_code)> init(
- BOOST_ASIO_MOVE_CAST(ConnectHandler)(handler));
+ async_completion<ConnectHandler,
+ void (boost::system::error_code)> init(handler);
- this->get_io_service().post(
+ boost::asio::post(this->get_executor(),
boost::asio::detail::bind_handler(
BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE(
ConnectHandler, void (boost::system::error_code)))(
- init.handler), ec));
+ init.completion_handler), ec));
return init.result.get();
}
}
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
return this->get_service().async_connect(this->get_implementation(),
peer_endpoint, BOOST_ASIO_MOVE_CAST(ConnectHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<ConnectHandler,
+ void (boost::system::error_code)> init(handler);
+
+ this->get_service().async_connect(
+ this->get_implementation(), peer_endpoint, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
/// Set an option on the socket.
@@ -805,7 +923,7 @@ public:
* @par Example
* Setting the IPPROTO_TCP/TCP_NODELAY option:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::no_delay option(true);
* socket.set_option(option);
@@ -847,7 +965,7 @@ public:
* @par Example
* Setting the IPPROTO_TCP/TCP_NODELAY option:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::no_delay option(true);
* boost::system::error_code ec;
@@ -859,11 +977,11 @@ public:
* @endcode
*/
template <typename SettableSocketOption>
- boost::system::error_code set_option(const SettableSocketOption& option,
+ BOOST_ASIO_SYNC_OP_VOID set_option(const SettableSocketOption& option,
boost::system::error_code& ec)
{
- return this->get_service().set_option(
- this->get_implementation(), option, ec);
+ this->get_service().set_option(this->get_implementation(), option, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Get an option from the socket.
@@ -894,7 +1012,7 @@ public:
* @par Example
* Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::socket::keep_alive option;
* socket.get_option(option);
@@ -937,7 +1055,7 @@ public:
* @par Example
* Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::socket::keep_alive option;
* boost::system::error_code ec;
@@ -950,11 +1068,11 @@ public:
* @endcode
*/
template <typename GettableSocketOption>
- boost::system::error_code get_option(GettableSocketOption& option,
+ BOOST_ASIO_SYNC_OP_VOID get_option(GettableSocketOption& option,
boost::system::error_code& ec) const
{
- return this->get_service().get_option(
- this->get_implementation(), option, ec);
+ this->get_service().get_option(this->get_implementation(), option, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Perform an IO control command on the socket.
@@ -972,7 +1090,7 @@ public:
* @par Example
* Getting the number of bytes ready to read:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::socket::bytes_readable command;
* socket.io_control(command);
@@ -1002,7 +1120,7 @@ public:
* @par Example
* Getting the number of bytes ready to read:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::socket::bytes_readable command;
* boost::system::error_code ec;
@@ -1015,11 +1133,11 @@ public:
* @endcode
*/
template <typename IoControlCommand>
- boost::system::error_code io_control(IoControlCommand& command,
+ BOOST_ASIO_SYNC_OP_VOID io_control(IoControlCommand& command,
boost::system::error_code& ec)
{
- return this->get_service().io_control(
- this->get_implementation(), command, ec);
+ this->get_service().io_control(this->get_implementation(), command, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Gets the non-blocking mode of the socket.
@@ -1071,11 +1189,11 @@ public:
* operations. Asynchronous operations will never fail with the error
* boost::asio::error::would_block.
*/
- boost::system::error_code non_blocking(
+ BOOST_ASIO_SYNC_OP_VOID non_blocking(
bool mode, boost::system::error_code& ec)
{
- return this->get_service().non_blocking(
- this->get_implementation(), mode, ec);
+ this->get_service().non_blocking(this->get_implementation(), mode, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Gets the non-blocking mode of the native socket implementation.
@@ -1135,7 +1253,7 @@ public:
* || ec == boost::asio::error::try_again)
* {
* // We have to wait for the socket to become ready again.
- * sock_.async_write_some(boost::asio::null_buffers(), *this);
+ * sock_.async_wait(tcp::socket::wait_write, *this);
* return;
* }
*
@@ -1159,7 +1277,7 @@ public:
* void async_sendfile(tcp::socket& sock, int fd, Handler h)
* {
* sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
- * sock.async_write_some(boost::asio::null_buffers(), op);
+ * sock.async_wait(tcp::socket::wait_write, op);
* } @endcode
*/
bool native_non_blocking() const
@@ -1225,7 +1343,7 @@ public:
* || ec == boost::asio::error::try_again)
* {
* // We have to wait for the socket to become ready again.
- * sock_.async_write_some(boost::asio::null_buffers(), *this);
+ * sock_.async_wait(tcp::socket::wait_write, *this);
* return;
* }
*
@@ -1249,7 +1367,7 @@ public:
* void async_sendfile(tcp::socket& sock, int fd, Handler h)
* {
* sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
- * sock.async_write_some(boost::asio::null_buffers(), op);
+ * sock.async_wait(tcp::socket::wait_write, op);
* } @endcode
*/
void native_non_blocking(bool mode)
@@ -1318,7 +1436,7 @@ public:
* || ec == boost::asio::error::try_again)
* {
* // We have to wait for the socket to become ready again.
- * sock_.async_write_some(boost::asio::null_buffers(), *this);
+ * sock_.async_wait(tcp::socket::wait_write, *this);
* return;
* }
*
@@ -1342,14 +1460,15 @@ public:
* void async_sendfile(tcp::socket& sock, int fd, Handler h)
* {
* sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
- * sock.async_write_some(boost::asio::null_buffers(), op);
+ * sock.async_wait(tcp::socket::wait_write, op);
* } @endcode
*/
- boost::system::error_code native_non_blocking(
+ BOOST_ASIO_SYNC_OP_VOID native_non_blocking(
bool mode, boost::system::error_code& ec)
{
- return this->get_service().native_non_blocking(
+ this->get_service().native_non_blocking(
this->get_implementation(), mode, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Get the local endpoint of the socket.
@@ -1362,7 +1481,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
* @endcode
@@ -1387,7 +1506,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::system::error_code ec;
* boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
@@ -1412,7 +1531,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
* @endcode
@@ -1437,7 +1556,7 @@ public:
*
* @par Example
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::system::error_code ec;
* boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
@@ -1464,7 +1583,7 @@ public:
* @par Example
* Shutting down the send side of the socket:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
* @endcode
@@ -1488,7 +1607,7 @@ public:
* @par Example
* Shutting down the send side of the socket:
* @code
- * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::socket socket(io_context);
* ...
* boost::system::error_code ec;
* socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send, ec);
@@ -1498,17 +1617,134 @@ public:
* }
* @endcode
*/
- boost::system::error_code shutdown(shutdown_type what,
+ BOOST_ASIO_SYNC_OP_VOID shutdown(shutdown_type what,
boost::system::error_code& ec)
{
- return this->get_service().shutdown(this->get_implementation(), what, ec);
+ this->get_service().shutdown(this->get_implementation(), what, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
+ }
+
+ /// Wait for the socket to become ready to read, ready to write, or to have
+ /// pending error conditions.
+ /**
+ * This function is used to perform a blocking wait for a socket to enter
+ * a ready to read, write or error condition state.
+ *
+ * @param w Specifies the desired socket state.
+ *
+ * @par Example
+ * Waiting for a socket to become readable.
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_context);
+ * ...
+ * socket.wait(boost::asio::ip::tcp::socket::wait_read);
+ * @endcode
+ */
+ void wait(wait_type w)
+ {
+ boost::system::error_code ec;
+ this->get_service().wait(this->get_implementation(), w, ec);
+ boost::asio::detail::throw_error(ec, "wait");
+ }
+
+ /// Wait for the socket to become ready to read, ready to write, or to have
+ /// pending error conditions.
+ /**
+ * This function is used to perform a blocking wait for a socket to enter
+ * a ready to read, write or error condition state.
+ *
+ * @param w Specifies the desired socket state.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * Waiting for a socket to become readable.
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_context);
+ * ...
+ * boost::system::error_code ec;
+ * socket.wait(boost::asio::ip::tcp::socket::wait_read, ec);
+ * @endcode
+ */
+ BOOST_ASIO_SYNC_OP_VOID wait(wait_type w, boost::system::error_code& ec)
+ {
+ this->get_service().wait(this->get_implementation(), w, ec);
+ BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
+ }
+
+ /// Asynchronously wait for the socket to become ready to read, ready to
+ /// write, or to have pending error conditions.
+ /**
+ * This function is used to perform an asynchronous wait for a socket to enter
+ * a ready to read, write or error condition state.
+ *
+ * @param w Specifies the desired socket state.
+ *
+ * @param handler The handler to be called when the wait operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error // Result of operation
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_context::post().
+ *
+ * @par Example
+ * @code
+ * void wait_handler(const boost::system::error_code& error)
+ * {
+ * if (!error)
+ * {
+ * // Wait succeeded.
+ * }
+ * }
+ *
+ * ...
+ *
+ * boost::asio::ip::tcp::socket socket(io_context);
+ * ...
+ * socket.async_wait(boost::asio::ip::tcp::socket::wait_read, wait_handler);
+ * @endcode
+ */
+ template <typename WaitHandler>
+ BOOST_ASIO_INITFN_RESULT_TYPE(WaitHandler,
+ void (boost::system::error_code))
+ async_wait(wait_type w, BOOST_ASIO_MOVE_ARG(WaitHandler) handler)
+ {
+ // If you get an error on the following line it means that your handler does
+ // not meet the documented type requirements for a WaitHandler.
+ BOOST_ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
+
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ return this->get_service().async_wait(this->get_implementation(),
+ w, BOOST_ASIO_MOVE_CAST(WaitHandler)(handler));
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+ async_completion<WaitHandler,
+ void (boost::system::error_code)> init(handler);
+
+ this->get_service().async_wait(this->get_implementation(),
+ w, init.completion_handler);
+
+ return init.result.get();
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
}
protected:
/// Protected destructor to prevent deletion through this type.
+ /**
+ * This function destroys the socket, cancelling any outstanding asynchronous
+ * operations associated with the socket as if by calling @c cancel.
+ */
~basic_socket()
{
}
+
+private:
+ // Disallow copying and assignment.
+ basic_socket(const basic_socket&) BOOST_ASIO_DELETED;
+ basic_socket& operator=(const basic_socket&) BOOST_ASIO_DELETED;
};
} // namespace asio
@@ -1516,4 +1752,8 @@ protected:
#include <boost/asio/detail/pop_options.hpp>
+#if !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# undef BOOST_ASIO_SVC_T
+#endif // !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#endif // BOOST_ASIO_BASIC_SOCKET_HPP
diff --git a/boost/asio/basic_socket_acceptor.hpp b/boost/asio/basic_socket_acceptor.hpp
index f1d2b8e7a6..3cbfa5081d 100644
--- a/boost/asio/basic_socket_acceptor.hpp
+++ b/boost/asio/basic_socket_acceptor.hpp
@@ -22,9 +22,27 @@
#include <boost/asio/detail/throw_error.hpp>
#include <boost/asio/detail/type_traits.hpp>
#include <boost/asio/error.hpp>
-#include <boost/asio/socket_acceptor_service.hpp>
#include <boost/asio/socket_base.hpp>
+#if defined(BOOST_ASIO_HAS_MOVE)
+# include <utility>
+#endif // defined(BOOST_ASIO_HAS_MOVE)
+
+#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# include <boost/asio/socket_acceptor_service.hpp>
+#else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+# if defined(BOOST_ASIO_WINDOWS_RUNTIME)
+# include <boost/asio/detail/null_socket_service.hpp>
+# define BOOST_ASIO_SVC_T detail::null_socket_service<Protocol>
+# elif defined(BOOST_ASIO_HAS_IOCP)
+# include <boost/asio/detail/win_iocp_socket_service.hpp>
+# define BOOST_ASIO_SVC_T detail::win_iocp_socket_service<Protocol>
+# else
+# include <boost/asio/detail/reactive_socket_service.hpp>
+# define BOOST_ASIO_SVC_T detail::reactive_socket_service<Protocol>
+# endif
+#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
+
#include <boost/asio/detail/push_options.hpp>
namespace boost {
@@ -42,7 +60,7 @@ namespace asio {
* @par Example
* Opening a socket acceptor with the SO_REUSEADDR option enabled:
* @code
- * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * boost::asio::ip::tcp::acceptor acceptor(io_context);
* boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port);
* acceptor.open(endpoint.protocol());
* acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
@@ -50,19 +68,22 @@ namespace asio {
* acceptor.listen();
* @endcode
*/
-template <typename Protocol,
- typename SocketAcceptorService = socket_acceptor_service<Protocol> >
+template <typename Protocol
+ BOOST_ASIO_SVC_TPARAM_DEF1(= socket_acceptor_service<Protocol>)>
class basic_socket_acceptor
- : public basic_io_object<SocketAcceptorService>,
+ : BOOST_ASIO_SVC_ACCESS basic_io_object<BOOST_ASIO_SVC_T>,
public socket_base
{
public:
- /// (Deprecated: Use native_handle_type.) The native representation of an
- /// acceptor.
- typedef typename SocketAcceptorService::native_handle_type native_type;
+ /// The type of the executor associated with the object.
+ typedef io_context::executor_type executor_type;
/// The native representation of an acceptor.
- typedef typename SocketAcceptorService::native_handle_type native_handle_type;
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_handle_type;
+#else
+ typedef typename BOOST_ASIO_SVC_T::native_handle_type native_handle_type;
+#endif
/// The protocol type.
typedef Protocol protocol_type;
@@ -76,12 +97,12 @@ public:
* connections. The open() function must be called before the acceptor can
* accept new socket connections.
*
- * @param io_service The io_service object that the acceptor will use to
+ * @param io_context The io_context object that the acceptor will use to
* dispatch handlers for any asynchronous operations performed on the
* acceptor.
*/
- explicit basic_socket_acceptor(boost::asio::io_service& io_service)
- : basic_io_object<SocketAcceptorService>(io_service)
+ explicit basic_socket_acceptor(boost::asio::io_context& io_context)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
}
@@ -89,7 +110,7 @@ public:
/**
* This constructor creates an acceptor and automatically opens it.
*
- * @param io_service The io_service object that the acceptor will use to
+ * @param io_context The io_context object that the acceptor will use to
* dispatch handlers for any asynchronous operations performed on the
* acceptor.
*
@@ -97,9 +118,9 @@ public:
*
* @throws boost::system::system_error Thrown on failure.
*/
- basic_socket_acceptor(boost::asio::io_service& io_service,
+ basic_socket_acceptor(boost::asio::io_context& io_context,
const protocol_type& protocol)
- : basic_io_object<SocketAcceptorService>(io_service)
+ : basic_io_object<BOOST_ASIO_SVC_T>(io_context)
{
boost::system::error_code ec;
this->get_service().open(this->get_implementation(), protocol, ec);
@@ -111,7 +132,7 @@ public:
* This constructor creates an acceptor and automatically opens it to listen
* for new connections on the specified endpoint.
*
- * @param io_service The io_service object that the acceptor will use to