From f07908c6273ca5939a214f7daa6359d07f593673 Mon Sep 17 00:00:00 2001 From: Berlin Date: Tue, 21 Jun 2022 14:53:19 +0800 Subject: [PATCH 1/2] The third-party warehouse boost was updated from version 1.74 to version 1.76 Signed-off-by: Berlin --- CMakeLists.txt | 14 + INSTALL | 0 Jamroot | 5 +- LICENSE_1_0.txt | 0 README.md | 2 +- appveyor.yml | 34 + boost-build.jam | 0 boost.css | 0 boost.png | Bin boost/asio.hpp | 2 +- boost/asio/any_io_executor.hpp | 251 +- boost/asio/associated_allocator.hpp | 2 +- boost/asio/associated_executor.hpp | 10 +- boost/asio/async_result.hpp | 18 +- boost/asio/awaitable.hpp | 2 +- boost/asio/basic_datagram_socket.hpp | 34 +- boost/asio/basic_deadline_timer.hpp | 26 +- boost/asio/basic_io_object.hpp | 2 +- boost/asio/basic_raw_socket.hpp | 34 +- boost/asio/basic_seq_packet_socket.hpp | 33 +- boost/asio/basic_serial_port.hpp | 36 +- boost/asio/basic_signal_set.hpp | 50 +- boost/asio/basic_socket.hpp | 43 +- boost/asio/basic_socket_acceptor.hpp | 109 +- boost/asio/basic_socket_iostream.hpp | 2 +- boost/asio/basic_socket_streambuf.hpp | 2 +- boost/asio/basic_stream_socket.hpp | 33 +- boost/asio/basic_streambuf.hpp | 2 +- boost/asio/basic_streambuf_fwd.hpp | 2 +- boost/asio/basic_waitable_timer.hpp | 32 +- boost/asio/bind_executor.hpp | 10 +- boost/asio/buffer.hpp | 50 +- boost/asio/buffered_read_stream.hpp | 2 +- boost/asio/buffered_read_stream_fwd.hpp | 2 +- boost/asio/buffered_stream.hpp | 2 +- boost/asio/buffered_stream_fwd.hpp | 2 +- boost/asio/buffered_write_stream.hpp | 2 +- boost/asio/buffered_write_stream_fwd.hpp | 2 +- boost/asio/buffers_iterator.hpp | 2 +- boost/asio/co_spawn.hpp | 26 +- boost/asio/completion_condition.hpp | 2 +- boost/asio/compose.hpp | 2 +- boost/asio/connect.hpp | 38 +- boost/asio/coroutine.hpp | 2 +- boost/asio/deadline_timer.hpp | 2 +- boost/asio/defer.hpp | 10 +- boost/asio/detached.hpp | 6 +- boost/asio/detail/array.hpp | 2 +- boost/asio/detail/array_fwd.hpp | 2 +- boost/asio/detail/assert.hpp | 2 +- boost/asio/detail/atomic_count.hpp | 2 +- .../asio/detail/base_from_completion_cond.hpp | 2 +- boost/asio/detail/bind_handler.hpp | 6 +- boost/asio/detail/blocking_executor_op.hpp | 2 +- boost/asio/detail/buffer_resize_guard.hpp | 2 +- boost/asio/detail/buffer_sequence_adapter.hpp | 2 +- boost/asio/detail/buffered_stream_storage.hpp | 2 +- boost/asio/detail/bulk_executor_op.hpp | 2 +- boost/asio/detail/call_stack.hpp | 2 +- boost/asio/detail/chrono.hpp | 2 +- boost/asio/detail/chrono_time_traits.hpp | 2 +- boost/asio/detail/completion_handler.hpp | 2 +- boost/asio/detail/concurrency_hint.hpp | 2 +- .../detail/conditionally_enabled_event.hpp | 2 +- .../detail/conditionally_enabled_mutex.hpp | 2 +- boost/asio/detail/config.hpp | 73 +- boost/asio/detail/consuming_buffers.hpp | 2 +- boost/asio/detail/cstddef.hpp | 2 +- boost/asio/detail/cstdint.hpp | 2 +- boost/asio/detail/date_time_fwd.hpp | 2 +- boost/asio/detail/deadline_timer_service.hpp | 2 +- boost/asio/detail/dependent_type.hpp | 2 +- boost/asio/detail/descriptor_ops.hpp | 2 +- boost/asio/detail/descriptor_read_op.hpp | 2 +- boost/asio/detail/descriptor_write_op.hpp | 2 +- boost/asio/detail/dev_poll_reactor.hpp | 2 +- boost/asio/detail/epoll_reactor.hpp | 2 +- boost/asio/detail/event.hpp | 2 +- .../detail/eventfd_select_interrupter.hpp | 2 +- boost/asio/detail/executor_function.hpp | 5 +- boost/asio/detail/executor_op.hpp | 2 +- boost/asio/detail/fd_set_adapter.hpp | 2 +- boost/asio/detail/fenced_block.hpp | 2 +- boost/asio/detail/functional.hpp | 2 +- boost/asio/detail/future.hpp | 2 +- boost/asio/detail/gcc_arm_fenced_block.hpp | 2 +- boost/asio/detail/gcc_hppa_fenced_block.hpp | 2 +- boost/asio/detail/gcc_sync_fenced_block.hpp | 2 +- boost/asio/detail/gcc_x86_fenced_block.hpp | 2 +- boost/asio/detail/global.hpp | 2 +- boost/asio/detail/handler_alloc_helpers.hpp | 6 +- boost/asio/detail/handler_cont_helpers.hpp | 2 +- boost/asio/detail/handler_invoke_helpers.hpp | 2 +- boost/asio/detail/handler_tracking.hpp | 2 +- .../asio/detail/handler_type_requirements.hpp | 2 +- boost/asio/detail/handler_work.hpp | 100 +- boost/asio/detail/hash_map.hpp | 2 +- .../detail/impl/buffer_sequence_adapter.ipp | 2 +- boost/asio/detail/impl/descriptor_ops.ipp | 2 +- boost/asio/detail/impl/dev_poll_reactor.hpp | 2 +- boost/asio/detail/impl/dev_poll_reactor.ipp | 2 +- boost/asio/detail/impl/epoll_reactor.hpp | 2 +- boost/asio/detail/impl/epoll_reactor.ipp | 2 +- .../impl/eventfd_select_interrupter.ipp | 18 +- boost/asio/detail/impl/handler_tracking.ipp | 2 +- boost/asio/detail/impl/kqueue_reactor.hpp | 2 +- boost/asio/detail/impl/kqueue_reactor.ipp | 2 +- boost/asio/detail/impl/null_event.ipp | 2 +- .../detail/impl/pipe_select_interrupter.ipp | 2 +- boost/asio/detail/impl/posix_event.ipp | 12 +- boost/asio/detail/impl/posix_mutex.ipp | 2 +- boost/asio/detail/impl/posix_thread.ipp | 2 +- boost/asio/detail/impl/posix_tss_ptr.ipp | 2 +- .../impl/reactive_descriptor_service.ipp | 2 +- .../impl/reactive_serial_port_service.ipp | 2 +- .../impl/reactive_socket_service_base.ipp | 2 +- .../detail/impl/resolver_service_base.ipp | 2 +- boost/asio/detail/impl/scheduler.ipp | 7 +- boost/asio/detail/impl/select_reactor.hpp | 2 +- boost/asio/detail/impl/select_reactor.ipp | 2 +- boost/asio/detail/impl/service_registry.hpp | 2 +- boost/asio/detail/impl/service_registry.ipp | 2 +- boost/asio/detail/impl/signal_set_service.ipp | 2 +- boost/asio/detail/impl/socket_ops.ipp | 24 +- .../detail/impl/socket_select_interrupter.ipp | 2 +- .../detail/impl/strand_executor_service.hpp | 47 +- .../detail/impl/strand_executor_service.ipp | 26 +- boost/asio/detail/impl/strand_service.hpp | 36 +- boost/asio/detail/impl/strand_service.ipp | 34 +- boost/asio/detail/impl/thread_context.ipp | 37 + boost/asio/detail/impl/throw_error.ipp | 2 +- boost/asio/detail/impl/timer_queue_ptime.ipp | 2 +- boost/asio/detail/impl/timer_queue_set.ipp | 2 +- boost/asio/detail/impl/win_event.ipp | 2 +- .../detail/impl/win_iocp_handle_service.ipp | 2 +- .../asio/detail/impl/win_iocp_io_context.hpp | 3 +- .../asio/detail/impl/win_iocp_io_context.ipp | 7 +- .../impl/win_iocp_serial_port_service.ipp | 2 +- .../impl/win_iocp_socket_service_base.ipp | 2 +- boost/asio/detail/impl/win_mutex.ipp | 2 +- .../detail/impl/win_object_handle_service.ipp | 2 +- boost/asio/detail/impl/win_static_mutex.ipp | 2 +- boost/asio/detail/impl/win_thread.ipp | 2 +- boost/asio/detail/impl/win_tss_ptr.ipp | 2 +- .../impl/winrt_ssocket_service_base.ipp | 2 +- .../detail/impl/winrt_timer_scheduler.hpp | 2 +- .../detail/impl/winrt_timer_scheduler.ipp | 2 +- boost/asio/detail/impl/winsock_init.ipp | 2 +- boost/asio/detail/io_control.hpp | 2 +- boost/asio/detail/io_object_impl.hpp | 11 +- boost/asio/detail/is_buffer_sequence.hpp | 2 +- boost/asio/detail/is_executor.hpp | 2 +- boost/asio/detail/keyword_tss_ptr.hpp | 2 +- boost/asio/detail/kqueue_reactor.hpp | 2 +- boost/asio/detail/limits.hpp | 0 .../asio/detail/local_free_on_block_exit.hpp | 2 +- boost/asio/detail/macos_fenced_block.hpp | 2 +- boost/asio/detail/memory.hpp | 2 +- boost/asio/detail/mutex.hpp | 2 +- boost/asio/detail/non_const_lvalue.hpp | 2 +- boost/asio/detail/noncopyable.hpp | 2 +- boost/asio/detail/null_event.hpp | 2 +- boost/asio/detail/null_fenced_block.hpp | 2 +- boost/asio/detail/null_global.hpp | 2 +- boost/asio/detail/null_mutex.hpp | 2 +- boost/asio/detail/null_reactor.hpp | 2 +- boost/asio/detail/null_signal_blocker.hpp | 2 +- boost/asio/detail/null_socket_service.hpp | 2 +- boost/asio/detail/null_static_mutex.hpp | 2 +- boost/asio/detail/null_thread.hpp | 2 +- boost/asio/detail/null_tss_ptr.hpp | 2 +- boost/asio/detail/object_pool.hpp | 2 +- boost/asio/detail/old_win_sdk_compat.hpp | 2 +- boost/asio/detail/op_queue.hpp | 2 +- boost/asio/detail/operation.hpp | 2 +- boost/asio/detail/pipe_select_interrupter.hpp | 2 +- boost/asio/detail/pop_options.hpp | 2 +- boost/asio/detail/posix_event.hpp | 2 +- boost/asio/detail/posix_fd_set_adapter.hpp | 2 +- boost/asio/detail/posix_global.hpp | 2 +- boost/asio/detail/posix_mutex.hpp | 2 +- boost/asio/detail/posix_signal_blocker.hpp | 2 +- boost/asio/detail/posix_static_mutex.hpp | 2 +- boost/asio/detail/posix_thread.hpp | 2 +- boost/asio/detail/posix_tss_ptr.hpp | 2 +- boost/asio/detail/push_options.hpp | 8 +- .../detail/reactive_descriptor_service.hpp | 2 +- .../asio/detail/reactive_null_buffers_op.hpp | 2 +- .../detail/reactive_serial_port_service.hpp | 2 +- .../asio/detail/reactive_socket_accept_op.hpp | 2 +- .../detail/reactive_socket_connect_op.hpp | 2 +- boost/asio/detail/reactive_socket_recv_op.hpp | 2 +- .../detail/reactive_socket_recvfrom_op.hpp | 2 +- .../detail/reactive_socket_recvmsg_op.hpp | 2 +- boost/asio/detail/reactive_socket_send_op.hpp | 2 +- .../asio/detail/reactive_socket_sendto_op.hpp | 2 +- boost/asio/detail/reactive_socket_service.hpp | 2 +- .../detail/reactive_socket_service_base.hpp | 2 +- boost/asio/detail/reactive_wait_op.hpp | 2 +- boost/asio/detail/reactor.hpp | 2 +- boost/asio/detail/reactor_fwd.hpp | 2 +- boost/asio/detail/reactor_op.hpp | 2 +- boost/asio/detail/reactor_op_queue.hpp | 2 +- boost/asio/detail/recycling_allocator.hpp | 8 +- boost/asio/detail/regex_fwd.hpp | 13 +- boost/asio/detail/resolve_endpoint_op.hpp | 2 +- boost/asio/detail/resolve_op.hpp | 2 +- boost/asio/detail/resolve_query_op.hpp | 6 +- boost/asio/detail/resolver_service.hpp | 14 +- boost/asio/detail/resolver_service_base.hpp | 17 +- boost/asio/detail/scheduler.hpp | 7 +- boost/asio/detail/scheduler_operation.hpp | 2 +- boost/asio/detail/scheduler_thread_info.hpp | 2 +- boost/asio/detail/scoped_lock.hpp | 2 +- boost/asio/detail/scoped_ptr.hpp | 2 +- boost/asio/detail/select_interrupter.hpp | 2 +- boost/asio/detail/select_reactor.hpp | 2 +- boost/asio/detail/service_registry.hpp | 2 +- boost/asio/detail/signal_blocker.hpp | 2 +- boost/asio/detail/signal_handler.hpp | 2 +- boost/asio/detail/signal_init.hpp | 2 +- boost/asio/detail/signal_op.hpp | 2 +- boost/asio/detail/signal_set_service.hpp | 2 +- boost/asio/detail/socket_holder.hpp | 2 +- boost/asio/detail/socket_ops.hpp | 2 +- boost/asio/detail/socket_option.hpp | 2 +- .../asio/detail/socket_select_interrupter.hpp | 2 +- boost/asio/detail/socket_types.hpp | 3 +- boost/asio/detail/solaris_fenced_block.hpp | 2 +- boost/asio/detail/source_location.hpp | 2 +- boost/asio/detail/static_mutex.hpp | 2 +- boost/asio/detail/std_event.hpp | 4 +- boost/asio/detail/std_fenced_block.hpp | 2 +- boost/asio/detail/std_global.hpp | 2 +- boost/asio/detail/std_mutex.hpp | 2 +- boost/asio/detail/std_static_mutex.hpp | 2 +- boost/asio/detail/std_thread.hpp | 2 +- boost/asio/detail/strand_executor_service.hpp | 9 +- boost/asio/detail/strand_service.hpp | 9 +- boost/asio/detail/string_view.hpp | 2 +- boost/asio/detail/thread.hpp | 10 +- boost/asio/detail/thread_context.hpp | 11 +- boost/asio/detail/thread_group.hpp | 6 +- boost/asio/detail/thread_info_base.hpp | 11 +- boost/asio/detail/throw_error.hpp | 2 +- boost/asio/detail/throw_exception.hpp | 2 +- boost/asio/detail/timer_queue.hpp | 2 +- boost/asio/detail/timer_queue_base.hpp | 2 +- boost/asio/detail/timer_queue_ptime.hpp | 2 +- boost/asio/detail/timer_queue_set.hpp | 2 +- boost/asio/detail/timer_scheduler.hpp | 2 +- boost/asio/detail/timer_scheduler_fwd.hpp | 2 +- boost/asio/detail/tss_ptr.hpp | 2 +- boost/asio/detail/type_traits.hpp | 10 +- boost/asio/detail/variadic_templates.hpp | 2 +- boost/asio/detail/wait_handler.hpp | 2 +- boost/asio/detail/wait_op.hpp | 2 +- boost/asio/detail/win_event.hpp | 2 +- boost/asio/detail/win_fd_set_adapter.hpp | 2 +- boost/asio/detail/win_fenced_block.hpp | 2 +- boost/asio/detail/win_global.hpp | 2 +- boost/asio/detail/win_iocp_handle_read_op.hpp | 2 +- boost/asio/detail/win_iocp_handle_service.hpp | 2 +- .../asio/detail/win_iocp_handle_write_op.hpp | 2 +- boost/asio/detail/win_iocp_io_context.hpp | 7 +- .../asio/detail/win_iocp_null_buffers_op.hpp | 2 +- boost/asio/detail/win_iocp_operation.hpp | 2 +- boost/asio/detail/win_iocp_overlapped_op.hpp | 2 +- boost/asio/detail/win_iocp_overlapped_ptr.hpp | 2 +- .../detail/win_iocp_serial_port_service.hpp | 2 +- .../asio/detail/win_iocp_socket_accept_op.hpp | 2 +- .../detail/win_iocp_socket_connect_op.hpp | 2 +- boost/asio/detail/win_iocp_socket_recv_op.hpp | 2 +- .../detail/win_iocp_socket_recvfrom_op.hpp | 2 +- .../detail/win_iocp_socket_recvmsg_op.hpp | 2 +- boost/asio/detail/win_iocp_socket_send_op.hpp | 2 +- boost/asio/detail/win_iocp_socket_service.hpp | 2 +- .../detail/win_iocp_socket_service_base.hpp | 2 +- boost/asio/detail/win_iocp_thread_info.hpp | 2 +- boost/asio/detail/win_iocp_wait_op.hpp | 2 +- boost/asio/detail/win_mutex.hpp | 2 +- .../asio/detail/win_object_handle_service.hpp | 2 +- boost/asio/detail/win_static_mutex.hpp | 2 +- boost/asio/detail/win_thread.hpp | 2 +- boost/asio/detail/win_tss_ptr.hpp | 2 +- boost/asio/detail/winapp_thread.hpp | 2 +- boost/asio/detail/wince_thread.hpp | 2 +- boost/asio/detail/winrt_async_manager.hpp | 2 +- boost/asio/detail/winrt_async_op.hpp | 2 +- boost/asio/detail/winrt_resolve_op.hpp | 2 +- boost/asio/detail/winrt_resolver_service.hpp | 2 +- boost/asio/detail/winrt_socket_connect_op.hpp | 2 +- boost/asio/detail/winrt_socket_recv_op.hpp | 2 +- boost/asio/detail/winrt_socket_send_op.hpp | 2 +- boost/asio/detail/winrt_ssocket_service.hpp | 2 +- .../detail/winrt_ssocket_service_base.hpp | 2 +- boost/asio/detail/winrt_timer_scheduler.hpp | 2 +- boost/asio/detail/winrt_utils.hpp | 2 +- boost/asio/detail/winsock_init.hpp | 2 +- boost/asio/detail/work_dispatcher.hpp | 2 +- boost/asio/detail/wrapped_handler.hpp | 2 +- boost/asio/dispatch.hpp | 10 +- boost/asio/error.hpp | 2 +- boost/asio/execution.hpp | 2 +- boost/asio/execution/allocator.hpp | 126 +- boost/asio/execution/any_executor.hpp | 306 +- boost/asio/execution/bad_executor.hpp | 2 +- boost/asio/execution/blocking.hpp | 366 +- boost/asio/execution/blocking_adaptation.hpp | 288 +- boost/asio/execution/bulk_execute.hpp | 89 +- boost/asio/execution/bulk_guarantee.hpp | 377 +- boost/asio/execution/connect.hpp | 75 +- boost/asio/execution/context.hpp | 76 +- boost/asio/execution/context_as.hpp | 38 +- boost/asio/execution/detail/as_invocable.hpp | 2 +- boost/asio/execution/detail/as_operation.hpp | 2 +- boost/asio/execution/detail/as_receiver.hpp | 2 +- boost/asio/execution/detail/bulk_sender.hpp | 2 +- .../asio/execution/detail/submit_receiver.hpp | 2 +- boost/asio/execution/detail/void_receiver.hpp | 2 +- boost/asio/execution/execute.hpp | 115 +- boost/asio/execution/executor.hpp | 64 +- boost/asio/execution/impl/bad_executor.ipp | 2 +- .../impl/receiver_invocation_error.ipp | 2 +- boost/asio/execution/invocable_archetype.hpp | 2 +- boost/asio/execution/mapping.hpp | 363 +- boost/asio/execution/occupancy.hpp | 76 +- boost/asio/execution/operation_state.hpp | 2 +- boost/asio/execution/outstanding_work.hpp | 286 +- boost/asio/execution/prefer_only.hpp | 10 +- boost/asio/execution/receiver.hpp | 2 +- .../execution/receiver_invocation_error.hpp | 2 +- boost/asio/execution/relationship.hpp | 285 +- boost/asio/execution/schedule.hpp | 31 +- boost/asio/execution/scheduler.hpp | 2 +- boost/asio/execution/sender.hpp | 2 +- boost/asio/execution/set_done.hpp | 17 +- boost/asio/execution/set_error.hpp | 17 +- boost/asio/execution/set_value.hpp | 17 +- boost/asio/execution/start.hpp | 17 +- boost/asio/execution/submit.hpp | 42 +- boost/asio/execution_context.hpp | 2 +- boost/asio/executor.hpp | 2 +- boost/asio/executor_work_guard.hpp | 53 +- boost/asio/experimental/as_single.hpp | 137 + boost/asio/experimental/impl/as_single.hpp | 245 + boost/asio/generic/basic_endpoint.hpp | 2 +- boost/asio/generic/datagram_protocol.hpp | 2 +- boost/asio/generic/detail/endpoint.hpp | 2 +- boost/asio/generic/detail/impl/endpoint.ipp | 2 +- boost/asio/generic/raw_protocol.hpp | 2 +- boost/asio/generic/seq_packet_protocol.hpp | 2 +- boost/asio/generic/stream_protocol.hpp | 2 +- boost/asio/handler_alloc_hook.hpp | 2 +- boost/asio/handler_continuation_hook.hpp | 2 +- boost/asio/handler_invoke_hook.hpp | 2 +- boost/asio/high_resolution_timer.hpp | 2 +- boost/asio/impl/awaitable.hpp | 8 +- boost/asio/impl/buffered_read_stream.hpp | 4 +- boost/asio/impl/buffered_write_stream.hpp | 4 +- boost/asio/impl/co_spawn.hpp | 26 +- boost/asio/impl/compose.hpp | 6 +- boost/asio/impl/connect.hpp | 38 +- boost/asio/impl/defer.hpp | 22 +- boost/asio/impl/detached.hpp | 2 +- boost/asio/impl/dispatch.hpp | 22 +- boost/asio/impl/error.ipp | 2 +- boost/asio/impl/execution_context.hpp | 2 +- boost/asio/impl/execution_context.ipp | 2 +- boost/asio/impl/executor.hpp | 3 +- boost/asio/impl/executor.ipp | 2 +- boost/asio/impl/handler_alloc_hook.ipp | 6 +- boost/asio/impl/io_context.hpp | 8 +- boost/asio/impl/io_context.ipp | 2 +- boost/asio/impl/multiple_exceptions.ipp | 2 +- boost/asio/impl/post.hpp | 22 +- boost/asio/impl/read.hpp | 100 +- boost/asio/impl/read_at.hpp | 4 +- boost/asio/impl/read_until.hpp | 176 +- boost/asio/impl/redirect_error.hpp | 3 +- boost/asio/impl/serial_port_base.hpp | 2 +- boost/asio/impl/serial_port_base.ipp | 2 +- boost/asio/impl/spawn.hpp | 15 +- boost/asio/impl/src.hpp | 3 +- boost/asio/impl/system_context.hpp | 2 +- boost/asio/impl/system_context.ipp | 2 +- boost/asio/impl/system_executor.hpp | 3 +- boost/asio/impl/thread_pool.hpp | 8 +- boost/asio/impl/thread_pool.ipp | 2 +- boost/asio/impl/use_awaitable.hpp | 28 +- boost/asio/impl/use_future.hpp | 2 +- boost/asio/impl/write.hpp | 100 +- boost/asio/impl/write_at.hpp | 4 +- boost/asio/io_context.hpp | 22 +- boost/asio/io_context_strand.hpp | 2 +- boost/asio/io_service.hpp | 2 +- boost/asio/io_service_strand.hpp | 2 +- boost/asio/ip/address.hpp | 24 +- boost/asio/ip/address_v4.hpp | 22 +- boost/asio/ip/address_v4_iterator.hpp | 2 +- boost/asio/ip/address_v4_range.hpp | 2 +- boost/asio/ip/address_v6.hpp | 53 +- boost/asio/ip/address_v6_iterator.hpp | 2 +- boost/asio/ip/address_v6_range.hpp | 2 +- boost/asio/ip/bad_address_cast.hpp | 2 +- boost/asio/ip/basic_endpoint.hpp | 37 +- boost/asio/ip/basic_resolver.hpp | 56 +- boost/asio/ip/basic_resolver_entry.hpp | 2 +- boost/asio/ip/basic_resolver_iterator.hpp | 2 +- boost/asio/ip/basic_resolver_query.hpp | 2 +- boost/asio/ip/basic_resolver_results.hpp | 2 +- boost/asio/ip/detail/endpoint.hpp | 2 +- boost/asio/ip/detail/impl/endpoint.ipp | 2 +- boost/asio/ip/detail/socket_option.hpp | 2 +- boost/asio/ip/host_name.hpp | 2 +- boost/asio/ip/icmp.hpp | 2 +- boost/asio/ip/impl/address.hpp | 2 +- boost/asio/ip/impl/address.ipp | 2 +- boost/asio/ip/impl/address_v4.hpp | 2 +- boost/asio/ip/impl/address_v4.ipp | 2 +- boost/asio/ip/impl/address_v6.hpp | 2 +- boost/asio/ip/impl/address_v6.ipp | 4 +- boost/asio/ip/impl/basic_endpoint.hpp | 2 +- boost/asio/ip/impl/host_name.ipp | 2 +- boost/asio/ip/impl/network_v4.hpp | 2 +- boost/asio/ip/impl/network_v4.ipp | 2 +- boost/asio/ip/impl/network_v6.hpp | 2 +- boost/asio/ip/impl/network_v6.ipp | 2 +- boost/asio/ip/multicast.hpp | 2 +- boost/asio/ip/network_v4.hpp | 2 +- boost/asio/ip/network_v6.hpp | 2 +- boost/asio/ip/resolver_base.hpp | 2 +- boost/asio/ip/resolver_query_base.hpp | 2 +- boost/asio/ip/tcp.hpp | 2 +- boost/asio/ip/udp.hpp | 2 +- boost/asio/ip/unicast.hpp | 2 +- boost/asio/ip/v6_only.hpp | 2 +- boost/asio/is_applicable_property.hpp | 2 +- boost/asio/is_executor.hpp | 2 +- boost/asio/is_read_buffered.hpp | 2 +- boost/asio/is_write_buffered.hpp | 2 +- boost/asio/local/basic_endpoint.hpp | 2 +- boost/asio/local/connect_pair.hpp | 2 +- boost/asio/local/datagram_protocol.hpp | 2 +- boost/asio/local/detail/endpoint.hpp | 2 +- boost/asio/local/detail/impl/endpoint.ipp | 2 +- boost/asio/local/stream_protocol.hpp | 2 +- boost/asio/multiple_exceptions.hpp | 2 +- boost/asio/packaged_task.hpp | 2 +- boost/asio/placeholders.hpp | 2 +- boost/asio/posix/basic_descriptor.hpp | 21 +- boost/asio/posix/basic_stream_descriptor.hpp | 23 +- boost/asio/posix/descriptor.hpp | 2 +- boost/asio/posix/descriptor_base.hpp | 2 +- boost/asio/posix/stream_descriptor.hpp | 2 +- boost/asio/post.hpp | 10 +- boost/asio/prefer.hpp | 392 +- boost/asio/query.hpp | 130 +- boost/asio/read.hpp | 98 +- boost/asio/read_at.hpp | 2 +- boost/asio/read_until.hpp | 176 +- boost/asio/redirect_error.hpp | 2 +- boost/asio/require.hpp | 225 +- boost/asio/require_concept.hpp | 158 +- boost/asio/serial_port.hpp | 2 +- boost/asio/serial_port_base.hpp | 2 +- boost/asio/signal_set.hpp | 2 +- boost/asio/socket_base.hpp | 2 +- boost/asio/spawn.hpp | 14 +- boost/asio/ssl.hpp | 2 +- boost/asio/ssl/context.hpp | 2 +- boost/asio/ssl/context_base.hpp | 2 +- .../asio/ssl/detail/buffered_handshake_op.hpp | 2 +- boost/asio/ssl/detail/engine.hpp | 2 +- boost/asio/ssl/detail/handshake_op.hpp | 2 +- boost/asio/ssl/detail/impl/engine.ipp | 2 +- boost/asio/ssl/detail/impl/openssl_init.ipp | 2 +- boost/asio/ssl/detail/io.hpp | 3 +- boost/asio/ssl/detail/openssl_init.hpp | 2 +- boost/asio/ssl/detail/openssl_types.hpp | 2 +- boost/asio/ssl/detail/password_callback.hpp | 2 +- boost/asio/ssl/detail/read_op.hpp | 2 +- boost/asio/ssl/detail/shutdown_op.hpp | 2 +- boost/asio/ssl/detail/stream_core.hpp | 2 +- boost/asio/ssl/detail/verify_callback.hpp | 2 +- boost/asio/ssl/detail/write_op.hpp | 2 +- boost/asio/ssl/error.hpp | 2 +- boost/asio/ssl/host_name_verification.hpp | 2 +- boost/asio/ssl/impl/context.hpp | 2 +- boost/asio/ssl/impl/context.ipp | 2 +- boost/asio/ssl/impl/error.ipp | 2 +- .../asio/ssl/impl/host_name_verification.ipp | 2 +- boost/asio/ssl/impl/rfc2818_verification.ipp | 2 +- boost/asio/ssl/impl/src.hpp | 2 +- boost/asio/ssl/rfc2818_verification.hpp | 2 +- boost/asio/ssl/stream.hpp | 2 +- boost/asio/ssl/stream_base.hpp | 2 +- boost/asio/ssl/verify_context.hpp | 2 +- boost/asio/ssl/verify_mode.hpp | 2 +- boost/asio/static_thread_pool.hpp | 2 +- boost/asio/steady_timer.hpp | 2 +- boost/asio/strand.hpp | 78 +- boost/asio/streambuf.hpp | 2 +- boost/asio/system_context.hpp | 2 +- boost/asio/system_executor.hpp | 24 +- boost/asio/system_timer.hpp | 2 +- boost/asio/this_coro.hpp | 2 +- boost/asio/thread_pool.hpp | 22 +- boost/asio/time_traits.hpp | 2 +- boost/asio/traits/bulk_execute_free.hpp | 2 +- boost/asio/traits/bulk_execute_member.hpp | 2 +- boost/asio/traits/connect_free.hpp | 2 +- boost/asio/traits/connect_member.hpp | 2 +- boost/asio/traits/equality_comparable.hpp | 10 +- boost/asio/traits/execute_free.hpp | 2 +- boost/asio/traits/execute_member.hpp | 2 +- boost/asio/traits/prefer_free.hpp | 2 +- boost/asio/traits/prefer_member.hpp | 2 +- boost/asio/traits/query_free.hpp | 2 +- boost/asio/traits/query_member.hpp | 2 +- .../traits/query_static_constexpr_member.hpp | 2 +- boost/asio/traits/require_concept_free.hpp | 2 +- boost/asio/traits/require_concept_member.hpp | 2 +- boost/asio/traits/require_free.hpp | 2 +- boost/asio/traits/require_member.hpp | 2 +- boost/asio/traits/schedule_free.hpp | 2 +- boost/asio/traits/schedule_member.hpp | 2 +- boost/asio/traits/set_done_free.hpp | 2 +- boost/asio/traits/set_done_member.hpp | 2 +- boost/asio/traits/set_error_free.hpp | 2 +- boost/asio/traits/set_error_member.hpp | 2 +- boost/asio/traits/set_value_free.hpp | 2 +- boost/asio/traits/set_value_member.hpp | 2 +- boost/asio/traits/start_free.hpp | 2 +- boost/asio/traits/start_member.hpp | 2 +- boost/asio/traits/static_query.hpp | 2 +- boost/asio/traits/static_require.hpp | 2 +- boost/asio/traits/static_require_concept.hpp | 5 +- boost/asio/traits/submit_free.hpp | 2 +- boost/asio/traits/submit_member.hpp | 2 +- boost/asio/ts/buffer.hpp | 2 +- boost/asio/ts/executor.hpp | 2 +- boost/asio/ts/internet.hpp | 2 +- boost/asio/ts/io_context.hpp | 2 +- boost/asio/ts/net.hpp | 2 +- boost/asio/ts/netfwd.hpp | 14 +- boost/asio/ts/socket.hpp | 2 +- boost/asio/ts/timer.hpp | 2 +- boost/asio/unyield.hpp | 2 +- boost/asio/use_awaitable.hpp | 6 +- boost/asio/use_future.hpp | 2 +- boost/asio/uses_executor.hpp | 2 +- boost/asio/version.hpp | 4 +- boost/asio/wait_traits.hpp | 2 +- boost/asio/windows/basic_object_handle.hpp | 20 +- .../asio/windows/basic_overlapped_handle.hpp | 20 +- .../windows/basic_random_access_handle.hpp | 12 +- boost/asio/windows/basic_stream_handle.hpp | 12 +- boost/asio/windows/object_handle.hpp | 2 +- boost/asio/windows/overlapped_handle.hpp | 2 +- boost/asio/windows/overlapped_ptr.hpp | 18 +- boost/asio/windows/random_access_handle.hpp | 2 +- boost/asio/windows/stream_handle.hpp | 2 +- boost/asio/write.hpp | 98 +- boost/asio/write_at.hpp | 2 +- boost/asio/yield.hpp | 2 +- boost/beast.hpp | 0 boost/beast/_experimental/http/icy_stream.hpp | 0 .../_experimental/http/impl/icy_stream.hpp | 36 +- .../test/detail/stream_state.hpp | 135 + .../test/detail/stream_state.ipp | 149 + boost/beast/_experimental/test/error.hpp | 0 boost/beast/_experimental/test/fail_count.hpp | 0 boost/beast/_experimental/test/handler.hpp | 0 boost/beast/_experimental/test/impl/error.hpp | 0 boost/beast/_experimental/test/impl/error.ipp | 0 .../_experimental/test/impl/fail_count.ipp | 0 .../beast/_experimental/test/impl/stream.hpp | 162 +- .../beast/_experimental/test/impl/stream.ipp | 231 +- boost/beast/_experimental/test/stream.hpp | 248 +- boost/beast/_experimental/test/tcp.hpp | 0 .../beast/_experimental/unit_test/amount.hpp | 0 .../unit_test/detail/const_container.hpp | 0 .../beast/_experimental/unit_test/dstream.hpp | 0 .../_experimental/unit_test/global_suites.hpp | 0 boost/beast/_experimental/unit_test/main.ipp | 0 boost/beast/_experimental/unit_test/match.hpp | 0 .../_experimental/unit_test/recorder.hpp | 0 .../_experimental/unit_test/reporter.hpp | 0 .../beast/_experimental/unit_test/results.hpp | 0 .../beast/_experimental/unit_test/runner.hpp | 0 boost/beast/_experimental/unit_test/suite.hpp | 0 .../_experimental/unit_test/suite_info.hpp | 0 .../_experimental/unit_test/suite_list.hpp | 0 boost/beast/core.hpp | 0 boost/beast/core/async_base.hpp | 0 boost/beast/core/basic_stream.hpp | 0 boost/beast/core/bind_handler.hpp | 0 boost/beast/core/buffer_traits.hpp | 0 boost/beast/core/buffered_read_stream.hpp | 0 boost/beast/core/buffers_adaptor.hpp | 0 boost/beast/core/buffers_cat.hpp | 0 boost/beast/core/buffers_prefix.hpp | 0 boost/beast/core/buffers_range.hpp | 0 boost/beast/core/buffers_suffix.hpp | 0 boost/beast/core/buffers_to_string.hpp | 0 boost/beast/core/detail/allocator.hpp | 0 boost/beast/core/detail/async_base.hpp | 0 boost/beast/core/detail/base64.hpp | 0 boost/beast/core/detail/base64.ipp | 0 boost/beast/core/detail/bind_continuation.hpp | 0 .../core/detail/bind_default_executor.hpp | 0 boost/beast/core/detail/bind_handler.hpp | 0 boost/beast/core/detail/buffer.hpp | 0 boost/beast/core/detail/buffer_traits.hpp | 0 boost/beast/core/detail/buffers_pair.hpp | 0 .../core/detail/buffers_range_adaptor.hpp | 0 boost/beast/core/detail/buffers_ref.hpp | 0 boost/beast/core/detail/chacha.hpp | 0 boost/beast/core/detail/char_buffer.hpp | 0 boost/beast/core/detail/clamp.hpp | 0 boost/beast/core/detail/config.hpp | 0 boost/beast/core/detail/cpu_info.hpp | 0 boost/beast/core/detail/flat_stream.hpp | 0 boost/beast/core/detail/get_io_context.hpp | 0 boost/beast/core/detail/impl/read.hpp | 0 .../core/detail/impl/temporary_buffer.ipp | 0 boost/beast/core/detail/is_invocable.hpp | 0 boost/beast/core/detail/ostream.hpp | 0 boost/beast/core/detail/pcg.hpp | 0 boost/beast/core/detail/read.hpp | 0 .../beast/core/detail/remap_post_to_defer.hpp | 0 boost/beast/core/detail/service_base.hpp | 0 boost/beast/core/detail/sha1.hpp | 0 boost/beast/core/detail/sha1.ipp | 0 boost/beast/core/detail/static_const.hpp | 0 boost/beast/core/detail/static_ostream.hpp | 0 boost/beast/core/detail/static_string.hpp | 0 boost/beast/core/detail/stream_base.hpp | 38 +- boost/beast/core/detail/stream_traits.hpp | 0 boost/beast/core/detail/string.hpp | 0 boost/beast/core/detail/temporary_buffer.hpp | 0 boost/beast/core/detail/tuple.hpp | 2 +- boost/beast/core/detail/type_traits.hpp | 0 boost/beast/core/detail/variant.hpp | 0 boost/beast/core/detail/varint.hpp | 0 boost/beast/core/detect_ssl.hpp | 24 +- boost/beast/core/error.hpp | 0 boost/beast/core/file.hpp | 0 boost/beast/core/file_base.hpp | 0 boost/beast/core/file_posix.hpp | 0 boost/beast/core/file_stdio.hpp | 0 boost/beast/core/file_win32.hpp | 0 boost/beast/core/flat_buffer.hpp | 0 boost/beast/core/flat_static_buffer.hpp | 0 boost/beast/core/flat_stream.hpp | 0 boost/beast/core/impl/async_base.hpp | 0 boost/beast/core/impl/basic_stream.hpp | 85 +- .../beast/core/impl/buffered_read_stream.hpp | 0 boost/beast/core/impl/buffers_adaptor.hpp | 0 boost/beast/core/impl/buffers_cat.hpp | 2 +- boost/beast/core/impl/buffers_prefix.hpp | 0 boost/beast/core/impl/buffers_suffix.hpp | 0 boost/beast/core/impl/error.hpp | 0 boost/beast/core/impl/error.ipp | 0 boost/beast/core/impl/file_posix.ipp | 2 +- boost/beast/core/impl/file_stdio.ipp | 0 boost/beast/core/impl/file_win32.ipp | 0 boost/beast/core/impl/flat_buffer.hpp | 0 boost/beast/core/impl/flat_static_buffer.hpp | 0 boost/beast/core/impl/flat_static_buffer.ipp | 0 boost/beast/core/impl/flat_stream.hpp | 10 + boost/beast/core/impl/multi_buffer.hpp | 14 +- boost/beast/core/impl/read_size.hpp | 0 boost/beast/core/impl/saved_handler.hpp | 0 boost/beast/core/impl/saved_handler.ipp | 0 boost/beast/core/impl/static_buffer.hpp | 0 boost/beast/core/impl/static_buffer.ipp | 0 boost/beast/core/impl/static_string.hpp | 0 boost/beast/core/impl/string.ipp | 0 boost/beast/core/impl/string_param.hpp | 0 boost/beast/core/make_printable.hpp | 0 boost/beast/core/multi_buffer.hpp | 0 boost/beast/core/ostream.hpp | 0 boost/beast/core/rate_policy.hpp | 0 boost/beast/core/read_size.hpp | 0 boost/beast/core/role.hpp | 0 boost/beast/core/saved_handler.hpp | 0 boost/beast/core/span.hpp | 0 boost/beast/core/static_buffer.hpp | 0 boost/beast/core/static_string.hpp | 0 boost/beast/core/stream_traits.hpp | 0 boost/beast/core/string.hpp | 0 boost/beast/core/string_param.hpp | 0 boost/beast/core/string_type.hpp | 0 boost/beast/core/tcp_stream.hpp | 0 boost/beast/http.hpp | 0 boost/beast/http/basic_dynamic_body.hpp | 0 boost/beast/http/basic_file_body.hpp | 0 boost/beast/http/basic_parser.hpp | 0 boost/beast/http/buffer_body.hpp | 0 boost/beast/http/chunk_encode.hpp | 0 boost/beast/http/detail/basic_parsed_list.hpp | 0 boost/beast/http/detail/basic_parser.hpp | 0 boost/beast/http/detail/basic_parser.ipp | 0 boost/beast/http/detail/chunk_encode.hpp | 0 boost/beast/http/detail/rfc7230.hpp | 0 boost/beast/http/detail/rfc7230.ipp | 0 boost/beast/http/detail/type_traits.hpp | 0 boost/beast/http/dynamic_body.hpp | 0 boost/beast/http/empty_body.hpp | 0 boost/beast/http/error.hpp | 0 boost/beast/http/field.hpp | 717 +-- boost/beast/http/fields.hpp | 21 +- boost/beast/http/file_body.hpp | 0 boost/beast/http/impl/basic_parser.hpp | 0 boost/beast/http/impl/basic_parser.ipp | 20 +- boost/beast/http/impl/chunk_encode.hpp | 0 boost/beast/http/impl/error.hpp | 0 boost/beast/http/impl/error.ipp | 0 boost/beast/http/impl/field.ipp | 7 +- boost/beast/http/impl/fields.hpp | 0 boost/beast/http/impl/fields.ipp | 0 boost/beast/http/impl/file_body_win32.hpp | 0 boost/beast/http/impl/message.hpp | 0 boost/beast/http/impl/parser.hpp | 0 boost/beast/http/impl/read.hpp | 27 + boost/beast/http/impl/rfc7230.hpp | 0 boost/beast/http/impl/rfc7230.ipp | 0 boost/beast/http/impl/serializer.hpp | 0 boost/beast/http/impl/status.ipp | 0 boost/beast/http/impl/verb.ipp | 0 boost/beast/http/impl/write.hpp | 39 +- boost/beast/http/message.hpp | 0 boost/beast/http/parser.hpp | 0 boost/beast/http/read.hpp | 0 boost/beast/http/rfc7230.hpp | 0 boost/beast/http/serializer.hpp | 0 boost/beast/http/span_body.hpp | 0 boost/beast/http/status.hpp | 0 boost/beast/http/string_body.hpp | 0 boost/beast/http/type_traits.hpp | 0 boost/beast/http/vector_body.hpp | 0 boost/beast/http/verb.hpp | 0 boost/beast/http/write.hpp | 0 boost/beast/src.hpp | 1 + boost/beast/ssl.hpp | 0 boost/beast/ssl/ssl_stream.hpp | 0 boost/beast/version.hpp | 2 +- boost/beast/websocket.hpp | 0 boost/beast/websocket/detail/decorator.hpp | 0 boost/beast/websocket/detail/frame.hpp | 0 boost/beast/websocket/detail/hybi13.hpp | 0 boost/beast/websocket/detail/hybi13.ipp | 0 boost/beast/websocket/detail/impl_base.hpp | 0 boost/beast/websocket/detail/mask.hpp | 0 boost/beast/websocket/detail/mask.ipp | 0 .../beast/websocket/detail/pmd_extension.hpp | 0 .../beast/websocket/detail/pmd_extension.ipp | 0 boost/beast/websocket/detail/prng.hpp | 0 boost/beast/websocket/detail/prng.ipp | 0 boost/beast/websocket/detail/service.hpp | 0 boost/beast/websocket/detail/service.ipp | 0 boost/beast/websocket/detail/soft_mutex.hpp | 0 boost/beast/websocket/detail/type_traits.hpp | 0 boost/beast/websocket/detail/utf8_checker.hpp | 0 boost/beast/websocket/detail/utf8_checker.ipp | 0 boost/beast/websocket/error.hpp | 0 boost/beast/websocket/impl/accept.hpp | 20 +- boost/beast/websocket/impl/close.hpp | 80 +- boost/beast/websocket/impl/error.hpp | 0 boost/beast/websocket/impl/error.ipp | 0 boost/beast/websocket/impl/handshake.hpp | 32 +- boost/beast/websocket/impl/ping.hpp | 55 +- boost/beast/websocket/impl/read.hpp | 218 +- boost/beast/websocket/impl/rfc6455.hpp | 0 boost/beast/websocket/impl/ssl.hpp | 62 +- boost/beast/websocket/impl/stream.hpp | 0 boost/beast/websocket/impl/stream_impl.hpp | 38 +- boost/beast/websocket/impl/teardown.hpp | 25 +- boost/beast/websocket/impl/write.hpp | 164 +- boost/beast/websocket/option.hpp | 0 boost/beast/websocket/rfc6455.hpp | 0 boost/beast/websocket/ssl.hpp | 0 boost/beast/websocket/stream.hpp | 0 boost/beast/websocket/stream_base.hpp | 0 boost/beast/websocket/stream_fwd.hpp | 0 boost/beast/websocket/teardown.hpp | 0 boost/beast/zlib.hpp | 0 boost/beast/zlib/deflate_stream.hpp | 0 boost/beast/zlib/detail/bitstream.hpp | 0 boost/beast/zlib/detail/deflate_stream.hpp | 0 boost/beast/zlib/detail/deflate_stream.ipp | 0 boost/beast/zlib/detail/inflate_stream.hpp | 0 boost/beast/zlib/detail/inflate_stream.ipp | 0 boost/beast/zlib/detail/ranges.hpp | 0 boost/beast/zlib/detail/window.hpp | 0 boost/beast/zlib/error.hpp | 0 boost/beast/zlib/impl/error.hpp | 0 boost/beast/zlib/impl/error.ipp | 0 boost/beast/zlib/inflate_stream.hpp | 0 boost/beast/zlib/zlib.hpp | 0 boost/compute.hpp | 0 boost/compute/algorithm.hpp | 0 boost/compute/algorithm/accumulate.hpp | 0 .../compute/algorithm/adjacent_difference.hpp | 0 boost/compute/algorithm/adjacent_find.hpp | 0 boost/compute/algorithm/all_of.hpp | 0 boost/compute/algorithm/any_of.hpp | 0 boost/compute/algorithm/binary_search.hpp | 0 boost/compute/algorithm/copy.hpp | 0 boost/compute/algorithm/copy_if.hpp | 0 boost/compute/algorithm/copy_n.hpp | 0 boost/compute/algorithm/count.hpp | 0 boost/compute/algorithm/count_if.hpp | 0 .../algorithm/detail/balanced_path.hpp | 0 .../compute/algorithm/detail/binary_find.hpp | 0 boost/compute/algorithm/detail/compact.hpp | 0 .../algorithm/detail/copy_on_device.hpp | 0 .../algorithm/detail/copy_to_device.hpp | 0 .../compute/algorithm/detail/copy_to_host.hpp | 0 .../algorithm/detail/count_if_with_ballot.hpp | 0 .../algorithm/detail/count_if_with_reduce.hpp | 0 .../detail/count_if_with_threads.hpp | 0 .../compute/algorithm/detail/find_extrema.hpp | 0 .../algorithm/detail/find_extrema_on_cpu.hpp | 0 .../detail/find_extrema_with_atomics.hpp | 0 .../detail/find_extrema_with_reduce.hpp | 0 .../algorithm/detail/find_if_with_atomics.hpp | 0 .../algorithm/detail/inplace_reduce.hpp | 0 .../algorithm/detail/insertion_sort.hpp | 0 boost/compute/algorithm/detail/merge_path.hpp | 0 .../algorithm/detail/merge_sort_on_cpu.hpp | 0 .../algorithm/detail/merge_sort_on_gpu.hpp | 0 .../detail/merge_with_merge_path.hpp | 0 boost/compute/algorithm/detail/radix_sort.hpp | 0 .../compute/algorithm/detail/random_fill.hpp | 0 .../algorithm/detail/reduce_by_key.hpp | 0 .../detail/reduce_by_key_with_scan.hpp | 0 .../algorithm/detail/reduce_on_cpu.hpp | 0 .../algorithm/detail/reduce_on_gpu.hpp | 0 boost/compute/algorithm/detail/scan.hpp | 0 .../compute/algorithm/detail/scan_on_cpu.hpp | 0 .../compute/algorithm/detail/scan_on_gpu.hpp | 0 boost/compute/algorithm/detail/search_all.hpp | 0 .../algorithm/detail/serial_accumulate.hpp | 0 .../algorithm/detail/serial_count_if.hpp | 0 .../algorithm/detail/serial_find_extrema.hpp | 0 .../compute/algorithm/detail/serial_merge.hpp | 0 .../algorithm/detail/serial_reduce.hpp | 0 .../algorithm/detail/serial_reduce_by_key.hpp | 0 .../compute/algorithm/detail/serial_scan.hpp | 0 boost/compute/algorithm/equal.hpp | 0 boost/compute/algorithm/equal_range.hpp | 0 boost/compute/algorithm/exclusive_scan.hpp | 0 boost/compute/algorithm/fill.hpp | 0 boost/compute/algorithm/fill_n.hpp | 0 boost/compute/algorithm/find.hpp | 0 boost/compute/algorithm/find_end.hpp | 0 boost/compute/algorithm/find_if.hpp | 0 boost/compute/algorithm/find_if_not.hpp | 0 boost/compute/algorithm/for_each.hpp | 0 boost/compute/algorithm/for_each_n.hpp | 0 boost/compute/algorithm/gather.hpp | 0 boost/compute/algorithm/generate.hpp | 0 boost/compute/algorithm/generate_n.hpp | 0 boost/compute/algorithm/includes.hpp | 0 boost/compute/algorithm/inclusive_scan.hpp | 0 boost/compute/algorithm/inner_product.hpp | 0 boost/compute/algorithm/inplace_merge.hpp | 0 boost/compute/algorithm/iota.hpp | 0 boost/compute/algorithm/is_partitioned.hpp | 0 boost/compute/algorithm/is_permutation.hpp | 0 boost/compute/algorithm/is_sorted.hpp | 0 .../algorithm/lexicographical_compare.hpp | 0 boost/compute/algorithm/lower_bound.hpp | 0 boost/compute/algorithm/max_element.hpp | 0 boost/compute/algorithm/merge.hpp | 0 boost/compute/algorithm/min_element.hpp | 0 boost/compute/algorithm/minmax_element.hpp | 0 boost/compute/algorithm/mismatch.hpp | 0 boost/compute/algorithm/next_permutation.hpp | 0 boost/compute/algorithm/none_of.hpp | 0 boost/compute/algorithm/nth_element.hpp | 0 boost/compute/algorithm/partial_sum.hpp | 0 boost/compute/algorithm/partition.hpp | 0 boost/compute/algorithm/partition_copy.hpp | 0 boost/compute/algorithm/partition_point.hpp | 0 boost/compute/algorithm/prev_permutation.hpp | 0 boost/compute/algorithm/random_shuffle.hpp | 0 boost/compute/algorithm/reduce.hpp | 0 boost/compute/algorithm/reduce_by_key.hpp | 0 boost/compute/algorithm/remove.hpp | 0 boost/compute/algorithm/remove_if.hpp | 0 boost/compute/algorithm/replace.hpp | 0 boost/compute/algorithm/replace_copy.hpp | 0 boost/compute/algorithm/reverse.hpp | 0 boost/compute/algorithm/reverse_copy.hpp | 0 boost/compute/algorithm/rotate.hpp | 0 boost/compute/algorithm/rotate_copy.hpp | 0 boost/compute/algorithm/scatter.hpp | 0 boost/compute/algorithm/scatter_if.hpp | 0 boost/compute/algorithm/search.hpp | 0 boost/compute/algorithm/search_n.hpp | 0 boost/compute/algorithm/set_difference.hpp | 0 boost/compute/algorithm/set_intersection.hpp | 0 .../algorithm/set_symmetric_difference.hpp | 0 boost/compute/algorithm/set_union.hpp | 0 boost/compute/algorithm/sort.hpp | 0 boost/compute/algorithm/sort_by_key.hpp | 0 boost/compute/algorithm/stable_partition.hpp | 0 boost/compute/algorithm/stable_sort.hpp | 0 .../compute/algorithm/stable_sort_by_key.hpp | 0 boost/compute/algorithm/swap_ranges.hpp | 0 boost/compute/algorithm/transform.hpp | 0 boost/compute/algorithm/transform_if.hpp | 0 boost/compute/algorithm/transform_reduce.hpp | 0 boost/compute/algorithm/unique.hpp | 0 boost/compute/algorithm/unique_copy.hpp | 0 boost/compute/algorithm/upper_bound.hpp | 0 boost/compute/allocator.hpp | 0 boost/compute/allocator/buffer_allocator.hpp | 0 boost/compute/allocator/pinned_allocator.hpp | 0 boost/compute/async.hpp | 0 boost/compute/async/future.hpp | 0 boost/compute/async/wait.hpp | 0 boost/compute/async/wait_guard.hpp | 0 boost/compute/buffer.hpp | 0 boost/compute/cl.hpp | 0 boost/compute/cl_ext.hpp | 0 boost/compute/closure.hpp | 0 boost/compute/command_queue.hpp | 0 boost/compute/config.hpp | 0 boost/compute/container.hpp | 0 boost/compute/container/array.hpp | 0 boost/compute/container/basic_string.hpp | 0 boost/compute/container/detail/scalar.hpp | 0 boost/compute/container/dynamic_bitset.hpp | 0 boost/compute/container/flat_map.hpp | 0 boost/compute/container/flat_set.hpp | 0 boost/compute/container/mapped_view.hpp | 0 boost/compute/container/stack.hpp | 0 boost/compute/container/string.hpp | 0 boost/compute/container/valarray.hpp | 0 boost/compute/container/vector.hpp | 0 boost/compute/context.hpp | 0 boost/compute/core.hpp | 0 boost/compute/detail/assert_cl_success.hpp | 0 boost/compute/detail/buffer_value.hpp | 0 boost/compute/detail/cl_versions.hpp | 0 boost/compute/detail/device_ptr.hpp | 0 boost/compute/detail/diagnostic.hpp | 0 boost/compute/detail/duration.hpp | 0 boost/compute/detail/get_object_info.hpp | 0 boost/compute/detail/getenv.hpp | 0 boost/compute/detail/global_static.hpp | 0 boost/compute/detail/is_buffer_iterator.hpp | 0 .../compute/detail/is_contiguous_iterator.hpp | 0 .../compute/detail/iterator_plus_distance.hpp | 0 boost/compute/detail/iterator_range_size.hpp | 0 boost/compute/detail/iterator_traits.hpp | 0 boost/compute/detail/literal.hpp | 0 boost/compute/detail/lru_cache.hpp | 0 boost/compute/detail/meta_kernel.hpp | 0 boost/compute/detail/mpl_vector_to_tuple.hpp | 0 .../detail/nvidia_compute_capability.hpp | 0 boost/compute/detail/parameter_cache.hpp | 0 boost/compute/detail/path.hpp | 0 boost/compute/detail/print_range.hpp | 0 .../detail/read_write_single_value.hpp | 0 boost/compute/detail/sha1.hpp | 0 boost/compute/detail/variadic_macros.hpp | 0 boost/compute/detail/vendor.hpp | 0 boost/compute/detail/work_size.hpp | 0 boost/compute/device.hpp | 0 boost/compute/event.hpp | 0 boost/compute/exception.hpp | 0 boost/compute/exception/context_error.hpp | 0 boost/compute/exception/no_device_found.hpp | 0 boost/compute/exception/opencl_error.hpp | 0 .../exception/program_build_failure.hpp | 0 .../exception/unsupported_extension_error.hpp | 0 boost/compute/experimental/clamp_range.hpp | 0 boost/compute/experimental/malloc.hpp | 0 .../experimental/sort_by_transform.hpp | 0 boost/compute/experimental/tabulate.hpp | 0 boost/compute/function.hpp | 0 boost/compute/functional.hpp | 0 boost/compute/functional/as.hpp | 0 boost/compute/functional/atomic.hpp | 0 boost/compute/functional/bind.hpp | 0 boost/compute/functional/common.hpp | 0 boost/compute/functional/convert.hpp | 0 boost/compute/functional/detail/macros.hpp | 0 .../functional/detail/nvidia_ballot.hpp | 0 .../functional/detail/nvidia_popcount.hpp | 0 boost/compute/functional/detail/unpack.hpp | 0 boost/compute/functional/field.hpp | 0 boost/compute/functional/geometry.hpp | 0 boost/compute/functional/get.hpp | 0 boost/compute/functional/hash.hpp | 0 boost/compute/functional/identity.hpp | 0 boost/compute/functional/integer.hpp | 0 boost/compute/functional/logical.hpp | 0 boost/compute/functional/math.hpp | 0 boost/compute/functional/operator.hpp | 0 boost/compute/functional/popcount.hpp | 0 boost/compute/functional/relational.hpp | 0 boost/compute/image.hpp | 0 boost/compute/image/image1d.hpp | 0 boost/compute/image/image2d.hpp | 0 boost/compute/image/image3d.hpp | 0 boost/compute/image/image_format.hpp | 0 boost/compute/image/image_object.hpp | 0 boost/compute/image/image_sampler.hpp | 0 boost/compute/image2d.hpp | 0 boost/compute/image3d.hpp | 0 boost/compute/image_format.hpp | 0 boost/compute/image_sampler.hpp | 0 boost/compute/interop/eigen.hpp | 0 boost/compute/interop/eigen/core.hpp | 0 boost/compute/interop/opencv.hpp | 0 boost/compute/interop/opencv/core.hpp | 0 boost/compute/interop/opencv/highgui.hpp | 0 boost/compute/interop/opencv/ocl.hpp | 0 boost/compute/interop/opengl.hpp | 0 boost/compute/interop/opengl/acquire.hpp | 0 boost/compute/interop/opengl/cl_gl.hpp | 0 boost/compute/interop/opengl/cl_gl_ext.hpp | 0 boost/compute/interop/opengl/context.hpp | 0 boost/compute/interop/opengl/gl.hpp | 0 .../compute/interop/opengl/opengl_buffer.hpp | 0 .../interop/opengl/opengl_renderbuffer.hpp | 0 .../compute/interop/opengl/opengl_texture.hpp | 0 boost/compute/interop/qt.hpp | 0 boost/compute/interop/qt/qimage.hpp | 0 boost/compute/interop/qt/qpoint.hpp | 0 boost/compute/interop/qt/qpointf.hpp | 0 boost/compute/interop/qt/qtcore.hpp | 0 boost/compute/interop/qt/qtgui.hpp | 0 boost/compute/interop/qt/qvector.hpp | 0 boost/compute/interop/vtk.hpp | 0 boost/compute/interop/vtk/bounds.hpp | 0 boost/compute/interop/vtk/data_array.hpp | 0 boost/compute/interop/vtk/matrix4x4.hpp | 0 boost/compute/interop/vtk/points.hpp | 0 boost/compute/iterator.hpp | 0 boost/compute/iterator/buffer_iterator.hpp | 0 .../iterator/constant_buffer_iterator.hpp | 0 boost/compute/iterator/constant_iterator.hpp | 0 boost/compute/iterator/counting_iterator.hpp | 0 .../detail/get_base_iterator_buffer.hpp | 0 .../iterator/detail/swizzle_iterator.hpp | 0 boost/compute/iterator/discard_iterator.hpp | 0 .../iterator/function_input_iterator.hpp | 0 .../compute/iterator/permutation_iterator.hpp | 0 boost/compute/iterator/strided_iterator.hpp | 0 boost/compute/iterator/transform_iterator.hpp | 0 boost/compute/iterator/zip_iterator.hpp | 0 boost/compute/kernel.hpp | 0 boost/compute/lambda.hpp | 0 boost/compute/lambda/context.hpp | 0 boost/compute/lambda/functional.hpp | 0 boost/compute/lambda/get.hpp | 0 boost/compute/lambda/make_pair.hpp | 0 boost/compute/lambda/make_tuple.hpp | 0 boost/compute/lambda/placeholder.hpp | 0 boost/compute/lambda/placeholders.hpp | 0 boost/compute/lambda/result_of.hpp | 0 boost/compute/memory.hpp | 0 boost/compute/memory/local_buffer.hpp | 0 boost/compute/memory/svm_ptr.hpp | 0 boost/compute/memory_object.hpp | 0 boost/compute/pipe.hpp | 0 boost/compute/platform.hpp | 0 boost/compute/program.hpp | 0 boost/compute/random.hpp | 0 .../compute/random/bernoulli_distribution.hpp | 0 .../compute/random/default_random_engine.hpp | 0 .../compute/random/discrete_distribution.hpp | 0 .../random/linear_congruential_engine.hpp | 0 .../random/mersenne_twister_engine.hpp | 0 boost/compute/random/normal_distribution.hpp | 0 boost/compute/random/threefry_engine.hpp | 0 .../random/uniform_int_distribution.hpp | 0 .../random/uniform_real_distribution.hpp | 0 boost/compute/source.hpp | 0 boost/compute/svm.hpp | 0 boost/compute/system.hpp | 0 boost/compute/type_traits.hpp | 0 boost/compute/type_traits/common_type.hpp | 0 .../type_traits/detail/capture_traits.hpp | 0 .../type_traits/is_device_iterator.hpp | 0 boost/compute/type_traits/is_fundamental.hpp | 0 boost/compute/type_traits/is_vector_type.hpp | 0 .../compute/type_traits/make_vector_type.hpp | 0 boost/compute/type_traits/result_of.hpp | 0 boost/compute/type_traits/scalar_type.hpp | 0 boost/compute/type_traits/type_definition.hpp | 0 boost/compute/type_traits/type_name.hpp | 0 boost/compute/type_traits/vector_size.hpp | 0 boost/compute/types.hpp | 0 boost/compute/types/builtin.hpp | 0 boost/compute/types/complex.hpp | 0 boost/compute/types/fundamental.hpp | 0 boost/compute/types/pair.hpp | 0 boost/compute/types/size_t.hpp | 0 boost/compute/types/struct.hpp | 0 boost/compute/types/tuple.hpp | 0 boost/compute/user_event.hpp | 0 boost/compute/utility.hpp | 0 boost/compute/utility/dim.hpp | 0 boost/compute/utility/extents.hpp | 0 boost/compute/utility/invoke.hpp | 0 boost/compute/utility/program_cache.hpp | 0 boost/compute/utility/source.hpp | 0 boost/compute/utility/wait_list.hpp | 0 boost/compute/version.hpp | 0 boost/compute/wait_list.hpp | 0 boost/hana.hpp | 0 boost/hana/accessors.hpp | 0 boost/hana/adapt_adt.hpp | 0 boost/hana/adapt_struct.hpp | 0 boost/hana/adjust.hpp | 0 boost/hana/adjust_if.hpp | 0 boost/hana/all.hpp | 0 boost/hana/all_of.hpp | 0 boost/hana/and.hpp | 0 boost/hana/any.hpp | 0 boost/hana/any_of.hpp | 0 boost/hana/ap.hpp | 0 boost/hana/append.hpp | 0 boost/hana/assert.hpp | 0 boost/hana/at.hpp | 0 boost/hana/at_key.hpp | 0 boost/hana/back.hpp | 0 boost/hana/basic_tuple.hpp | 0 boost/hana/bool.hpp | 0 boost/hana/cartesian_product.hpp | 0 boost/hana/chain.hpp | 0 boost/hana/comparing.hpp | 0 boost/hana/concat.hpp | 0 boost/hana/concept.hpp | 0 boost/hana/concept/applicative.hpp | 0 boost/hana/concept/comonad.hpp | 0 boost/hana/concept/comparable.hpp | 0 boost/hana/concept/constant.hpp | 0 boost/hana/concept/euclidean_ring.hpp | 0 boost/hana/concept/foldable.hpp | 0 boost/hana/concept/functor.hpp | 0 boost/hana/concept/group.hpp | 0 boost/hana/concept/hashable.hpp | 0 boost/hana/concept/integral_constant.hpp | 0 boost/hana/concept/iterable.hpp | 0 boost/hana/concept/logical.hpp | 0 boost/hana/concept/metafunction.hpp | 0 boost/hana/concept/monad.hpp | 0 boost/hana/concept/monad_plus.hpp | 0 boost/hana/concept/monoid.hpp | 0 boost/hana/concept/orderable.hpp | 0 boost/hana/concept/product.hpp | 0 boost/hana/concept/ring.hpp | 0 boost/hana/concept/searchable.hpp | 0 boost/hana/concept/sequence.hpp | 0 boost/hana/concept/struct.hpp | 0 boost/hana/config.hpp | 0 boost/hana/contains.hpp | 0 boost/hana/core.hpp | 0 boost/hana/core/common.hpp | 0 boost/hana/core/default.hpp | 0 boost/hana/core/dispatch.hpp | 0 boost/hana/core/is_a.hpp | 0 boost/hana/core/make.hpp | 0 boost/hana/core/tag_of.hpp | 10 + boost/hana/core/to.hpp | 0 boost/hana/core/when.hpp | 0 boost/hana/count.hpp | 0 boost/hana/count_if.hpp | 0 boost/hana/cycle.hpp | 0 boost/hana/define_struct.hpp | 0 boost/hana/detail/algorithm.hpp | 0 boost/hana/detail/any_of.hpp | 0 boost/hana/detail/array.hpp | 0 boost/hana/detail/canonical_constant.hpp | 0 boost/hana/detail/concepts.hpp | 0 boost/hana/detail/create.hpp | 0 boost/hana/detail/decay.hpp | 0 boost/hana/detail/dispatch_if.hpp | 0 boost/hana/detail/ebo.hpp | 0 boost/hana/detail/fast_and.hpp | 0 boost/hana/detail/first_unsatisfied_index.hpp | 0 boost/hana/detail/has_common_embedding.hpp | 0 boost/hana/detail/has_duplicates.hpp | 0 boost/hana/detail/hash_table.hpp | 0 boost/hana/detail/index_if.hpp | 0 boost/hana/detail/integral_constant.hpp | 0 boost/hana/detail/intrinsics.hpp | 0 boost/hana/detail/nested_by.hpp | 0 boost/hana/detail/nested_by_fwd.hpp | 0 boost/hana/detail/nested_than.hpp | 0 boost/hana/detail/nested_than_fwd.hpp | 0 boost/hana/detail/nested_to.hpp | 0 boost/hana/detail/nested_to_fwd.hpp | 0 boost/hana/detail/operators/adl.hpp | 0 boost/hana/detail/operators/arithmetic.hpp | 0 boost/hana/detail/operators/comparable.hpp | 16 +- boost/hana/detail/operators/iterable.hpp | 0 boost/hana/detail/operators/logical.hpp | 0 boost/hana/detail/operators/monad.hpp | 0 boost/hana/detail/operators/orderable.hpp | 0 boost/hana/detail/operators/searchable.hpp | 0 boost/hana/detail/preprocessor.hpp | 0 boost/hana/detail/std_common_type.hpp | 0 boost/hana/detail/struct_macros.hpp | 0 boost/hana/detail/struct_macros.hpp.erb | 0 boost/hana/detail/type_at.hpp | 0 boost/hana/detail/type_foldl1.hpp | 0 boost/hana/detail/type_foldr1.hpp | 0 boost/hana/detail/unpack_flatten.hpp | 0 boost/hana/detail/variadic/at.hpp | 0 boost/hana/detail/variadic/drop_into.hpp | 0 boost/hana/detail/variadic/foldl1.hpp | 0 boost/hana/detail/variadic/foldr1.hpp | 0 boost/hana/detail/variadic/reverse_apply.hpp | 0 .../detail/variadic/reverse_apply/flat.hpp | 0 .../variadic/reverse_apply/unrolled.hpp | 0 boost/hana/detail/variadic/split_at.hpp | 0 boost/hana/detail/variadic/take.hpp | 0 boost/hana/detail/void_t.hpp | 0 boost/hana/detail/wrong.hpp | 0 boost/hana/difference.hpp | 0 boost/hana/div.hpp | 0 boost/hana/drop_back.hpp | 0 boost/hana/drop_front.hpp | 0 boost/hana/drop_front_exactly.hpp | 0 boost/hana/drop_while.hpp | 0 boost/hana/duplicate.hpp | 0 boost/hana/empty.hpp | 0 boost/hana/equal.hpp | 5 +- boost/hana/erase_key.hpp | 0 boost/hana/eval.hpp | 0 boost/hana/eval_if.hpp | 0 boost/hana/experimental/printable.hpp | 0 boost/hana/experimental/type_name.hpp | 0 boost/hana/experimental/types.hpp | 0 boost/hana/experimental/view.hpp | 0 boost/hana/ext/boost.hpp | 0 boost/hana/ext/boost/fusion.hpp | 0 boost/hana/ext/boost/fusion/deque.hpp | 0 boost/hana/ext/boost/fusion/detail/common.hpp | 0 boost/hana/ext/boost/fusion/list.hpp | 0 boost/hana/ext/boost/fusion/tuple.hpp | 0 boost/hana/ext/boost/fusion/vector.hpp | 0 boost/hana/ext/boost/mpl.hpp | 0 boost/hana/ext/boost/mpl/integral_c.hpp | 0 boost/hana/ext/boost/mpl/list.hpp | 0 boost/hana/ext/boost/mpl/vector.hpp | 0 boost/hana/ext/boost/tuple.hpp | 0 boost/hana/ext/std.hpp | 0 boost/hana/ext/std/array.hpp | 0 boost/hana/ext/std/integer_sequence.hpp | 0 boost/hana/ext/std/integral_constant.hpp | 0 boost/hana/ext/std/pair.hpp | 0 boost/hana/ext/std/ratio.hpp | 0 boost/hana/ext/std/tuple.hpp | 0 boost/hana/ext/std/vector.hpp | 0 boost/hana/extend.hpp | 0 boost/hana/extract.hpp | 0 boost/hana/fill.hpp | 0 boost/hana/filter.hpp | 0 boost/hana/find.hpp | 0 boost/hana/find_if.hpp | 0 boost/hana/first.hpp | 0 boost/hana/flatten.hpp | 0 boost/hana/fold.hpp | 0 boost/hana/fold_left.hpp | 0 boost/hana/fold_right.hpp | 0 boost/hana/for_each.hpp | 0 boost/hana/front.hpp | 0 boost/hana/functional.hpp | 0 boost/hana/functional/always.hpp | 0 boost/hana/functional/apply.hpp | 0 boost/hana/functional/arg.hpp | 0 boost/hana/functional/capture.hpp | 0 boost/hana/functional/compose.hpp | 0 boost/hana/functional/curry.hpp | 0 boost/hana/functional/demux.hpp | 0 boost/hana/functional/fix.hpp | 0 boost/hana/functional/flip.hpp | 0 boost/hana/functional/id.hpp | 0 boost/hana/functional/infix.hpp | 0 boost/hana/functional/iterate.hpp | 0 boost/hana/functional/lockstep.hpp | 0 boost/hana/functional/on.hpp | 0 boost/hana/functional/overload.hpp | 0 boost/hana/functional/overload_linearly.hpp | 0 boost/hana/functional/partial.hpp | 0 boost/hana/functional/placeholder.hpp | 0 boost/hana/functional/reverse_partial.hpp | 0 boost/hana/fuse.hpp | 0 boost/hana/fwd/accessors.hpp | 0 boost/hana/fwd/adapt_adt.hpp | 0 boost/hana/fwd/adapt_struct.hpp | 0 boost/hana/fwd/adjust.hpp | 0 boost/hana/fwd/adjust_if.hpp | 0 boost/hana/fwd/all.hpp | 0 boost/hana/fwd/all_of.hpp | 0 boost/hana/fwd/and.hpp | 0 boost/hana/fwd/any.hpp | 0 boost/hana/fwd/any_of.hpp | 0 boost/hana/fwd/ap.hpp | 0 boost/hana/fwd/append.hpp | 0 boost/hana/fwd/at.hpp | 0 boost/hana/fwd/at_key.hpp | 0 boost/hana/fwd/back.hpp | 0 boost/hana/fwd/basic_tuple.hpp | 0 boost/hana/fwd/bool.hpp | 0 boost/hana/fwd/cartesian_product.hpp | 0 boost/hana/fwd/chain.hpp | 0 boost/hana/fwd/comparing.hpp | 0 boost/hana/fwd/concat.hpp | 0 boost/hana/fwd/concept/applicative.hpp | 0 boost/hana/fwd/concept/comonad.hpp | 0 boost/hana/fwd/concept/comparable.hpp | 0 boost/hana/fwd/concept/constant.hpp | 0 boost/hana/fwd/concept/euclidean_ring.hpp | 0 boost/hana/fwd/concept/foldable.hpp | 0 boost/hana/fwd/concept/functor.hpp | 0 boost/hana/fwd/concept/group.hpp | 0 boost/hana/fwd/concept/hashable.hpp | 0 boost/hana/fwd/concept/integral_constant.hpp | 0 boost/hana/fwd/concept/iterable.hpp | 0 boost/hana/fwd/concept/logical.hpp | 0 boost/hana/fwd/concept/metafunction.hpp | 0 boost/hana/fwd/concept/monad.hpp | 0 boost/hana/fwd/concept/monad_plus.hpp | 0 boost/hana/fwd/concept/monoid.hpp | 0 boost/hana/fwd/concept/orderable.hpp | 0 boost/hana/fwd/concept/product.hpp | 0 boost/hana/fwd/concept/ring.hpp | 0 boost/hana/fwd/concept/searchable.hpp | 0 boost/hana/fwd/concept/sequence.hpp | 0 boost/hana/fwd/concept/struct.hpp | 0 boost/hana/fwd/contains.hpp | 0 boost/hana/fwd/core.hpp | 0 boost/hana/fwd/core/common.hpp | 0 boost/hana/fwd/core/default.hpp | 0 boost/hana/fwd/core/is_a.hpp | 0 boost/hana/fwd/core/make.hpp | 0 boost/hana/fwd/core/tag_of.hpp | 0 boost/hana/fwd/core/to.hpp | 0 boost/hana/fwd/core/when.hpp | 0 boost/hana/fwd/count.hpp | 0 boost/hana/fwd/count_if.hpp | 0 boost/hana/fwd/cycle.hpp | 0 boost/hana/fwd/define_struct.hpp | 0 boost/hana/fwd/difference.hpp | 0 boost/hana/fwd/div.hpp | 0 boost/hana/fwd/drop_back.hpp | 0 boost/hana/fwd/drop_front.hpp | 0 boost/hana/fwd/drop_front_exactly.hpp | 0 boost/hana/fwd/drop_while.hpp | 0 boost/hana/fwd/duplicate.hpp | 0 boost/hana/fwd/empty.hpp | 0 boost/hana/fwd/equal.hpp | 0 boost/hana/fwd/erase_key.hpp | 0 boost/hana/fwd/eval.hpp | 0 boost/hana/fwd/eval_if.hpp | 0 boost/hana/fwd/extend.hpp | 0 boost/hana/fwd/extract.hpp | 0 boost/hana/fwd/fill.hpp | 0 boost/hana/fwd/filter.hpp | 0 boost/hana/fwd/find.hpp | 0 boost/hana/fwd/find_if.hpp | 0 boost/hana/fwd/first.hpp | 0 boost/hana/fwd/flatten.hpp | 0 boost/hana/fwd/fold.hpp | 0 boost/hana/fwd/fold_left.hpp | 0 boost/hana/fwd/fold_right.hpp | 0 boost/hana/fwd/for_each.hpp | 0 boost/hana/fwd/front.hpp | 0 boost/hana/fwd/fuse.hpp | 0 boost/hana/fwd/greater.hpp | 0 boost/hana/fwd/greater_equal.hpp | 0 boost/hana/fwd/group.hpp | 0 boost/hana/fwd/hash.hpp | 0 boost/hana/fwd/if.hpp | 0 boost/hana/fwd/index_if.hpp | 0 boost/hana/fwd/insert.hpp | 0 boost/hana/fwd/insert_range.hpp | 0 boost/hana/fwd/integral_constant.hpp | 0 boost/hana/fwd/intersection.hpp | 0 boost/hana/fwd/intersperse.hpp | 0 boost/hana/fwd/is_disjoint.hpp | 0 boost/hana/fwd/is_empty.hpp | 0 boost/hana/fwd/is_subset.hpp | 0 boost/hana/fwd/keys.hpp | 0 boost/hana/fwd/lazy.hpp | 0 boost/hana/fwd/length.hpp | 0 boost/hana/fwd/less.hpp | 0 boost/hana/fwd/less_equal.hpp | 0 boost/hana/fwd/lexicographical_compare.hpp | 0 boost/hana/fwd/lift.hpp | 0 boost/hana/fwd/map.hpp | 0 boost/hana/fwd/max.hpp | 0 boost/hana/fwd/maximum.hpp | 0 boost/hana/fwd/members.hpp | 0 boost/hana/fwd/min.hpp | 0 boost/hana/fwd/minimum.hpp | 0 boost/hana/fwd/minus.hpp | 0 boost/hana/fwd/mod.hpp | 0 boost/hana/fwd/monadic_compose.hpp | 0 boost/hana/fwd/monadic_fold_left.hpp | 0 boost/hana/fwd/monadic_fold_right.hpp | 0 boost/hana/fwd/mult.hpp | 0 boost/hana/fwd/negate.hpp | 0 boost/hana/fwd/none.hpp | 0 boost/hana/fwd/none_of.hpp | 0 boost/hana/fwd/not.hpp | 0 boost/hana/fwd/not_equal.hpp | 0 boost/hana/fwd/one.hpp | 0 boost/hana/fwd/optional.hpp | 0 boost/hana/fwd/or.hpp | 0 boost/hana/fwd/ordering.hpp | 0 boost/hana/fwd/pair.hpp | 0 boost/hana/fwd/partition.hpp | 0 boost/hana/fwd/permutations.hpp | 0 boost/hana/fwd/plus.hpp | 0 boost/hana/fwd/power.hpp | 0 boost/hana/fwd/prefix.hpp | 0 boost/hana/fwd/prepend.hpp | 0 boost/hana/fwd/product.hpp | 0 boost/hana/fwd/range.hpp | 0 boost/hana/fwd/remove.hpp | 0 boost/hana/fwd/remove_at.hpp | 0 boost/hana/fwd/remove_if.hpp | 0 boost/hana/fwd/remove_range.hpp | 0 boost/hana/fwd/repeat.hpp | 0 boost/hana/fwd/replace.hpp | 0 boost/hana/fwd/replace_if.hpp | 0 boost/hana/fwd/replicate.hpp | 0 boost/hana/fwd/reverse.hpp | 0 boost/hana/fwd/reverse_fold.hpp | 0 boost/hana/fwd/scan_left.hpp | 0 boost/hana/fwd/scan_right.hpp | 0 boost/hana/fwd/second.hpp | 0 boost/hana/fwd/set.hpp | 0 boost/hana/fwd/size.hpp | 0 boost/hana/fwd/slice.hpp | 0 boost/hana/fwd/sort.hpp | 0 boost/hana/fwd/span.hpp | 0 boost/hana/fwd/string.hpp | 0 boost/hana/fwd/suffix.hpp | 0 boost/hana/fwd/sum.hpp | 0 boost/hana/fwd/symmetric_difference.hpp | 0 boost/hana/fwd/take_back.hpp | 0 boost/hana/fwd/take_front.hpp | 0 boost/hana/fwd/take_while.hpp | 0 boost/hana/fwd/tap.hpp | 0 boost/hana/fwd/then.hpp | 0 boost/hana/fwd/transform.hpp | 0 boost/hana/fwd/tuple.hpp | 0 boost/hana/fwd/type.hpp | 0 boost/hana/fwd/unfold_left.hpp | 0 boost/hana/fwd/unfold_right.hpp | 0 boost/hana/fwd/union.hpp | 0 boost/hana/fwd/unique.hpp | 0 boost/hana/fwd/unpack.hpp | 0 boost/hana/fwd/value.hpp | 0 boost/hana/fwd/while.hpp | 0 boost/hana/fwd/zero.hpp | 0 boost/hana/fwd/zip.hpp | 0 boost/hana/fwd/zip_shortest.hpp | 0 boost/hana/fwd/zip_shortest_with.hpp | 0 boost/hana/fwd/zip_with.hpp | 0 boost/hana/greater.hpp | 0 boost/hana/greater_equal.hpp | 0 boost/hana/group.hpp | 0 boost/hana/hash.hpp | 0 boost/hana/if.hpp | 0 boost/hana/index_if.hpp | 0 boost/hana/insert.hpp | 0 boost/hana/insert_range.hpp | 0 boost/hana/integral_constant.hpp | 0 boost/hana/intersection.hpp | 0 boost/hana/intersperse.hpp | 0 boost/hana/is_disjoint.hpp | 0 boost/hana/is_empty.hpp | 0 boost/hana/is_subset.hpp | 0 boost/hana/keys.hpp | 0 boost/hana/lazy.hpp | 0 boost/hana/length.hpp | 0 boost/hana/less.hpp | 0 boost/hana/less_equal.hpp | 0 boost/hana/lexicographical_compare.hpp | 0 boost/hana/lift.hpp | 0 boost/hana/map.hpp | 0 boost/hana/max.hpp | 0 boost/hana/maximum.hpp | 0 boost/hana/members.hpp | 0 boost/hana/min.hpp | 0 boost/hana/minimum.hpp | 0 boost/hana/minus.hpp | 0 boost/hana/mod.hpp | 0 boost/hana/monadic_compose.hpp | 0 boost/hana/monadic_fold_left.hpp | 0 boost/hana/monadic_fold_right.hpp | 0 boost/hana/mult.hpp | 0 boost/hana/negate.hpp | 0 boost/hana/none.hpp | 0 boost/hana/none_of.hpp | 0 boost/hana/not.hpp | 0 boost/hana/not_equal.hpp | 0 boost/hana/one.hpp | 0 boost/hana/optional.hpp | 0 boost/hana/or.hpp | 0 boost/hana/ordering.hpp | 0 boost/hana/pair.hpp | 0 boost/hana/partition.hpp | 0 boost/hana/permutations.hpp | 0 boost/hana/plus.hpp | 0 boost/hana/power.hpp | 0 boost/hana/prefix.hpp | 0 boost/hana/prepend.hpp | 0 boost/hana/product.hpp | 0 boost/hana/range.hpp | 0 boost/hana/remove.hpp | 0 boost/hana/remove_at.hpp | 0 boost/hana/remove_if.hpp | 0 boost/hana/remove_range.hpp | 0 boost/hana/repeat.hpp | 0 boost/hana/replace.hpp | 0 boost/hana/replace_if.hpp | 0 boost/hana/replicate.hpp | 0 boost/hana/reverse.hpp | 0 boost/hana/reverse_fold.hpp | 0 boost/hana/scan_left.hpp | 0 boost/hana/scan_right.hpp | 0 boost/hana/second.hpp | 0 boost/hana/set.hpp | 0 boost/hana/size.hpp | 0 boost/hana/slice.hpp | 0 boost/hana/sort.hpp | 0 boost/hana/span.hpp | 0 boost/hana/string.hpp | 2 +- boost/hana/suffix.hpp | 0 boost/hana/sum.hpp | 0 boost/hana/symmetric_difference.hpp | 0 boost/hana/take_back.hpp | 0 boost/hana/take_front.hpp | 0 boost/hana/take_while.hpp | 0 boost/hana/tap.hpp | 0 boost/hana/then.hpp | 0 boost/hana/traits.hpp | 3 +- boost/hana/transform.hpp | 0 boost/hana/tuple.hpp | 0 boost/hana/type.hpp | 0 boost/hana/unfold_left.hpp | 0 boost/hana/unfold_right.hpp | 0 boost/hana/union.hpp | 0 boost/hana/unique.hpp | 0 boost/hana/unpack.hpp | 0 boost/hana/value.hpp | 0 boost/hana/version.hpp | 2 +- boost/hana/while.hpp | 0 boost/hana/zero.hpp | 0 boost/hana/zip.hpp | 0 boost/hana/zip_shortest.hpp | 0 boost/hana/zip_shortest_with.hpp | 0 boost/hana/zip_with.hpp | 0 boost/pfr.hpp | 21 + boost/pfr/core.hpp | 226 + .../pfr/detail/cast_to_layout_compatible.hpp | 75 + boost/pfr/detail/config.hpp | 80 + boost/pfr/detail/core.hpp | 24 + boost/pfr/detail/core14_classic.hpp | 703 +++ boost/pfr/detail/core14_loophole.hpp | 200 + boost/pfr/detail/core17.hpp | 71 + boost/pfr/detail/core17_generated.hpp | 1036 +++++ boost/pfr/detail/detectors.hpp | 70 + boost/pfr/detail/fields_count.hpp | 266 ++ boost/pfr/detail/for_each_field_impl.hpp | 54 + boost/pfr/detail/functional.hpp | 191 + boost/pfr/detail/io.hpp | 85 + .../detail/make_flat_tuple_of_references.hpp | 96 + boost/pfr/detail/make_integer_sequence.hpp | 90 + boost/pfr/detail/offset_based_getter.hpp | 140 + boost/pfr/detail/rvalue_t.hpp | 35 + boost/pfr/detail/sequence_tuple.hpp | 127 + boost/pfr/detail/size_array.hpp | 79 + boost/pfr/detail/size_t_.hpp | 18 + boost/pfr/detail/stdtuple.hpp | 46 + boost/pfr/detail/tie_from_structure_tuple.hpp | 44 + boost/pfr/detail/unsafe_declval.hpp | 36 + boost/pfr/functions_for.hpp | 93 + boost/pfr/functors.hpp | 221 + boost/pfr/io.hpp | 113 + boost/pfr/io_fields.hpp | 164 + boost/pfr/ops.hpp | 187 + boost/pfr/ops_fields.hpp | 127 + boost/pfr/tuple_size.hpp | 48 + boostcpp.jam | 0 bootstrap.bat | 6 +- bootstrap.sh | 33 +- doc/Jamfile.v2 | 0 doc/html/Assignable.html | 140 +- doc/html/CopyConstructible.html | 123 +- doc/html/accumulators.html | 107 +- doc/html/any.html | 126 +- doc/html/array.html | 137 +- doc/html/atomic.html | 200 +- doc/html/bbv2.html | 4 +- doc/html/bbv2/installation.html | 0 doc/html/boost_asio.html | 111 +- doc/html/boost_lexical_cast.html | 178 +- doc/html/boost_random.html | 119 +- doc/html/boost_staticassert.html | 289 +- doc/html/boost_typeerasure.html | 226 +- doc/html/boostbook.html | 137 +- doc/html/chrono.html | 341 +- doc/html/circular_buffer.html | 172 +- doc/html/container.html | 388 +- doc/html/date_time.html | 249 +- doc/html/date_time/date_time_io.html | 2539 +---------- doc/html/date_time/details.html | 1625 +------ doc/html/date_time/local_time.html | 1671 +------ doc/html/foreach.html | 326 +- doc/html/function.html | 117 +- doc/html/hash.html | 149 +- doc/html/hash/custom.html | 135 +- doc/html/heap.html | 131 +- doc/html/images/blank.png | Bin doc/html/images/caution.png | Bin doc/html/images/draft.png | Bin doc/html/images/home.png | Bin doc/html/images/important.png | Bin doc/html/images/next.png | Bin doc/html/images/note.png | Bin doc/html/images/prev.png | Bin doc/html/images/tip.png | Bin doc/html/images/toc-blank.png | Bin doc/html/images/toc-minus.png | Bin doc/html/images/toc-plus.png | Bin doc/html/images/up.png | Bin doc/html/images/warning.png | Bin doc/html/interprocess.html | 345 +- doc/html/intrusive.html | 456 +- doc/html/lambda.html | 208 +- doc/html/lockfree.html | 294 +- doc/html/move.html | 203 +- doc/html/mpi.html | 197 +- doc/html/program_options.html | 144 +- doc/html/property_tree.html | 141 +- doc/html/proto.html | 284 +- doc/html/quickbook.html | 250 +- doc/html/ratio.html | 206 +- doc/html/ref.html | 0 doc/html/signals.html | 0 doc/html/signals2.html | 167 +- doc/html/string_algo.html | 188 +- doc/html/thread.html | 200 +- doc/html/tribool.html | 93 +- doc/html/typeof.html | 199 +- doc/html/unordered.html | 204 +- doc/html/variant.html | 229 +- doc/html/xpressive.html | 213 +- doc/images/valid-html401.png | Bin doc/pdf/Jamfile.v2 | 0 doc/pdf/build | 0 doc/src/boost.xml | 0 doc/src/boostbook.css | 0 doc/src/docutils.css | 0 doc/src/images/alert.png | Bin doc/src/images/blank.png | Bin doc/src/images/callouts/1.png | Bin doc/src/images/callouts/1.svg | 0 doc/src/images/callouts/10.png | Bin doc/src/images/callouts/10.svg | 0 doc/src/images/callouts/11.png | Bin doc/src/images/callouts/11.svg | 0 doc/src/images/callouts/12.png | Bin doc/src/images/callouts/12.svg | 0 doc/src/images/callouts/13.png | Bin doc/src/images/callouts/13.svg | 0 doc/src/images/callouts/14.png | Bin doc/src/images/callouts/14.svg | 0 doc/src/images/callouts/15.png | Bin doc/src/images/callouts/15.svg | 0 doc/src/images/callouts/16.svg | 0 doc/src/images/callouts/17.svg | 0 doc/src/images/callouts/18.svg | 0 doc/src/images/callouts/19.svg | 0 doc/src/images/callouts/2.png | Bin doc/src/images/callouts/2.svg | 0 doc/src/images/callouts/20.svg | 0 doc/src/images/callouts/21.svg | 0 doc/src/images/callouts/22.svg | 0 doc/src/images/callouts/23.svg | 0 doc/src/images/callouts/24.svg | 0 doc/src/images/callouts/25.svg | 0 doc/src/images/callouts/26.svg | 0 doc/src/images/callouts/27.svg | 0 doc/src/images/callouts/28.svg | 0 doc/src/images/callouts/29.svg | 0 doc/src/images/callouts/3.png | Bin doc/src/images/callouts/3.svg | 0 doc/src/images/callouts/30.svg | 0 doc/src/images/callouts/4.png | Bin doc/src/images/callouts/4.svg | 0 doc/src/images/callouts/5.png | Bin doc/src/images/callouts/5.svg | 0 doc/src/images/callouts/6.png | Bin doc/src/images/callouts/6.svg | 0 doc/src/images/callouts/7.png | Bin doc/src/images/callouts/7.svg | 0 doc/src/images/callouts/8.png | Bin doc/src/images/callouts/8.svg | 0 doc/src/images/callouts/9.png | Bin doc/src/images/callouts/9.svg | 0 doc/src/images/caution.png | Bin doc/src/images/caution.svg | 0 doc/src/images/draft.png | Bin doc/src/images/home.png | Bin doc/src/images/home.svg | 0 doc/src/images/important.png | Bin doc/src/images/important.svg | 0 doc/src/images/next.png | Bin doc/src/images/next.svg | 0 doc/src/images/next_disabled.png | Bin doc/src/images/note.png | Bin doc/src/images/note.svg | 0 doc/src/images/prev.png | Bin doc/src/images/prev.svg | 0 doc/src/images/prev_disabled.png | Bin doc/src/images/smiley.png | Bin doc/src/images/tip.png | Bin doc/src/images/tip.svg | 0 doc/src/images/toc-blank.png | Bin doc/src/images/toc-minus.png | Bin doc/src/images/toc-plus.png | Bin doc/src/images/up.png | Bin doc/src/images/up.svg | 0 doc/src/images/up_disabled.png | Bin doc/src/images/warning.png | Bin doc/src/images/warning.svg | 0 doc/src/minimal.css | 0 doc/src/reference.css | 0 doc/test/HTML4_symbols.qbk | 0 doc/test/Jamfile.v2 | 0 doc/test/array.xml | 0 doc/test/array1.xml | 0 doc/test/array2.xml | 0 doc/test/array3.xml | 0 doc/test/array4.xml | 0 .../extract/weighted_tail_quantile.html | 0 .../weighted_tail_quantile__id330053.html | 0 .../tag/weighted_tail_quantile.html | 0 doc/test/gold/boost/array.html | 0 .../accumulators.html | 0 .../document_to_test_formatting/array.html | 0 .../basic_formatting.html | 0 .../document_to_test_formatting/blurbs.html | 0 .../code_blocks.html | 0 .../document_to_test_formatting/images.html | 0 .../lists_and_tables.html | 0 .../document_to_test_formatting/remez.html | 0 .../document_to_test_formatting/test.html | 0 doc/test/gold/images/accumulators/doxygen.png | Bin doc/test/gold/images/accumulators/form_0.png | Bin doc/test/gold/images/accumulators/form_1.png | Bin doc/test/gold/images/accumulators/form_2.png | Bin doc/test/gold/images/accumulators/form_3.png | Bin doc/test/gold/images/accumulators/form_4.png | Bin doc/test/gold/images/accumulators/form_5.png | Bin doc/test/gold/images/accumulators/form_6.png | Bin doc/test/gold/images/accumulators/form_7.png | Bin doc/test/gold/images/accumulators/form_8.png | Bin doc/test/gold/images/beta_dist_kurtosis.png | Bin doc/test/gold/images/digamma3.png | Bin doc/test/gold/images/doctest.png | Bin .../gold/images/open_clipart_library_logo.svg | 0 doc/test/gold/images/remez-2.png | Bin doc/test/gold/images/remez-3.png | Bin doc/test/gold/images/remez-4.png | Bin doc/test/gold/images/remez-5.png | Bin doc/test/gold/index.html | 0 doc/test/html/images/beta_dist_kurtosis.png | Bin doc/test/html/images/digamma3.png | Bin doc/test/html/images/doctest.png | Bin .../html/images/open_clipart_library_logo.svg | 0 doc/test/html/images/remez-2.png | Bin doc/test/html/images/remez-3.png | Bin doc/test/html/images/remez-4.png | Bin doc/test/html/images/remez-5.png | Bin doc/test/remez.qbk | 0 doc/test/stub.cpp | 0 doc/test/test.mml | 0 doc/test/test.png | Bin doc/test/test.qbk | 0 doc/test/test.svg | 0 doc/test/test_HTML4_symbols.qbk | 0 doc/test/weighted_tail_quantile.hpp | 0 index.htm | 0 index.html | 23 +- libs/Jamfile.v2 | 0 libs/asio/doc/.gitignore | 1 + libs/asio/doc/Jamfile.v2 | 2 +- libs/asio/doc/asio.qbk | 6 +- libs/asio/doc/doxy2qbk.pl | 2 +- libs/asio/doc/examples.qbk | 3 +- libs/asio/doc/history.qbk | 83 +- libs/asio/doc/index.xml | 2 +- libs/asio/doc/net_ts.qbk | 2 +- libs/asio/doc/noncopyable_dox.txt | 2 +- libs/asio/doc/overview.qbk | 2 +- libs/asio/doc/overview/allocation.qbk | 2 +- libs/asio/doc/overview/async.qbk | 2 +- libs/asio/doc/overview/async_op1.dot | 0 libs/asio/doc/overview/async_op1.png | Bin libs/asio/doc/overview/async_op2.dot | 0 libs/asio/doc/overview/async_op2.png | Bin libs/asio/doc/overview/basics.qbk | 2 +- libs/asio/doc/overview/bsd_sockets.qbk | 2 +- libs/asio/doc/overview/buffers.qbk | 2 +- libs/asio/doc/overview/concurrency_hint.qbk | 2 +- libs/asio/doc/overview/coroutine.qbk | 2 +- libs/asio/doc/overview/coroutines_ts.qbk | 2 +- libs/asio/doc/overview/cpp2011.qbk | 2 +- libs/asio/doc/overview/handler_tracking.qbk | 2 +- libs/asio/doc/overview/implementation.qbk | 15 +- libs/asio/doc/overview/iostreams.qbk | 2 +- libs/asio/doc/overview/line_based.qbk | 2 +- libs/asio/doc/overview/other_protocols.qbk | 2 +- libs/asio/doc/overview/posix.qbk | 2 +- libs/asio/doc/overview/proactor.dot | 0 libs/asio/doc/overview/proactor.png | Bin libs/asio/doc/overview/protocols.qbk | 2 +- libs/asio/doc/overview/rationale.qbk | 2 +- libs/asio/doc/overview/reactor.qbk | 2 +- libs/asio/doc/overview/serial_ports.qbk | 2 +- libs/asio/doc/overview/signals.qbk | 2 +- libs/asio/doc/overview/spawn.qbk | 2 +- libs/asio/doc/overview/ssl.qbk | 2 +- libs/asio/doc/overview/strands.qbk | 2 +- libs/asio/doc/overview/streams.qbk | 2 +- libs/asio/doc/overview/sync_op.dot | 0 libs/asio/doc/overview/sync_op.png | Bin libs/asio/doc/overview/threads.qbk | 2 +- libs/asio/doc/overview/timers.qbk | 2 +- libs/asio/doc/overview/windows.qbk | 2 +- libs/asio/doc/platform_macros.pl | 88 + libs/asio/doc/platform_macros.qbk | 585 +++ libs/asio/doc/quickref.xml | 4 +- libs/asio/doc/reference.dox | 4 +- libs/asio/doc/reference.qbk | 2890 ++++++++++-- libs/asio/doc/reference.xsl | 11 +- libs/asio/doc/requirements.qbk | 2 +- libs/asio/doc/requirements/AcceptHandler.qbk | 2 +- .../doc/requirements/AcceptableProtocol.qbk | 2 +- .../AsyncRandomAccessReadDevice.qbk | 2 +- .../AsyncRandomAccessWriteDevice.qbk | 2 +- .../asio/doc/requirements/AsyncReadStream.qbk | 2 +- .../doc/requirements/AsyncWriteStream.qbk | 2 +- .../requirements/BufferedHandshakeHandler.qbk | 2 +- .../doc/requirements/CompletionCondition.qbk | 2 +- .../doc/requirements/CompletionHandler.qbk | 2 +- .../doc/requirements/ConnectCondition.qbk | 2 +- libs/asio/doc/requirements/ConnectHandler.qbk | 2 +- .../doc/requirements/ConstBufferSequence.qbk | 2 +- libs/asio/doc/requirements/DynamicBuffer.qbk | 2 +- .../doc/requirements/DynamicBuffer_v1.qbk | 2 +- .../doc/requirements/DynamicBuffer_v2.qbk | 2 +- libs/asio/doc/requirements/Endpoint.qbk | 2 +- .../doc/requirements/EndpointSequence.qbk | 2 +- .../doc/requirements/ExecutionContext.qbk | 2 +- libs/asio/doc/requirements/Executor.qbk | 2 +- .../requirements/GettableSerialPortOption.qbk | 2 +- .../doc/requirements/GettableSocketOption.qbk | 2 +- libs/asio/doc/requirements/Handler.qbk | 2 +- .../doc/requirements/HandshakeHandler.qbk | 2 +- .../doc/requirements/InternetProtocol.qbk | 2 +- .../doc/requirements/IoControlCommand.qbk | 2 +- .../asio/doc/requirements/IoObjectService.qbk | 2 +- .../requirements/IteratorConnectHandler.qbk | 2 +- .../requirements/LegacyCompletionHandler.qbk | 2 +- .../doc/requirements/MoveAcceptHandler.qbk | 2 +- .../requirements/MutableBufferSequence.qbk | 2 +- libs/asio/doc/requirements/OperationState.qbk | 2 +- libs/asio/doc/requirements/ProtoAllocator.qbk | 2 +- libs/asio/doc/requirements/Protocol.qbk | 2 +- .../doc/requirements/RangeConnectHandler.qbk | 2 +- libs/asio/doc/requirements/ReadHandler.qbk | 2 +- libs/asio/doc/requirements/Receiver.qbk | 2 +- libs/asio/doc/requirements/ResolveHandler.qbk | 2 +- libs/asio/doc/requirements/Scheduler.qbk | 2 +- libs/asio/doc/requirements/Sender.qbk | 2 +- libs/asio/doc/requirements/Service.qbk | 2 +- .../requirements/SettableSerialPortOption.qbk | 2 +- .../doc/requirements/SettableSocketOption.qbk | 2 +- .../asio/doc/requirements/ShutdownHandler.qbk | 2 +- libs/asio/doc/requirements/SignalHandler.qbk | 2 +- .../SyncRandomAccessReadDevice.qbk | 2 +- .../SyncRandomAccessWriteDevice.qbk | 2 +- libs/asio/doc/requirements/SyncReadStream.qbk | 2 +- .../asio/doc/requirements/SyncWriteStream.qbk | 2 +- libs/asio/doc/requirements/TimeTraits.qbk | 2 +- libs/asio/doc/requirements/WaitHandler.qbk | 2 +- libs/asio/doc/requirements/WaitTraits.qbk | 2 +- libs/asio/doc/requirements/WriteHandler.qbk | 2 +- .../requirements/asynchronous_operations.qbk | 2 +- .../asynchronous_socket_operations.qbk | 2 +- .../requirements/read_write_operations.qbk | 2 +- .../synchronous_socket_operations.qbk | 2 +- libs/asio/doc/std_exception_dox.txt | 2 +- libs/asio/doc/std_executors.qbk | 2 +- libs/asio/doc/tutorial.dox | 0 libs/asio/doc/tutorial.qbk | 26 +- libs/asio/doc/tutorial.xsl | 4 +- libs/asio/doc/using.qbk | 132 +- libs/asio/example/cpp03/allocation/Jamfile.v2 | 2 +- libs/asio/example/cpp03/allocation/server.cpp | 2 +- libs/asio/example/cpp03/buffers/Jamfile.v2 | 2 +- .../cpp03/buffers/reference_counted.cpp | 2 +- libs/asio/example/cpp03/chat/Jamfile.v2 | 2 +- libs/asio/example/cpp03/chat/chat_client.cpp | 2 +- libs/asio/example/cpp03/chat/chat_message.hpp | 2 +- libs/asio/example/cpp03/chat/chat_server.cpp | 2 +- .../example/cpp03/chat/posix_chat_client.cpp | 2 +- libs/asio/example/cpp03/echo/Jamfile.v2 | 2 +- .../cpp03/echo/async_tcp_echo_server.cpp | 2 +- .../cpp03/echo/async_udp_echo_server.cpp | 2 +- .../cpp03/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp03/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp03/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp03/echo/blocking_udp_echo_server.cpp | 2 +- libs/asio/example/cpp03/fork/Jamfile.v2 | 2 +- libs/asio/example/cpp03/fork/daemon.cpp | 2 +- .../cpp03/fork/process_per_connection.cpp | 2 +- .../asio/example/cpp03/http/client/Jamfile.v2 | 2 +- .../cpp03/http/client/async_client.cpp | 2 +- .../example/cpp03/http/client/sync_client.cpp | 2 +- .../example/cpp03/http/doc_root/data_1K.html | 2 +- .../example/cpp03/http/doc_root/data_2K.html | 2 +- .../example/cpp03/http/doc_root/data_4K.html | 2 +- .../example/cpp03/http/doc_root/data_8K.html | 2 +- .../asio/example/cpp03/http/server/Jamfile.v2 | 2 +- .../example/cpp03/http/server/connection.cpp | 2 +- .../example/cpp03/http/server/connection.hpp | 2 +- .../cpp03/http/server/connection_manager.cpp | 2 +- .../cpp03/http/server/connection_manager.hpp | 2 +- .../asio/example/cpp03/http/server/header.hpp | 2 +- libs/asio/example/cpp03/http/server/main.cpp | 2 +- .../example/cpp03/http/server/mime_types.cpp | 2 +- .../example/cpp03/http/server/mime_types.hpp | 2 +- libs/asio/example/cpp03/http/server/reply.cpp | 256 ++ libs/asio/example/cpp03/http/server/reply.hpp | 64 + .../example/cpp03/http/server/request.hpp | 2 +- .../cpp03/http/server/request_handler.cpp | 2 +- .../cpp03/http/server/request_handler.hpp | 2 +- .../cpp03/http/server/request_parser.cpp | 2 +- .../cpp03/http/server/request_parser.hpp | 2 +- .../asio/example/cpp03/http/server/server.cpp | 2 +- .../asio/example/cpp03/http/server/server.hpp | 2 +- .../example/cpp03/http/server2/Jamfile.v2 | 2 +- .../example/cpp03/http/server2/connection.cpp | 2 +- .../example/cpp03/http/server2/connection.hpp | 2 +- .../example/cpp03/http/server2/header.hpp | 2 +- .../cpp03/http/server2/io_context_pool.cpp | 2 +- .../cpp03/http/server2/io_context_pool.hpp | 2 +- libs/asio/example/cpp03/http/server2/main.cpp | 2 +- .../example/cpp03/http/server2/mime_types.cpp | 2 +- .../example/cpp03/http/server2/mime_types.hpp | 2 +- .../asio/example/cpp03/http/server2/reply.cpp | 256 ++ .../asio/example/cpp03/http/server2/reply.hpp | 64 + .../example/cpp03/http/server2/request.hpp | 2 +- .../cpp03/http/server2/request_handler.cpp | 2 +- .../cpp03/http/server2/request_handler.hpp | 2 +- .../cpp03/http/server2/request_parser.cpp | 2 +- .../cpp03/http/server2/request_parser.hpp | 2 +- .../example/cpp03/http/server2/server.cpp | 2 +- .../example/cpp03/http/server2/server.hpp | 2 +- .../example/cpp03/http/server3/Jamfile.v2 | 2 +- .../example/cpp03/http/server3/connection.cpp | 2 +- .../example/cpp03/http/server3/connection.hpp | 2 +- .../example/cpp03/http/server3/header.hpp | 2 +- libs/asio/example/cpp03/http/server3/main.cpp | 2 +- .../example/cpp03/http/server3/mime_types.cpp | 2 +- .../example/cpp03/http/server3/mime_types.hpp | 2 +- .../asio/example/cpp03/http/server3/reply.cpp | 256 ++ .../asio/example/cpp03/http/server3/reply.hpp | 64 + .../example/cpp03/http/server3/request.hpp | 2 +- .../cpp03/http/server3/request_handler.cpp | 2 +- .../cpp03/http/server3/request_handler.hpp | 2 +- .../cpp03/http/server3/request_parser.cpp | 2 +- .../cpp03/http/server3/request_parser.hpp | 2 +- .../example/cpp03/http/server3/server.cpp | 2 +- .../example/cpp03/http/server3/server.hpp | 2 +- .../example/cpp03/http/server4/Jamfile.v2 | 2 +- .../cpp03/http/server4/file_handler.cpp | 2 +- .../cpp03/http/server4/file_handler.hpp | 2 +- .../example/cpp03/http/server4/header.hpp | 2 +- libs/asio/example/cpp03/http/server4/main.cpp | 2 +- .../example/cpp03/http/server4/mime_types.cpp | 2 +- .../example/cpp03/http/server4/mime_types.hpp | 2 +- .../asio/example/cpp03/http/server4/reply.cpp | 256 ++ .../asio/example/cpp03/http/server4/reply.hpp | 64 + .../example/cpp03/http/server4/request.hpp | 2 +- .../cpp03/http/server4/request_parser.cpp | 226 + .../cpp03/http/server4/request_parser.hpp | 78 + .../example/cpp03/http/server4/server.cpp | 2 +- .../example/cpp03/http/server4/server.hpp | 2 +- libs/asio/example/cpp03/icmp/Jamfile.v2 | 2 +- libs/asio/example/cpp03/icmp/icmp_header.hpp | 2 +- libs/asio/example/cpp03/icmp/ipv4_header.hpp | 2 +- libs/asio/example/cpp03/icmp/ping.cpp | 2 +- libs/asio/example/cpp03/invocation/Jamfile.v2 | 2 +- .../cpp03/invocation/prioritised_handlers.cpp | 2 +- libs/asio/example/cpp03/iostreams/Jamfile.v2 | 2 +- .../cpp03/iostreams/daytime_client.cpp | 2 +- .../cpp03/iostreams/daytime_server.cpp | 2 +- .../example/cpp03/iostreams/http_client.cpp | 2 +- libs/asio/example/cpp03/local/Jamfile.v2 | 2 +- .../asio/example/cpp03/local/connect_pair.cpp | 2 +- .../example/cpp03/local/iostream_client.cpp | 2 +- .../example/cpp03/local/stream_client.cpp | 2 +- .../example/cpp03/local/stream_server.cpp | 2 +- libs/asio/example/cpp03/multicast/Jamfile.v2 | 2 +- .../asio/example/cpp03/multicast/receiver.cpp | 2 +- libs/asio/example/cpp03/multicast/sender.cpp | 2 +- .../asio/example/cpp03/nonblocking/Jamfile.v2 | 2 +- .../cpp03/nonblocking/third_party_lib.cpp | 2 +- libs/asio/example/cpp03/porthopper/Jamfile.v2 | 2 +- libs/asio/example/cpp03/porthopper/client.cpp | 2 +- .../example/cpp03/porthopper/protocol.hpp | 2 +- libs/asio/example/cpp03/porthopper/server.cpp | 2 +- .../example/cpp03/serialization/Jamfile.v2 | 2 +- .../example/cpp03/serialization/client.cpp | 2 +- .../cpp03/serialization/connection.hpp | 2 +- .../example/cpp03/serialization/server.cpp | 2 +- .../example/cpp03/serialization/stock.hpp | 2 +- libs/asio/example/cpp03/services/Jamfile.v2 | 2 +- .../example/cpp03/services/basic_logger.hpp | 2 +- .../example/cpp03/services/daytime_client.cpp | 2 +- libs/asio/example/cpp03/services/logger.hpp | 2 +- .../example/cpp03/services/logger_service.cpp | 2 +- .../example/cpp03/services/logger_service.hpp | 2 +- libs/asio/example/cpp03/socks4/Jamfile.v2 | 2 +- libs/asio/example/cpp03/socks4/socks4.hpp | 2 +- .../asio/example/cpp03/socks4/sync_client.cpp | 2 +- libs/asio/example/cpp03/spawn/Jamfile.v2 | 2 +- libs/asio/example/cpp03/spawn/echo_server.cpp | 2 +- .../example/cpp03/spawn/parallel_grep.cpp | 2 +- libs/asio/example/cpp03/ssl/Jamfile.v2 | 2 +- libs/asio/example/cpp03/ssl/README | 2 +- libs/asio/example/cpp03/ssl/ca.pem | 0 libs/asio/example/cpp03/ssl/client.cpp | 2 +- libs/asio/example/cpp03/ssl/dh2048.pem | 0 libs/asio/example/cpp03/ssl/server.cpp | 2 +- libs/asio/example/cpp03/ssl/server.pem | 0 libs/asio/example/cpp03/timeouts/Jamfile.v2 | 2 +- .../cpp03/timeouts/async_tcp_client.cpp | 2 +- .../cpp03/timeouts/blocking_tcp_client.cpp | 2 +- .../timeouts/blocking_token_tcp_client.cpp | 2 +- .../cpp03/timeouts/blocking_udp_client.cpp | 2 +- libs/asio/example/cpp03/timeouts/server.cpp | 2 +- libs/asio/example/cpp03/timers/Jamfile.v2 | 2 +- .../example/cpp03/timers/time_t_timer.cpp | 2 +- libs/asio/example/cpp03/tutorial/Jamfile.v2 | 2 +- .../cpp03/tutorial/daytime1/client.cpp | 2 +- .../cpp03/tutorial/daytime2/server.cpp | 2 +- .../cpp03/tutorial/daytime3/server.cpp | 2 +- .../cpp03/tutorial/daytime4/client.cpp | 2 +- .../cpp03/tutorial/daytime5/server.cpp | 2 +- .../cpp03/tutorial/daytime6/server.cpp | 2 +- .../cpp03/tutorial/daytime7/server.cpp | 2 +- .../example/cpp03/tutorial/daytime_dox.txt | 2 +- .../asio/example/cpp03/tutorial/index_dox.txt | 2 +- .../example/cpp03/tutorial/timer1/timer.cpp | 2 +- .../example/cpp03/tutorial/timer2/timer.cpp | 2 +- .../example/cpp03/tutorial/timer3/timer.cpp | 2 +- .../example/cpp03/tutorial/timer4/timer.cpp | 2 +- .../example/cpp03/tutorial/timer5/timer.cpp | 2 +- .../asio/example/cpp03/tutorial/timer_dox.txt | 2 +- libs/asio/example/cpp03/windows/Jamfile.v2 | 2 +- .../example/cpp03/windows/transmit_file.cpp | 2 +- libs/asio/example/cpp11/allocation/Jamfile.v2 | 2 +- libs/asio/example/cpp11/allocation/server.cpp | 2 +- libs/asio/example/cpp11/buffers/Jamfile.v2 | 2 +- .../cpp11/buffers/reference_counted.cpp | 2 +- libs/asio/example/cpp11/chat/Jamfile.v2 | 2 +- libs/asio/example/cpp11/chat/chat_client.cpp | 2 +- libs/asio/example/cpp11/chat/chat_message.hpp | 2 +- libs/asio/example/cpp11/chat/chat_server.cpp | 2 +- libs/asio/example/cpp11/echo/Jamfile.v2 | 2 +- .../cpp11/echo/async_tcp_echo_server.cpp | 2 +- .../cpp11/echo/async_udp_echo_server.cpp | 2 +- .../cpp11/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp11/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp11/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp11/echo/blocking_udp_echo_server.cpp | 2 +- libs/asio/example/cpp11/executors/Jamfile.v2 | 2 +- libs/asio/example/cpp11/executors/actor.cpp | 0 .../cpp11/executors/bank_account_1.cpp | 0 .../cpp11/executors/bank_account_2.cpp | 0 .../example/cpp11/executors/fork_join.cpp | 0 .../asio/example/cpp11/executors/pipeline.cpp | 0 .../cpp11/executors/priority_scheduler.cpp | 0 libs/asio/example/cpp11/fork/Jamfile.v2 | 2 +- libs/asio/example/cpp11/fork/daemon.cpp | 2 +- .../cpp11/fork/process_per_connection.cpp | 2 +- libs/asio/example/cpp11/futures/Jamfile.v2 | 2 +- .../example/cpp11/futures/daytime_client.cpp | 2 +- .../example/cpp11/handler_tracking/Jamfile.v2 | 2 +- .../async_tcp_echo_server.cpp | 2 +- .../handler_tracking/custom_tracking.hpp | 2 +- .../asio/example/cpp11/http/server/Jamfile.v2 | 2 +- .../example/cpp11/http/server/connection.cpp | 2 +- .../example/cpp11/http/server/connection.hpp | 79 + .../cpp11/http/server/connection_manager.cpp | 2 +- .../cpp11/http/server/connection_manager.hpp | 2 +- .../asio/example/cpp11/http/server/header.hpp | 2 +- libs/asio/example/cpp11/http/server/main.cpp | 2 +- .../example/cpp11/http/server/mime_types.cpp | 2 +- .../example/cpp11/http/server/mime_types.hpp | 2 +- libs/asio/example/cpp11/http/server/reply.cpp | 255 ++ libs/asio/example/cpp11/http/server/reply.hpp | 64 + .../example/cpp11/http/server/request.hpp | 2 +- .../cpp11/http/server/request_handler.cpp | 2 +- .../cpp11/http/server/request_handler.hpp | 2 +- .../cpp11/http/server/request_parser.cpp | 2 +- .../cpp11/http/server/request_parser.hpp | 2 +- .../asio/example/cpp11/http/server/server.cpp | 2 +- .../asio/example/cpp11/http/server/server.hpp | 2 +- libs/asio/example/cpp11/invocation/Jamfile.v2 | 2 +- .../cpp11/invocation/prioritised_handlers.cpp | 2 +- libs/asio/example/cpp11/iostreams/Jamfile.v2 | 2 +- .../example/cpp11/iostreams/http_client.cpp | 2 +- libs/asio/example/cpp11/local/Jamfile.v2 | 2 +- .../asio/example/cpp11/local/connect_pair.cpp | 2 +- .../example/cpp11/local/iostream_client.cpp | 2 +- .../example/cpp11/local/stream_client.cpp | 2 +- .../example/cpp11/local/stream_server.cpp | 2 +- libs/asio/example/cpp11/multicast/Jamfile.v2 | 2 +- .../asio/example/cpp11/multicast/receiver.cpp | 2 +- libs/asio/example/cpp11/multicast/sender.cpp | 2 +- .../asio/example/cpp11/nonblocking/Jamfile.v2 | 2 +- .../cpp11/nonblocking/third_party_lib.cpp | 2 +- libs/asio/example/cpp11/operations/Jamfile.v2 | 2 +- .../example/cpp11/operations/composed_1.cpp | 2 +- .../example/cpp11/operations/composed_2.cpp | 2 +- .../example/cpp11/operations/composed_3.cpp | 2 +- .../example/cpp11/operations/composed_4.cpp | 2 +- .../example/cpp11/operations/composed_5.cpp | 2 +- .../example/cpp11/operations/composed_6.cpp | 2 +- .../example/cpp11/operations/composed_7.cpp | 2 +- .../example/cpp11/operations/composed_8.cpp | 2 +- libs/asio/example/cpp11/socks4/Jamfile.v2 | 2 +- libs/asio/example/cpp11/socks4/socks4.hpp | 2 +- .../asio/example/cpp11/socks4/sync_client.cpp | 2 +- libs/asio/example/cpp11/spawn/Jamfile.v2 | 2 +- libs/asio/example/cpp11/spawn/echo_server.cpp | 2 +- .../example/cpp11/spawn/parallel_grep.cpp | 2 +- libs/asio/example/cpp11/ssl/Jamfile.v2 | 2 +- libs/asio/example/cpp11/ssl/README | 2 +- libs/asio/example/cpp11/ssl/ca.pem | 0 libs/asio/example/cpp11/ssl/client.cpp | 2 +- libs/asio/example/cpp11/ssl/dh2048.pem | 0 libs/asio/example/cpp11/ssl/server.cpp | 2 +- libs/asio/example/cpp11/ssl/server.pem | 0 libs/asio/example/cpp11/timeouts/Jamfile.v2 | 2 +- .../cpp11/timeouts/async_tcp_client.cpp | 2 +- .../cpp11/timeouts/blocking_tcp_client.cpp | 2 +- .../timeouts/blocking_token_tcp_client.cpp | 2 +- .../cpp11/timeouts/blocking_udp_client.cpp | 2 +- libs/asio/example/cpp11/timeouts/server.cpp | 2 +- libs/asio/example/cpp11/timers/Jamfile.v2 | 2 +- .../example/cpp11/timers/time_t_timer.cpp | 2 +- libs/asio/example/cpp14/executors/Jamfile.v2 | 2 +- libs/asio/example/cpp14/operations/Jamfile.v2 | 2 +- .../example/cpp14/operations/composed_1.cpp | 2 +- .../example/cpp14/operations/composed_2.cpp | 2 +- .../example/cpp14/operations/composed_3.cpp | 2 +- .../example/cpp14/operations/composed_4.cpp | 2 +- .../example/cpp14/operations/composed_5.cpp | 2 +- .../example/cpp14/operations/composed_6.cpp | 2 +- .../example/cpp14/operations/composed_7.cpp | 2 +- .../example/cpp14/operations/composed_8.cpp | 2 +- .../cpp17/coroutines_ts/chat_server.cpp | 2 +- .../cpp17/coroutines_ts/echo_server.cpp | 2 +- .../echo_server_with_as_single_default.cpp | 71 + .../echo_server_with_default.cpp | 2 +- .../cpp17/coroutines_ts/range_based_for.cpp | 2 +- .../coroutines_ts/refactored_echo_server.cpp | 2 +- libs/asio/include/boost/asio.hpp | 181 + .../include/boost/asio/any_io_executor.hpp | 302 ++ .../boost/asio/associated_allocator.hpp | 127 + .../boost/asio/associated_executor.hpp | 168 + libs/asio/include/boost/asio/async_result.hpp | 584 +++ libs/asio/include/boost/asio/awaitable.hpp | 135 + .../boost/asio/basic_datagram_socket.hpp | 1225 +++++ .../boost/asio/basic_deadline_timer.hpp | 695 +++ .../include/boost/asio/basic_io_object.hpp | 292 ++ .../include/boost/asio/basic_raw_socket.hpp | 1216 +++++ .../boost/asio/basic_seq_packet_socket.hpp | 770 ++++ .../include/boost/asio/basic_serial_port.hpp | 909 ++++ .../include/boost/asio/basic_signal_set.hpp | 578 +++ libs/asio/include/boost/asio/basic_socket.hpp | 1897 ++++++++ .../boost/asio/basic_socket_acceptor.hpp | 2510 +++++++++++ .../boost/asio/basic_socket_iostream.hpp | 409 ++ .../boost/asio/basic_socket_streambuf.hpp | 689 +++ .../boost/asio/basic_stream_socket.hpp | 1062 +++++ .../include/boost/asio/basic_streambuf.hpp | 454 ++ .../boost/asio/basic_streambuf_fwd.hpp | 38 + .../boost/asio/basic_waitable_timer.hpp | 813 ++++ .../asio/include/boost/asio/bind_executor.hpp | 577 +++ libs/asio/include/boost/asio/buffer.hpp | 2500 +++++++++++ .../boost/asio/buffered_read_stream.hpp | 255 ++ .../boost/asio/buffered_read_stream_fwd.hpp | 27 + .../include/boost/asio/buffered_stream.hpp | 281 ++ .../boost/asio/buffered_stream_fwd.hpp | 27 + .../boost/asio/buffered_write_stream.hpp | 247 + .../boost/asio/buffered_write_stream_fwd.hpp | 27 + .../include/boost/asio/buffers_iterator.hpp | 523 +++ libs/asio/include/boost/asio/co_spawn.hpp | 473 ++ .../boost/asio/completion_condition.hpp | 220 + libs/asio/include/boost/asio/compose.hpp | 138 + libs/asio/include/boost/asio/connect.hpp | 1078 +++++ libs/asio/include/boost/asio/coroutine.hpp | 330 ++ .../include/boost/asio/deadline_timer.hpp | 40 + libs/asio/include/boost/asio/defer.hpp | 132 + libs/asio/include/boost/asio/detached.hpp | 114 + libs/asio/include/boost/asio/detail/array.hpp | 40 + .../include/boost/asio/detail/array_fwd.hpp | 34 + .../asio/include/boost/asio/detail/assert.hpp | 32 + .../boost/asio/detail/atomic_count.hpp | 66 + .../asio/detail/base_from_completion_cond.hpp | 71 + .../boost/asio/detail/bind_handler.hpp | 940 ++++ .../asio/detail/blocking_executor_op.hpp | 109 + .../boost/asio/detail/buffer_resize_guard.hpp | 68 + .../asio/detail/buffer_sequence_adapter.hpp | 652 +++ .../asio/detail/buffered_stream_storage.hpp | 128 + .../boost/asio/detail/bulk_executor_op.hpp | 90 + .../include/boost/asio/detail/call_stack.hpp | 127 + .../asio/include/boost/asio/detail/chrono.hpp | 68 + .../boost/asio/detail/chrono_time_traits.hpp | 192 + .../boost/asio/detail/completion_handler.hpp | 90 + .../boost/asio/detail/concurrency_hint.hpp | 94 + .../detail/conditionally_enabled_event.hpp | 122 + .../detail/conditionally_enabled_mutex.hpp | 151 + .../asio/include/boost/asio/detail/config.hpp | 1849 ++++++++ .../boost/asio/detail/consuming_buffers.hpp | 416 ++ .../include/boost/asio/detail/cstddef.hpp | 33 + .../include/boost/asio/detail/cstdint.hpp | 62 + .../boost/asio/detail/date_time_fwd.hpp | 34 + .../asio/detail/deadline_timer_service.hpp | 297 ++ .../boost/asio/detail/dependent_type.hpp | 38 + .../boost/asio/detail/descriptor_ops.hpp | 141 + .../boost/asio/detail/descriptor_read_op.hpp | 150 + .../boost/asio/detail/descriptor_write_op.hpp | 150 + .../boost/asio/detail/dev_poll_reactor.hpp | 220 + .../boost/asio/detail/epoll_reactor.hpp | 268 ++ libs/asio/include/boost/asio/detail/event.hpp | 50 + .../detail/eventfd_select_interrupter.hpp | 85 + .../boost/asio/detail/executor_function.hpp | 206 + .../include/boost/asio/detail/executor_op.hpp | 86 + .../boost/asio/detail/fd_set_adapter.hpp | 41 + .../boost/asio/detail/fenced_block.hpp | 82 + .../include/boost/asio/detail/functional.hpp | 40 + .../asio/include/boost/asio/detail/future.hpp | 33 + .../asio/detail/gcc_arm_fenced_block.hpp | 93 + .../asio/detail/gcc_hppa_fenced_block.hpp | 70 + .../asio/detail/gcc_sync_fenced_block.hpp | 67 + .../asio/detail/gcc_x86_fenced_block.hpp | 101 + .../asio/include/boost/asio/detail/global.hpp | 54 + .../asio/detail/handler_alloc_helpers.hpp | 286 ++ .../asio/detail/handler_cont_helpers.hpp | 45 + .../asio/detail/handler_invoke_helpers.hpp | 80 + .../boost/asio/detail/handler_tracking.hpp | 268 ++ .../asio/detail/handler_type_requirements.hpp | 558 +++ .../boost/asio/detail/handler_work.hpp | 516 +++ .../include/boost/asio/detail/hash_map.hpp | 333 ++ .../detail/impl/buffer_sequence_adapter.ipp | 120 + .../boost/asio/detail/impl/descriptor_ops.ipp | 610 +++ .../asio/detail/impl/dev_poll_reactor.hpp | 93 + .../asio/detail/impl/dev_poll_reactor.ipp | 448 ++ .../boost/asio/detail/impl/epoll_reactor.hpp | 91 + .../boost/asio/detail/impl/epoll_reactor.ipp | 789 ++++ .../impl/eventfd_select_interrupter.ipp | 173 + .../asio/detail/impl/handler_tracking.ipp | 398 ++ .../boost/asio/detail/impl/kqueue_reactor.hpp | 95 + .../boost/asio/detail/impl/kqueue_reactor.ipp | 572 +++ .../boost/asio/detail/impl/null_event.ipp | 76 + .../detail/impl/pipe_select_interrupter.ipp | 131 + .../boost/asio/detail/impl/posix_event.ipp | 65 + .../boost/asio/detail/impl/posix_mutex.ipp | 48 + .../boost/asio/detail/impl/posix_thread.ipp | 86 + .../boost/asio/detail/impl/posix_tss_ptr.ipp | 48 + .../impl/reactive_descriptor_service.ipp | 225 + .../impl/reactive_serial_port_service.ipp | 151 + .../impl/reactive_socket_service_base.ipp | 302 ++ .../detail/impl/resolver_service_base.ipp | 160 + .../boost/asio/detail/impl/scheduler.ipp | 661 +++ .../boost/asio/detail/impl/select_reactor.hpp | 102 + .../boost/asio/detail/impl/select_reactor.ipp | 340 ++ .../asio/detail/impl/service_registry.hpp | 96 + .../asio/detail/impl/service_registry.ipp | 199 + .../asio/detail/impl/signal_set_service.ipp | 670 +++ .../boost/asio/detail/impl/socket_ops.ipp | 3966 +++++++++++++++++ .../detail/impl/socket_select_interrupter.ipp | 187 + .../detail/impl/strand_executor_service.hpp | 354 ++ .../detail/impl/strand_executor_service.ipp | 160 + .../boost/asio/detail/impl/strand_service.hpp | 89 + .../boost/asio/detail/impl/strand_service.ipp | 204 + .../boost/asio/detail/impl/thread_context.ipp | 37 + .../boost/asio/detail/impl/throw_error.ipp | 47 + .../asio/detail/impl/timer_queue_ptime.ipp | 93 + .../asio/detail/impl/timer_queue_set.ipp | 103 + .../boost/asio/detail/impl/win_event.ipp | 78 + .../detail/impl/win_iocp_handle_service.ipp | 527 +++ .../asio/detail/impl/win_iocp_io_context.hpp | 106 + .../asio/detail/impl/win_iocp_io_context.ipp | 610 +++ .../impl/win_iocp_serial_port_service.ipp | 194 + .../impl/win_iocp_socket_service_base.ipp | 803 ++++ .../boost/asio/detail/impl/win_mutex.ipp | 86 + .../detail/impl/win_object_handle_service.ipp | 450 ++ .../asio/detail/impl/win_static_mutex.ipp | 138 + .../boost/asio/detail/impl/win_thread.ipp | 152 + .../boost/asio/detail/impl/win_tss_ptr.ipp | 59 + .../impl/winrt_ssocket_service_base.ipp | 628 +++ .../detail/impl/winrt_timer_scheduler.hpp | 94 + .../detail/impl/winrt_timer_scheduler.ipp | 123 + .../boost/asio/detail/impl/winsock_init.ipp | 84 + .../include/boost/asio/detail/io_control.hpp | 86 + .../boost/asio/detail/io_object_impl.hpp | 174 + .../boost/asio/detail/is_buffer_sequence.hpp | 314 ++ .../include/boost/asio/detail/is_executor.hpp | 128 + .../boost/asio/detail/keyword_tss_ptr.hpp | 72 + .../boost/asio/detail/kqueue_reactor.hpp | 244 + .../asio/include/boost/asio/detail/limits.hpp | 26 + .../asio/detail/local_free_on_block_exit.hpp | 61 + .../boost/asio/detail/macos_fenced_block.hpp | 64 + .../asio/include/boost/asio/detail/memory.hpp | 75 + libs/asio/include/boost/asio/detail/mutex.hpp | 50 + .../boost/asio/detail/non_const_lvalue.hpp | 56 + .../include/boost/asio/detail/noncopyable.hpp | 45 + .../include/boost/asio/detail/null_event.hpp | 108 + .../boost/asio/detail/null_fenced_block.hpp | 49 + .../include/boost/asio/detail/null_global.hpp | 61 + .../include/boost/asio/detail/null_mutex.hpp | 66 + .../boost/asio/detail/null_reactor.hpp | 70 + .../boost/asio/detail/null_signal_blocker.hpp | 71 + .../boost/asio/detail/null_socket_service.hpp | 521 +++ .../boost/asio/detail/null_static_mutex.hpp | 62 + .../include/boost/asio/detail/null_thread.hpp | 69 + .../boost/asio/detail/null_tss_ptr.hpp | 70 + .../include/boost/asio/detail/object_pool.hpp | 173 + .../boost/asio/detail/old_win_sdk_compat.hpp | 216 + .../include/boost/asio/detail/op_queue.hpp | 164 + .../include/boost/asio/detail/operation.hpp | 40 + .../asio/detail/pipe_select_interrupter.hpp | 91 + .../include/boost/asio/detail/pop_options.hpp | 141 + .../include/boost/asio/detail/posix_event.hpp | 177 + .../asio/detail/posix_fd_set_adapter.hpp | 120 + .../boost/asio/detail/posix_global.hpp | 82 + .../include/boost/asio/detail/posix_mutex.hpp | 78 + .../asio/detail/posix_signal_blocker.hpp | 87 + .../boost/asio/detail/posix_static_mutex.hpp | 66 + .../boost/asio/detail/posix_thread.hpp | 111 + .../boost/asio/detail/posix_tss_ptr.hpp | 81 + .../boost/asio/detail/push_options.hpp | 191 + .../detail/reactive_descriptor_service.hpp | 418 ++ .../asio/detail/reactive_null_buffers_op.hpp | 100 + .../detail/reactive_serial_port_service.hpp | 239 + .../asio/detail/reactive_socket_accept_op.hpp | 244 + .../detail/reactive_socket_connect_op.hpp | 125 + .../asio/detail/reactive_socket_recv_op.hpp | 161 + .../detail/reactive_socket_recvfrom_op.hpp | 166 + .../detail/reactive_socket_recvmsg_op.hpp | 147 + .../asio/detail/reactive_socket_send_op.hpp | 164 + .../asio/detail/reactive_socket_sendto_op.hpp | 158 + .../asio/detail/reactive_socket_service.hpp | 530 +++ .../detail/reactive_socket_service_base.hpp | 543 +++ .../boost/asio/detail/reactive_wait_op.hpp | 100 + .../include/boost/asio/detail/reactor.hpp | 32 + .../include/boost/asio/detail/reactor_fwd.hpp | 42 + .../include/boost/asio/detail/reactor_op.hpp | 69 + .../boost/asio/detail/reactor_op_queue.hpp | 170 + .../boost/asio/detail/recycling_allocator.hpp | 106 + .../include/boost/asio/detail/regex_fwd.hpp | 44 + .../boost/asio/detail/resolve_endpoint_op.hpp | 142 + .../include/boost/asio/detail/resolve_op.hpp | 47 + .../boost/asio/detail/resolve_query_op.hpp | 152 + .../boost/asio/detail/resolver_service.hpp | 147 + .../asio/detail/resolver_service_base.hpp | 160 + .../include/boost/asio/detail/scheduler.hpp | 231 + .../boost/asio/detail/scheduler_operation.hpp | 80 + .../asio/detail/scheduler_thread_info.hpp | 42 + .../include/boost/asio/detail/scoped_lock.hpp | 103 + .../include/boost/asio/detail/scoped_ptr.hpp | 89 + .../boost/asio/detail/select_interrupter.hpp | 48 + .../boost/asio/detail/select_reactor.hpp | 240 + .../boost/asio/detail/service_registry.hpp | 166 + .../boost/asio/detail/signal_blocker.hpp | 46 + .../boost/asio/detail/signal_handler.hpp | 92 + .../include/boost/asio/detail/signal_init.hpp | 49 + .../include/boost/asio/detail/signal_op.hpp | 51 + .../boost/asio/detail/signal_set_service.hpp | 231 + .../boost/asio/detail/socket_holder.hpp | 100 + .../include/boost/asio/detail/socket_ops.hpp | 385 ++ .../boost/asio/detail/socket_option.hpp | 318 ++ .../asio/detail/socket_select_interrupter.hpp | 93 + .../boost/asio/detail/socket_types.hpp | 419 ++ .../asio/detail/solaris_fenced_block.hpp | 64 + .../boost/asio/detail/source_location.hpp | 47 + .../boost/asio/detail/static_mutex.hpp | 54 + .../include/boost/asio/detail/std_event.hpp | 190 + .../boost/asio/detail/std_fenced_block.hpp | 64 + .../include/boost/asio/detail/std_global.hpp | 72 + .../include/boost/asio/detail/std_mutex.hpp | 75 + .../boost/asio/detail/std_static_mutex.hpp | 83 + .../include/boost/asio/detail/std_thread.hpp | 73 + .../asio/detail/strand_executor_service.hpp | 175 + .../boost/asio/detail/strand_service.hpp | 146 + .../include/boost/asio/detail/string_view.hpp | 49 + .../asio/include/boost/asio/detail/thread.hpp | 62 + .../boost/asio/detail/thread_context.hpp | 53 + .../boost/asio/detail/thread_group.hpp | 101 + .../boost/asio/detail/thread_info_base.hpp | 192 + .../include/boost/asio/detail/throw_error.hpp | 55 + .../boost/asio/detail/throw_exception.hpp | 53 + .../include/boost/asio/detail/timer_queue.hpp | 362 ++ .../boost/asio/detail/timer_queue_base.hpp | 70 + .../boost/asio/detail/timer_queue_ptime.hpp | 101 + .../boost/asio/detail/timer_queue_set.hpp | 68 + .../boost/asio/detail/timer_scheduler.hpp | 35 + .../boost/asio/detail/timer_scheduler_fwd.hpp | 42 + .../include/boost/asio/detail/tss_ptr.hpp | 71 + .../include/boost/asio/detail/type_traits.hpp | 158 + .../boost/asio/detail/variadic_templates.hpp | 294 ++ .../boost/asio/detail/wait_handler.hpp | 92 + .../include/boost/asio/detail/wait_op.hpp | 47 + .../include/boost/asio/detail/win_event.hpp | 166 + .../boost/asio/detail/win_fd_set_adapter.hpp | 151 + .../boost/asio/detail/win_fenced_block.hpp | 92 + .../include/boost/asio/detail/win_global.hpp | 73 + .../asio/detail/win_iocp_handle_read_op.hpp | 119 + .../asio/detail/win_iocp_handle_service.hpp | 337 ++ .../asio/detail/win_iocp_handle_write_op.hpp | 112 + .../boost/asio/detail/win_iocp_io_context.hpp | 341 ++ .../asio/detail/win_iocp_null_buffers_op.hpp | 129 + .../boost/asio/detail/win_iocp_operation.hpp | 98 + .../asio/detail/win_iocp_overlapped_op.hpp | 98 + .../asio/detail/win_iocp_overlapped_ptr.hpp | 173 + .../detail/win_iocp_serial_port_service.hpp | 234 + .../asio/detail/win_iocp_socket_accept_op.hpp | 314 ++ .../detail/win_iocp_socket_connect_op.hpp | 137 + .../asio/detail/win_iocp_socket_recv_op.hpp | 126 + .../detail/win_iocp_socket_recvfrom_op.hpp | 135 + .../detail/win_iocp_socket_recvmsg_op.hpp | 127 + .../asio/detail/win_iocp_socket_send_op.hpp | 120 + .../asio/detail/win_iocp_socket_service.hpp | 583 +++ .../detail/win_iocp_socket_service_base.hpp | 602 +++ .../asio/detail/win_iocp_thread_info.hpp | 36 + .../boost/asio/detail/win_iocp_wait_op.hpp | 130 + .../include/boost/asio/detail/win_mutex.hpp | 80 + .../asio/detail/win_object_handle_service.hpp | 197 + .../boost/asio/detail/win_static_mutex.hpp | 76 + .../include/boost/asio/detail/win_thread.hpp | 149 + .../include/boost/asio/detail/win_tss_ptr.hpp | 81 + .../boost/asio/detail/winapp_thread.hpp | 126 + .../boost/asio/detail/wince_thread.hpp | 126 + .../boost/asio/detail/winrt_async_manager.hpp | 307 ++ .../boost/asio/detail/winrt_async_op.hpp | 67 + .../boost/asio/detail/winrt_resolve_op.hpp | 127 + .../asio/detail/winrt_resolver_service.hpp | 214 + .../asio/detail/winrt_socket_connect_op.hpp | 100 + .../asio/detail/winrt_socket_recv_op.hpp | 121 + .../asio/detail/winrt_socket_send_op.hpp | 112 + .../asio/detail/winrt_ssocket_service.hpp | 252 ++ .../detail/winrt_ssocket_service_base.hpp | 364 ++ .../asio/detail/winrt_timer_scheduler.hpp | 149 + .../include/boost/asio/detail/winrt_utils.hpp | 108 + .../boost/asio/detail/winsock_init.hpp | 130 + .../boost/asio/detail/work_dispatcher.hpp | 150 + .../boost/asio/detail/wrapped_handler.hpp | 329 ++ libs/asio/include/boost/asio/dispatch.hpp | 123 + libs/asio/include/boost/asio/error.hpp | 361 ++ libs/asio/include/boost/asio/execution.hpp | 48 + .../boost/asio/execution/allocator.hpp | 339 ++ .../boost/asio/execution/any_executor.hpp | 2348 ++++++++++ .../boost/asio/execution/bad_executor.hpp | 49 + .../include/boost/asio/execution/blocking.hpp | 1553 +++++++ .../asio/execution/blocking_adaptation.hpp | 1214 +++++ .../boost/asio/execution/bulk_execute.hpp | 399 ++ .../boost/asio/execution/bulk_guarantee.hpp | 1217 +++++ .../include/boost/asio/execution/connect.hpp | 493 ++ .../include/boost/asio/execution/context.hpp | 235 + .../boost/asio/execution/context_as.hpp | 223 + .../asio/execution/detail/as_invocable.hpp | 154 + .../asio/execution/detail/as_operation.hpp | 107 + .../asio/execution/detail/as_receiver.hpp | 130 + .../asio/execution/detail/bulk_sender.hpp | 263 ++ .../asio/execution/detail/submit_receiver.hpp | 235 + .../asio/execution/detail/void_receiver.hpp | 92 + .../include/boost/asio/execution/execute.hpp | 289 ++ .../include/boost/asio/execution/executor.hpp | 254 ++ .../asio/execution/impl/bad_executor.ipp | 42 + .../impl/receiver_invocation_error.ipp | 38 + .../asio/execution/invocable_archetype.hpp | 73 + .../include/boost/asio/execution/mapping.hpp | 1118 +++++ .../boost/asio/execution/occupancy.hpp | 228 + .../boost/asio/execution/operation_state.hpp | 96 + .../boost/asio/execution/outstanding_work.hpp | 869 ++++ .../boost/asio/execution/prefer_only.hpp | 333 ++ .../include/boost/asio/execution/receiver.hpp | 282 ++ .../execution/receiver_invocation_error.hpp | 50 + .../boost/asio/execution/relationship.hpp | 867 ++++ .../include/boost/asio/execution/schedule.hpp | 291 ++ .../boost/asio/execution/scheduler.hpp | 88 + .../include/boost/asio/execution/sender.hpp | 313 ++ .../include/boost/asio/execution/set_done.hpp | 254 ++ .../boost/asio/execution/set_error.hpp | 254 ++ .../boost/asio/execution/set_value.hpp | 487 ++ .../include/boost/asio/execution/start.hpp | 251 ++ .../include/boost/asio/execution/submit.hpp | 454 ++ .../include/boost/asio/execution_context.hpp | 414 ++ libs/asio/include/boost/asio/executor.hpp | 349 ++ .../boost/asio/executor_work_guard.hpp | 304 ++ .../boost/asio/experimental/as_single.hpp | 137 + .../asio/experimental/impl/as_single.hpp | 245 + .../boost/asio/generic/basic_endpoint.hpp | 195 + .../boost/asio/generic/datagram_protocol.hpp | 125 + .../boost/asio/generic/detail/endpoint.hpp | 135 + .../asio/generic/detail/impl/endpoint.ipp | 112 + .../boost/asio/generic/raw_protocol.hpp | 123 + .../asio/generic/seq_packet_protocol.hpp | 124 + .../boost/asio/generic/stream_protocol.hpp | 129 + .../include/boost/asio/handler_alloc_hook.hpp | 106 + .../boost/asio/handler_continuation_hook.hpp | 56 + .../boost/asio/handler_invoke_hook.hpp | 113 + .../boost/asio/high_resolution_timer.hpp | 46 + .../include/boost/asio/impl/awaitable.hpp | 438 ++ .../boost/asio/impl/buffered_read_stream.hpp | 531 +++ .../boost/asio/impl/buffered_write_stream.hpp | 511 +++ .../asio/include/boost/asio/impl/co_spawn.hpp | 300 ++ libs/asio/include/boost/asio/impl/compose.hpp | 639 +++ libs/asio/include/boost/asio/impl/connect.hpp | 918 ++++ libs/asio/include/boost/asio/impl/defer.hpp | 254 ++ .../asio/include/boost/asio/impl/detached.hpp | 132 + .../asio/include/boost/asio/impl/dispatch.hpp | 249 ++ libs/asio/include/boost/asio/impl/error.ipp | 130 + .../boost/asio/impl/execution_context.hpp | 111 + .../boost/asio/impl/execution_context.ipp | 84 + .../asio/include/boost/asio/impl/executor.hpp | 302 ++ .../asio/include/boost/asio/impl/executor.ipp | 45 + .../boost/asio/impl/handler_alloc_hook.ipp | 63 + .../include/boost/asio/impl/io_context.hpp | 446 ++ .../include/boost/asio/impl/io_context.ipp | 177 + .../boost/asio/impl/multiple_exceptions.ipp | 51 + libs/asio/include/boost/asio/impl/post.hpp | 254 ++ libs/asio/include/boost/asio/impl/read.hpp | 1216 +++++ libs/asio/include/boost/asio/impl/read_at.hpp | 746 ++++ .../include/boost/asio/impl/read_until.hpp | 3373 ++++++++++++++ .../boost/asio/impl/redirect_error.hpp | 393 ++ .../boost/asio/impl/serial_port_base.hpp | 61 + .../boost/asio/impl/serial_port_base.ipp | 556 +++ libs/asio/include/boost/asio/impl/spawn.hpp | 529 +++ libs/asio/include/boost/asio/impl/src.hpp | 85 + .../boost/asio/impl/system_context.hpp | 36 + .../boost/asio/impl/system_context.ipp | 94 + .../boost/asio/impl/system_executor.hpp | 187 + .../include/boost/asio/impl/thread_pool.hpp | 356 ++ .../include/boost/asio/impl/thread_pool.ipp | 143 + .../include/boost/asio/impl/use_awaitable.hpp | 281 ++ .../include/boost/asio/impl/use_future.hpp | 1030 +++++ libs/asio/include/boost/asio/impl/write.hpp | 1118 +++++ .../asio/include/boost/asio/impl/write_at.hpp | 668 +++ libs/asio/include/boost/asio/io_context.hpp | 1552 +++++++ .../include/boost/asio/io_context_strand.hpp | 378 ++ libs/asio/include/boost/asio/io_service.hpp | 35 + .../include/boost/asio/io_service_strand.hpp | 20 + libs/asio/include/boost/asio/ip/address.hpp | 292 ++ .../asio/include/boost/asio/ip/address_v4.hpp | 357 ++ .../boost/asio/ip/address_v4_iterator.hpp | 164 + .../boost/asio/ip/address_v4_range.hpp | 136 + .../asio/include/boost/asio/ip/address_v6.hpp | 384 ++ .../boost/asio/ip/address_v6_iterator.hpp | 185 + .../boost/asio/ip/address_v6_range.hpp | 131 + .../boost/asio/ip/bad_address_cast.hpp | 55 + .../include/boost/asio/ip/basic_endpoint.hpp | 293 ++ .../include/boost/asio/ip/basic_resolver.hpp | 1078 +++++ .../boost/asio/ip/basic_resolver_entry.hpp | 115 + .../boost/asio/ip/basic_resolver_iterator.hpp | 194 + .../boost/asio/ip/basic_resolver_query.hpp | 246 + .../boost/asio/ip/basic_resolver_results.hpp | 313 ++ .../include/boost/asio/ip/detail/endpoint.hpp | 143 + .../boost/asio/ip/detail/impl/endpoint.ipp | 201 + .../boost/asio/ip/detail/socket_option.hpp | 568 +++ libs/asio/include/boost/asio/ip/host_name.hpp | 44 + libs/asio/include/boost/asio/ip/icmp.hpp | 117 + .../include/boost/asio/ip/impl/address.hpp | 69 + .../include/boost/asio/ip/impl/address.ipp | 241 + .../include/boost/asio/ip/impl/address_v4.hpp | 69 + .../include/boost/asio/ip/impl/address_v4.ipp | 212 + .../include/boost/asio/ip/impl/address_v6.hpp | 69 + .../include/boost/asio/ip/impl/address_v6.ipp | 352 ++ .../boost/asio/ip/impl/basic_endpoint.hpp | 45 + .../include/boost/asio/ip/impl/host_name.ipp | 56 + .../include/boost/asio/ip/impl/network_v4.hpp | 56 + .../include/boost/asio/ip/impl/network_v4.ipp | 218 + .../include/boost/asio/ip/impl/network_v6.hpp | 55 + .../include/boost/asio/ip/impl/network_v6.ipp | 187 + libs/asio/include/boost/asio/ip/multicast.hpp | 193 + .../asio/include/boost/asio/ip/network_v4.hpp | 263 ++ .../asio/include/boost/asio/ip/network_v6.hpp | 237 + .../include/boost/asio/ip/resolver_base.hpp | 131 + .../boost/asio/ip/resolver_query_base.hpp | 45 + libs/asio/include/boost/asio/ip/tcp.hpp | 157 + libs/asio/include/boost/asio/ip/udp.hpp | 113 + libs/asio/include/boost/asio/ip/unicast.hpp | 72 + libs/asio/include/boost/asio/ip/v6_only.hpp | 71 + .../boost/asio/is_applicable_property.hpp | 63 + libs/asio/include/boost/asio/is_executor.hpp | 48 + .../include/boost/asio/is_read_buffered.hpp | 61 + .../include/boost/asio/is_write_buffered.hpp | 61 + .../boost/asio/local/basic_endpoint.hpp | 249 ++ .../include/boost/asio/local/connect_pair.hpp | 103 + .../boost/asio/local/datagram_protocol.hpp | 82 + .../boost/asio/local/detail/endpoint.hpp | 141 + .../boost/asio/local/detail/impl/endpoint.ipp | 138 + .../boost/asio/local/stream_protocol.hpp | 92 + .../boost/asio/multiple_exceptions.hpp | 60 + .../asio/include/boost/asio/packaged_task.hpp | 128 + libs/asio/include/boost/asio/placeholders.hpp | 153 + .../boost/asio/posix/basic_descriptor.hpp | 700 +++ .../asio/posix/basic_stream_descriptor.hpp | 483 ++ .../include/boost/asio/posix/descriptor.hpp | 39 + .../boost/asio/posix/descriptor_base.hpp | 92 + .../boost/asio/posix/stream_descriptor.hpp | 39 + libs/asio/include/boost/asio/post.hpp | 128 + libs/asio/include/boost/asio/prefer.hpp | 738 +++ libs/asio/include/boost/asio/query.hpp | 328 ++ libs/asio/include/boost/asio/read.hpp | 1302 ++++++ libs/asio/include/boost/asio/read_at.hpp | 696 +++ libs/asio/include/boost/asio/read_until.hpp | 2901 ++++++++++++ .../include/boost/asio/redirect_error.hpp | 68 + libs/asio/include/boost/asio/require.hpp | 575 +++ .../include/boost/asio/require_concept.hpp | 356 ++ libs/asio/include/boost/asio/serial_port.hpp | 38 + .../include/boost/asio/serial_port_base.hpp | 169 + libs/asio/include/boost/asio/signal_set.hpp | 30 + libs/asio/include/boost/asio/socket_base.hpp | 561 +++ libs/asio/include/boost/asio/spawn.hpp | 346 ++ libs/asio/include/boost/asio/ssl.hpp | 28 + libs/asio/include/boost/asio/ssl/context.hpp | 763 ++++ .../include/boost/asio/ssl/context_base.hpp | 211 + .../asio/ssl/detail/buffered_handshake_op.hpp | 121 + .../include/boost/asio/ssl/detail/engine.hpp | 167 + .../boost/asio/ssl/detail/handshake_op.hpp | 69 + .../boost/asio/ssl/detail/impl/engine.ipp | 351 ++ .../asio/ssl/detail/impl/openssl_init.ipp | 167 + .../asio/include/boost/asio/ssl/detail/io.hpp | 418 ++ .../boost/asio/ssl/detail/openssl_init.hpp | 103 + .../boost/asio/ssl/detail/openssl_types.hpp | 34 + .../asio/ssl/detail/password_callback.hpp | 68 + .../include/boost/asio/ssl/detail/read_op.hpp | 74 + .../boost/asio/ssl/detail/shutdown_op.hpp | 71 + .../boost/asio/ssl/detail/stream_core.hpp | 171 + .../boost/asio/ssl/detail/verify_callback.hpp | 64 + .../boost/asio/ssl/detail/write_op.hpp | 78 + libs/asio/include/boost/asio/ssl/error.hpp | 129 + .../boost/asio/ssl/host_name_verification.hpp | 92 + .../include/boost/asio/ssl/impl/context.hpp | 69 + .../include/boost/asio/ssl/impl/context.ipp | 1240 ++++++ .../include/boost/asio/ssl/impl/error.ipp | 104 + .../asio/ssl/impl/host_name_verification.ipp | 75 + .../asio/ssl/impl/rfc2818_verification.ipp | 166 + libs/asio/include/boost/asio/ssl/impl/src.hpp | 29 + .../boost/asio/ssl/rfc2818_verification.hpp | 100 + libs/asio/include/boost/asio/ssl/stream.hpp | 902 ++++ .../include/boost/asio/ssl/stream_base.hpp | 54 + .../include/boost/asio/ssl/verify_context.hpp | 69 + .../include/boost/asio/ssl/verify_mode.hpp | 65 + .../include/boost/asio/static_thread_pool.hpp | 33 + libs/asio/include/boost/asio/steady_timer.hpp | 44 + libs/asio/include/boost/asio/strand.hpp | 571 +++ libs/asio/include/boost/asio/streambuf.hpp | 35 + .../include/boost/asio/system_context.hpp | 92 + .../include/boost/asio/system_executor.hpp | 686 +++ libs/asio/include/boost/asio/system_timer.hpp | 44 + libs/asio/include/boost/asio/this_coro.hpp | 47 + libs/asio/include/boost/asio/thread_pool.hpp | 1133 +++++ libs/asio/include/boost/asio/time_traits.hpp | 88 + .../boost/asio/traits/bulk_execute_free.hpp | 116 + .../boost/asio/traits/bulk_execute_member.hpp | 116 + .../boost/asio/traits/connect_free.hpp | 114 + .../boost/asio/traits/connect_member.hpp | 114 + .../boost/asio/traits/equality_comparable.hpp | 106 + .../boost/asio/traits/execute_free.hpp | 110 + .../boost/asio/traits/execute_member.hpp | 110 + .../include/boost/asio/traits/prefer_free.hpp | 110 + .../boost/asio/traits/prefer_member.hpp | 110 + .../include/boost/asio/traits/query_free.hpp | 110 + .../boost/asio/traits/query_member.hpp | 110 + .../traits/query_static_constexpr_member.hpp | 110 + .../asio/traits/require_concept_free.hpp | 110 + .../asio/traits/require_concept_member.hpp | 110 + .../boost/asio/traits/require_free.hpp | 110 + .../boost/asio/traits/require_member.hpp | 110 + .../boost/asio/traits/schedule_free.hpp | 110 + .../boost/asio/traits/schedule_member.hpp | 110 + .../boost/asio/traits/set_done_free.hpp | 110 + .../boost/asio/traits/set_done_member.hpp | 110 + .../boost/asio/traits/set_error_free.hpp | 114 + .../boost/asio/traits/set_error_member.hpp | 114 + .../boost/asio/traits/set_value_free.hpp | 236 + .../boost/asio/traits/set_value_member.hpp | 236 + .../include/boost/asio/traits/start_free.hpp | 110 + .../boost/asio/traits/start_member.hpp | 110 + .../boost/asio/traits/static_query.hpp | 110 + .../boost/asio/traits/static_require.hpp | 125 + .../asio/traits/static_require_concept.hpp | 126 + .../include/boost/asio/traits/submit_free.hpp | 114 + .../boost/asio/traits/submit_member.hpp | 114 + libs/asio/include/boost/asio/ts/buffer.hpp | 24 + libs/asio/include/boost/asio/ts/executor.hpp | 35 + libs/asio/include/boost/asio/ts/internet.hpp | 40 + .../asio/include/boost/asio/ts/io_context.hpp | 20 + libs/asio/include/boost/asio/ts/net.hpp | 26 + libs/asio/include/boost/asio/ts/netfwd.hpp | 256 ++ libs/asio/include/boost/asio/ts/socket.hpp | 27 + libs/asio/include/boost/asio/ts/timer.hpp | 26 + libs/asio/include/boost/asio/unyield.hpp | 21 + .../asio/include/boost/asio/use_awaitable.hpp | 171 + libs/asio/include/boost/asio/use_future.hpp | 162 + .../asio/include/boost/asio/uses_executor.hpp | 73 + libs/asio/include/boost/asio/version.hpp | 23 + libs/asio/include/boost/asio/wait_traits.hpp | 58 + .../asio/windows/basic_object_handle.hpp | 437 ++ .../asio/windows/basic_overlapped_handle.hpp | 363 ++ .../windows/basic_random_access_handle.hpp | 492 ++ .../asio/windows/basic_stream_handle.hpp | 476 ++ .../boost/asio/windows/object_handle.hpp | 40 + .../boost/asio/windows/overlapped_handle.hpp | 41 + .../boost/asio/windows/overlapped_ptr.hpp | 147 + .../asio/windows/random_access_handle.hpp | 39 + .../boost/asio/windows/stream_handle.hpp | 39 + libs/asio/include/boost/asio/write.hpp | 1260 ++++++ libs/asio/include/boost/asio/write_at.hpp | 704 +++ libs/asio/include/boost/asio/yield.hpp | 23 + libs/asio/index.html | 0 libs/asio/meta/libraries.json | 3 +- libs/asio/test/Jamfile.v2 | 2 +- libs/asio/test/archetypes/async_ops.hpp | 2 +- libs/asio/test/archetypes/async_result.hpp | 2 +- .../archetypes/gettable_socket_option.hpp | 2 +- .../test/archetypes/io_control_command.hpp | 2 +- .../archetypes/settable_socket_option.hpp | 2 +- libs/asio/test/associated_allocator.cpp | 2 +- libs/asio/test/associated_executor.cpp | 2 +- libs/asio/test/async_result.cpp | 2 +- libs/asio/test/awaitable.cpp | 2 +- libs/asio/test/basic_datagram_socket.cpp | 2 +- libs/asio/test/basic_deadline_timer.cpp | 2 +- libs/asio/test/basic_raw_socket.cpp | 2 +- libs/asio/test/basic_seq_packet_socket.cpp | 2 +- libs/asio/test/basic_serial_port.cpp | 2 +- libs/asio/test/basic_signal_set.cpp | 2 +- libs/asio/test/basic_socket.cpp | 2 +- libs/asio/test/basic_socket_acceptor.cpp | 2 +- libs/asio/test/basic_stream_socket.cpp | 2 +- libs/asio/test/basic_streambuf.cpp | 2 +- libs/asio/test/basic_waitable_timer.cpp | 2 +- libs/asio/test/bind_executor.cpp | 2 +- libs/asio/test/buffer.cpp | 2 +- libs/asio/test/buffered_read_stream.cpp | 2 +- libs/asio/test/buffered_stream.cpp | 2 +- libs/asio/test/buffered_write_stream.cpp | 2 +- libs/asio/test/buffers_iterator.cpp | 2 +- libs/asio/test/co_spawn.cpp | 2 +- libs/asio/test/completion_condition.cpp | 2 +- libs/asio/test/compose.cpp | 2 +- libs/asio/test/connect.cpp | 2 +- libs/asio/test/coroutine.cpp | 2 +- libs/asio/test/deadline_timer.cpp | 2 +- libs/asio/test/defer.cpp | 2 +- libs/asio/test/detached.cpp | 2 +- libs/asio/test/dispatch.cpp | 2 +- libs/asio/test/error.cpp | 2 +- libs/asio/test/execution/Jamfile.v2 | 2 +- libs/asio/test/execution/any_executor.cpp | 2 +- libs/asio/test/execution/blocking.cpp | 2 +- .../test/execution/blocking_adaptation.cpp | 2 +- libs/asio/test/execution/bulk_execute.cpp | 2 +- libs/asio/test/execution/bulk_guarantee.cpp | 2 +- libs/asio/test/execution/connect.cpp | 2 +- libs/asio/test/execution/context_as.cpp | 2 +- libs/asio/test/execution/execute.cpp | 2 +- libs/asio/test/execution/executor.cpp | 2 +- .../test/execution/invocable_archetype.cpp | 2 +- libs/asio/test/execution/mapping.cpp | 2 +- libs/asio/test/execution/operation_state.cpp | 2 +- libs/asio/test/execution/outstanding_work.cpp | 2 +- libs/asio/test/execution/prefer_only.cpp | 2 +- libs/asio/test/execution/receiver.cpp | 2 +- libs/asio/test/execution/relationship.cpp | 2 +- libs/asio/test/execution/schedule.cpp | 2 +- libs/asio/test/execution/scheduler.cpp | 2 +- libs/asio/test/execution/sender.cpp | 2 +- libs/asio/test/execution/set_done.cpp | 2 +- libs/asio/test/execution/set_error.cpp | 2 +- libs/asio/test/execution/set_value.cpp | 2 +- libs/asio/test/execution/start.cpp | 2 +- libs/asio/test/execution/submit.cpp | 2 +- libs/asio/test/execution_context.cpp | 2 +- libs/asio/test/executor.cpp | 2 +- libs/asio/test/executor_work_guard.cpp | 2 +- libs/asio/test/generic/basic_endpoint.cpp | 2 +- libs/asio/test/generic/datagram_protocol.cpp | 2 +- libs/asio/test/generic/raw_protocol.cpp | 2 +- .../asio/test/generic/seq_packet_protocol.cpp | 2 +- libs/asio/test/generic/stream_protocol.cpp | 2 +- libs/asio/test/high_resolution_timer.cpp | 2 +- libs/asio/test/io_context.cpp | 2 +- libs/asio/test/io_context_strand.cpp | 2 +- libs/asio/test/ip/address.cpp | 7 +- libs/asio/test/ip/address_v4.cpp | 7 +- libs/asio/test/ip/address_v4_iterator.cpp | 2 +- libs/asio/test/ip/address_v4_range.cpp | 2 +- libs/asio/test/ip/address_v6.cpp | 7 +- libs/asio/test/ip/address_v6_iterator.cpp | 2 +- libs/asio/test/ip/address_v6_range.cpp | 2 +- libs/asio/test/ip/basic_endpoint.cpp | 2 +- libs/asio/test/ip/basic_resolver.cpp | 2 +- libs/asio/test/ip/basic_resolver_entry.cpp | 2 +- libs/asio/test/ip/basic_resolver_iterator.cpp | 2 +- libs/asio/test/ip/basic_resolver_query.cpp | 2 +- libs/asio/test/ip/host_name.cpp | 2 +- libs/asio/test/ip/icmp.cpp | 2 +- libs/asio/test/ip/multicast.cpp | 2 +- libs/asio/test/ip/network_v4.cpp | 2 +- libs/asio/test/ip/network_v6.cpp | 2 +- libs/asio/test/ip/resolver_query_base.cpp | 2 +- libs/asio/test/ip/tcp.cpp | 7 +- libs/asio/test/ip/udp.cpp | 2 +- libs/asio/test/ip/unicast.cpp | 2 +- libs/asio/test/ip/v6_only.cpp | 2 +- libs/asio/test/is_read_buffered.cpp | 2 +- libs/asio/test/is_write_buffered.cpp | 2 +- libs/asio/test/latency/Jamfile.v2 | 2 +- libs/asio/test/latency/allocator.hpp | 2 +- libs/asio/test/latency/high_res_clock.hpp | 2 +- libs/asio/test/latency/tcp_client.cpp | 2 +- libs/asio/test/latency/tcp_server.cpp | 2 +- libs/asio/test/latency/udp_client.cpp | 2 +- libs/asio/test/latency/udp_server.cpp | 2 +- libs/asio/test/local/basic_endpoint.cpp | 2 +- libs/asio/test/local/connect_pair.cpp | 2 +- libs/asio/test/local/datagram_protocol.cpp | 2 +- libs/asio/test/local/stream_protocol.cpp | 2 +- libs/asio/test/packaged_task.cpp | 2 +- libs/asio/test/placeholders.cpp | 2 +- libs/asio/test/posix/basic_descriptor.cpp | 2 +- .../test/posix/basic_stream_descriptor.cpp | 2 +- libs/asio/test/posix/descriptor.cpp | 2 +- libs/asio/test/posix/descriptor_base.cpp | 2 +- libs/asio/test/posix/stream_descriptor.cpp | 2 +- libs/asio/test/post.cpp | 2 +- libs/asio/test/properties/cpp03/Jamfile.v2 | 2 +- .../cpp03/can_prefer_free_prefer.cpp | 2 +- .../cpp03/can_prefer_free_require.cpp | 2 +- .../cpp03/can_prefer_member_prefer.cpp | 2 +- .../cpp03/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp03/can_prefer_static.cpp | 2 +- .../cpp03/can_prefer_unsupported.cpp | 2 +- .../test/properties/cpp03/can_query_free.cpp | 2 +- .../properties/cpp03/can_query_member.cpp | 2 +- .../cpp03/can_query_not_applicable_free.cpp | 2 +- .../cpp03/can_query_not_applicable_member.cpp | 2 +- .../cpp03/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp03/can_query_static.cpp | 2 +- .../cpp03/can_query_unsupported.cpp | 2 +- .../cpp03/can_require_concept_free.cpp | 2 +- .../cpp03/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp03/can_require_concept_static.cpp | 2 +- .../cpp03/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp03/can_require_free.cpp | 2 +- .../properties/cpp03/can_require_member.cpp | 2 +- .../cpp03/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp03/can_require_static.cpp | 2 +- .../cpp03/can_require_unsupported.cpp | 2 +- .../properties/cpp03/prefer_free_prefer.cpp | 2 +- .../properties/cpp03/prefer_free_require.cpp | 2 +- .../properties/cpp03/prefer_member_prefer.cpp | 2 +- .../cpp03/prefer_member_require.cpp | 2 +- .../test/properties/cpp03/prefer_static.cpp | 2 +- .../properties/cpp03/prefer_unsupported.cpp | 2 +- .../asio/test/properties/cpp03/query_free.cpp | 2 +- .../test/properties/cpp03/query_member.cpp | 2 +- .../test/properties/cpp03/query_static.cpp | 2 +- .../properties/cpp03/require_concept_free.cpp | 2 +- .../cpp03/require_concept_member.cpp | 2 +- .../cpp03/require_concept_static.cpp | 2 +- .../test/properties/cpp03/require_free.cpp | 2 +- .../test/properties/cpp03/require_member.cpp | 2 +- .../test/properties/cpp03/require_static.cpp | 2 +- libs/asio/test/properties/cpp11/Jamfile.v2 | 2 +- .../cpp11/can_prefer_free_prefer.cpp | 2 +- .../cpp11/can_prefer_free_require.cpp | 2 +- .../cpp11/can_prefer_member_prefer.cpp | 2 +- .../cpp11/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp11/can_prefer_static.cpp | 2 +- .../cpp11/can_prefer_unsupported.cpp | 2 +- .../test/properties/cpp11/can_query_free.cpp | 2 +- .../properties/cpp11/can_query_member.cpp | 2 +- .../cpp11/can_query_not_applicable_free.cpp | 2 +- .../cpp11/can_query_not_applicable_member.cpp | 2 +- .../cpp11/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp11/can_query_static.cpp | 2 +- .../cpp11/can_query_unsupported.cpp | 2 +- .../cpp11/can_require_concept_free.cpp | 2 +- .../cpp11/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp11/can_require_concept_static.cpp | 2 +- .../cpp11/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp11/can_require_free.cpp | 2 +- .../properties/cpp11/can_require_member.cpp | 2 +- .../cpp11/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp11/can_require_static.cpp | 2 +- .../cpp11/can_require_unsupported.cpp | 2 +- .../properties/cpp11/prefer_free_prefer.cpp | 2 +- .../properties/cpp11/prefer_free_require.cpp | 2 +- .../properties/cpp11/prefer_member_prefer.cpp | 2 +- .../cpp11/prefer_member_require.cpp | 2 +- .../test/properties/cpp11/prefer_static.cpp | 2 +- .../properties/cpp11/prefer_unsupported.cpp | 2 +- .../asio/test/properties/cpp11/query_free.cpp | 2 +- .../test/properties/cpp11/query_member.cpp | 2 +- .../test/properties/cpp11/query_static.cpp | 2 +- .../properties/cpp11/require_concept_free.cpp | 2 +- .../cpp11/require_concept_member.cpp | 2 +- .../cpp11/require_concept_static.cpp | 2 +- .../test/properties/cpp11/require_free.cpp | 2 +- .../test/properties/cpp11/require_member.cpp | 2 +- .../test/properties/cpp11/require_static.cpp | 2 +- libs/asio/test/properties/cpp14/Jamfile.v2 | 2 +- .../cpp14/can_prefer_free_prefer.cpp | 2 +- .../cpp14/can_prefer_free_require.cpp | 2 +- .../cpp14/can_prefer_member_prefer.cpp | 2 +- .../cpp14/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp14/can_prefer_static.cpp | 2 +- .../cpp14/can_prefer_unsupported.cpp | 2 +- .../test/properties/cpp14/can_query_free.cpp | 2 +- .../properties/cpp14/can_query_member.cpp | 2 +- .../cpp14/can_query_not_applicable_free.cpp | 2 +- .../cpp14/can_query_not_applicable_member.cpp | 2 +- .../cpp14/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp14/can_query_static.cpp | 2 +- .../cpp14/can_query_unsupported.cpp | 2 +- .../cpp14/can_require_concept_free.cpp | 2 +- .../cpp14/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp14/can_require_concept_static.cpp | 2 +- .../cpp14/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp14/can_require_free.cpp | 2 +- .../properties/cpp14/can_require_member.cpp | 2 +- .../cpp14/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp14/can_require_static.cpp | 2 +- .../cpp14/can_require_unsupported.cpp | 2 +- .../properties/cpp14/prefer_free_prefer.cpp | 2 +- .../properties/cpp14/prefer_free_require.cpp | 2 +- .../properties/cpp14/prefer_member_prefer.cpp | 2 +- .../cpp14/prefer_member_require.cpp | 2 +- .../test/properties/cpp14/prefer_static.cpp | 2 +- .../properties/cpp14/prefer_unsupported.cpp | 2 +- .../asio/test/properties/cpp14/query_free.cpp | 2 +- .../test/properties/cpp14/query_member.cpp | 2 +- .../test/properties/cpp14/query_static.cpp | 2 +- .../properties/cpp14/require_concept_free.cpp | 2 +- .../cpp14/require_concept_member.cpp | 2 +- .../cpp14/require_concept_static.cpp | 2 +- .../test/properties/cpp14/require_free.cpp | 2 +- .../test/properties/cpp14/require_member.cpp | 2 +- .../test/properties/cpp14/require_static.cpp | 2 +- libs/asio/test/read.cpp | 2 +- libs/asio/test/read_at.cpp | 2 +- libs/asio/test/read_until.cpp | 2 +- libs/asio/test/redirect_error.cpp | 2 +- libs/asio/test/serial_port.cpp | 2 +- libs/asio/test/serial_port_base.cpp | 2 +- libs/asio/test/signal_set.cpp | 2 +- libs/asio/test/socket_base.cpp | 2 +- libs/asio/test/ssl/Jamfile.v2 | 2 +- libs/asio/test/ssl/context.cpp | 2 +- libs/asio/test/ssl/context_base.cpp | 2 +- libs/asio/test/ssl/error.cpp | 2 +- libs/asio/test/ssl/host_name_verification.cpp | 2 +- libs/asio/test/ssl/rfc2818_verification.cpp | 2 +- libs/asio/test/ssl/stream.cpp | 2 +- libs/asio/test/ssl/stream_base.cpp | 2 +- libs/asio/test/static_thread_pool.cpp | 2 +- libs/asio/test/steady_timer.cpp | 2 +- libs/asio/test/strand.cpp | 2 +- libs/asio/test/streambuf.cpp | 2 +- libs/asio/test/system_context.cpp | 2 +- libs/asio/test/system_executor.cpp | 2 +- libs/asio/test/system_timer.cpp | 2 +- libs/asio/test/this_coro.cpp | 2 +- libs/asio/test/thread_pool.cpp | 10 +- libs/asio/test/time_traits.cpp | 2 +- libs/asio/test/ts/buffer.cpp | 2 +- libs/asio/test/ts/executor.cpp | 2 +- libs/asio/test/ts/internet.cpp | 2 +- libs/asio/test/ts/io_context.cpp | 2 +- libs/asio/test/ts/net.cpp | 2 +- libs/asio/test/ts/netfwd.cpp | 2 +- libs/asio/test/ts/socket.cpp | 2 +- libs/asio/test/ts/timer.cpp | 2 +- libs/asio/test/unit_test.hpp | 2 +- libs/asio/test/use_awaitable.cpp | 2 +- libs/asio/test/use_future.cpp | 2 +- libs/asio/test/uses_executor.cpp | 2 +- libs/asio/test/wait_traits.cpp | 2 +- .../asio/test/windows/basic_object_handle.cpp | 2 +- .../test/windows/basic_overlapped_handle.cpp | 2 +- .../windows/basic_random_access_handle.cpp | 2 +- .../asio/test/windows/basic_stream_handle.cpp | 2 +- libs/asio/test/windows/object_handle.cpp | 2 +- libs/asio/test/windows/overlapped_handle.cpp | 2 +- libs/asio/test/windows/overlapped_ptr.cpp | 2 +- .../test/windows/random_access_handle.cpp | 2 +- libs/asio/test/windows/stream_handle.cpp | 2 +- libs/asio/test/write.cpp | 2 +- libs/asio/test/write_at.cpp | 2 +- libs/asio/tools/handlerlive.pl | 2 +- libs/asio/tools/handlertree.pl | 2 +- libs/asio/tools/handlerviz.pl | 2 +- libs/beast/CHANGELOG.md | 116 + libs/beast/CMakeLists.txt | 16 +- libs/beast/CONTRIBUTING.md | 0 libs/beast/Jamfile | 0 libs/beast/LICENSE_1_0.txt | 0 libs/beast/README.md | 10 +- libs/beast/appveyor.yml | 54 + libs/beast/azure-pipelines.yml | 0 libs/beast/doc/.gitignore | 4 + libs/beast/doc/Jamfile | 32 +- libs/beast/doc/images/message.png | Bin libs/beast/doc/images/readme2.png | Bin libs/beast/doc/qbk/01_intro/1_quick_look.qbk | 0 libs/beast/doc/qbk/01_intro/1a_bishop_fox.qbk | 12 +- libs/beast/doc/qbk/01_intro/1b_autobahn.qbk | 0 libs/beast/doc/qbk/01_intro/_intro.qbk | 0 libs/beast/doc/qbk/02_examples/_examples.qbk | 0 libs/beast/doc/qbk/03_core/1_refresher.qbk | 0 libs/beast/doc/qbk/03_core/2_streams.qbk | 0 libs/beast/doc/qbk/03_core/3_timeouts.qbk | 0 libs/beast/doc/qbk/03_core/4__layers.qbk | 0 libs/beast/doc/qbk/03_core/5_buffers.qbk | 0 libs/beast/doc/qbk/03_core/6_files.qbk | 0 libs/beast/doc/qbk/03_core/7_composed.qbk | 0 libs/beast/doc/qbk/03_core/7a_echo.qbk | 0 libs/beast/doc/qbk/03_core/7b_detect_ssl.qbk | 0 libs/beast/doc/qbk/03_core/8_conf_macros.qbk | 0 libs/beast/doc/qbk/03_core/_core.qbk | 0 libs/beast/doc/qbk/04_http/01_primer.qbk | 0 libs/beast/doc/qbk/04_http/02_message.qbk | 0 libs/beast/doc/qbk/04_http/03_streams.qbk | 0 .../doc/qbk/04_http/04_serializer_streams.qbk | 0 .../doc/qbk/04_http/05_parser_streams.qbk | 0 .../doc/qbk/04_http/06_serializer_buffers.qbk | 0 .../doc/qbk/04_http/07_parser_buffers.qbk | 0 .../doc/qbk/04_http/08_chunked_encoding.qbk | 0 libs/beast/doc/qbk/04_http/09_custom_body.qbk | 0 .../doc/qbk/04_http/10_custom_parsers.qbk | 0 libs/beast/doc/qbk/04_http/_http.qbk | 0 .../qbk/05_http_examples/_http_examples.qbk | 0 .../doc/qbk/06_websocket/01_connecting.qbk | 0 .../doc/qbk/06_websocket/02_handshaking.qbk | 0 .../doc/qbk/06_websocket/03_decorator.qbk | 0 .../doc/qbk/06_websocket/04_messages.qbk | 0 .../qbk/06_websocket/05_control_frames.qbk | 0 .../doc/qbk/06_websocket/06_timeouts.qbk | 0 .../doc/qbk/06_websocket/07_teardown.qbk | 0 libs/beast/doc/qbk/06_websocket/08_notes.qbk | 0 .../beast/doc/qbk/06_websocket/_websocket.qbk | 0 libs/beast/doc/qbk/07_concepts/Body.qbk | 0 libs/beast/doc/qbk/07_concepts/BodyReader.qbk | 0 libs/beast/doc/qbk/07_concepts/BodyWriter.qbk | 0 .../doc/qbk/07_concepts/BufferSequence.qbk | 0 .../doc/qbk/07_concepts/DynamicBuffer.qbk | 0 libs/beast/doc/qbk/07_concepts/Fields.qbk | 0 .../doc/qbk/07_concepts/FieldsWriter.qbk | 0 libs/beast/doc/qbk/07_concepts/File.qbk | 0 libs/beast/doc/qbk/07_concepts/RatePolicy.qbk | 0 libs/beast/doc/qbk/07_concepts/Streams.qbk | 0 libs/beast/doc/qbk/07_concepts/_concepts.qbk | 0 .../doc/qbk/08_design/1_http_message.qbk | 0 .../doc/qbk/08_design/2_http_comparison.qbk | 0 .../doc/qbk/08_design/3_websocket_zaphoyd.qbk | 0 libs/beast/doc/qbk/08_design/4_faq.qbk | 0 libs/beast/doc/qbk/08_design/_design.qbk | 0 libs/beast/doc/qbk/index.xml | 0 libs/beast/doc/qbk/main.qbk | 0 libs/beast/doc/qbk/quickref.xml | 0 libs/beast/doc/qbk/release_notes.qbk | 48 + libs/beast/doc/source.dox | 0 libs/beast/doc/xsl/custom-overrides.xsl | 18 + libs/beast/example/CMakeLists.txt | 0 libs/beast/example/Jamfile | 0 libs/beast/example/advanced/CMakeLists.txt | 0 libs/beast/example/advanced/Jamfile | 0 .../advanced/server-flex/CMakeLists.txt | 0 .../example/advanced/server-flex/Jamfile | 0 .../server-flex/advanced_server_flex.cpp | 2 +- .../example/advanced/server/CMakeLists.txt | 0 libs/beast/example/advanced/server/Jamfile | 0 .../advanced/server/advanced_server.cpp | 0 .../example/common/root_certificates.hpp | 0 .../example/common/server_certificate.hpp | 0 libs/beast/example/doc/http_examples.hpp | 0 libs/beast/example/echo-op/CMakeLists.txt | 0 libs/beast/example/echo-op/Jamfile | 0 libs/beast/example/echo-op/echo_op.cpp | 0 libs/beast/example/http/CMakeLists.txt | 0 libs/beast/example/http/Jamfile | 0 libs/beast/example/http/client/CMakeLists.txt | 0 libs/beast/example/http/client/Jamfile | 0 .../async-ssl-system-executor/CMakeLists.txt | 0 .../client/async-ssl-system-executor/Jamfile | 0 .../http_client_async_ssl_system_executor.cpp | 0 .../http/client/async-ssl/CMakeLists.txt | 0 .../example/http/client/async-ssl/Jamfile | 0 .../async-ssl/http_client_async_ssl.cpp | 0 .../example/http/client/async/CMakeLists.txt | 0 libs/beast/example/http/client/async/Jamfile | 0 .../http/client/async/http_client_async.cpp | 0 .../http/client/coro-ssl/CMakeLists.txt | 0 .../example/http/client/coro-ssl/Jamfile | 0 .../client/coro-ssl/http_client_coro_ssl.cpp | 0 .../example/http/client/coro/CMakeLists.txt | 0 libs/beast/example/http/client/coro/Jamfile | 0 .../http/client/coro/http_client_coro.cpp | 0 .../example/http/client/crawl/CMakeLists.txt | 0 libs/beast/example/http/client/crawl/Jamfile | 0 .../example/http/client/crawl/http_crawl.cpp | 0 .../http/client/crawl/urls_large_data.cpp | 0 .../http/client/crawl/urls_large_data.hpp | 0 .../http/client/sync-ssl/CMakeLists.txt | 0 .../example/http/client/sync-ssl/Jamfile | 0 .../client/sync-ssl/http_client_sync_ssl.cpp | 0 .../example/http/client/sync/CMakeLists.txt | 0 libs/beast/example/http/client/sync/Jamfile | 0 .../http/client/sync/http_client_sync.cpp | 0 libs/beast/example/http/server/CMakeLists.txt | 0 libs/beast/example/http/server/Jamfile | 0 .../http/server/async-ssl/CMakeLists.txt | 0 .../example/http/server/async-ssl/Jamfile | 0 .../async-ssl/http_server_async_ssl.cpp | 0 .../example/http/server/async/CMakeLists.txt | 0 libs/beast/example/http/server/async/Jamfile | 0 .../http/server/async/http_server_async.cpp | 0 .../http/server/coro-ssl/CMakeLists.txt | 0 .../example/http/server/coro-ssl/Jamfile | 0 .../server/coro-ssl/http_server_coro_ssl.cpp | 0 .../example/http/server/coro/CMakeLists.txt | 0 libs/beast/example/http/server/coro/Jamfile | 0 .../http/server/coro/http_server_coro.cpp | 0 .../example/http/server/fast/CMakeLists.txt | 0 libs/beast/example/http/server/fast/Jamfile | 0 .../example/http/server/fast/fields_alloc.hpp | 0 .../http/server/fast/http_server_fast.cpp | 3 +- .../example/http/server/flex/CMakeLists.txt | 0 libs/beast/example/http/server/flex/Jamfile | 0 .../http/server/flex/http_server_flex.cpp | 0 .../example/http/server/small/CMakeLists.txt | 0 libs/beast/example/http/server/small/Jamfile | 0 .../http/server/small/http_server_small.cpp | 0 .../http/server/stackless-ssl/CMakeLists.txt | 0 .../example/http/server/stackless-ssl/Jamfile | 0 .../http_server_stackless_ssl.cpp | 0 .../http/server/stackless/CMakeLists.txt | 0 .../example/http/server/stackless/Jamfile | 0 .../stackless/http_server_stackless.cpp | 0 .../http/server/sync-ssl/CMakeLists.txt | 0 .../example/http/server/sync-ssl/Jamfile | 0 .../server/sync-ssl/http_server_sync_ssl.cpp | 0 .../example/http/server/sync/CMakeLists.txt | 0 libs/beast/example/http/server/sync/Jamfile | 0 .../http/server/sync/http_server_sync.cpp | 0 libs/beast/example/websocket/CMakeLists.txt | 0 libs/beast/example/websocket/Jamfile | 0 .../example/websocket/client/CMakeLists.txt | 0 libs/beast/example/websocket/client/Jamfile | 0 .../async-ssl-system-executor/CMakeLists.txt | 0 .../client/async-ssl-system-executor/Jamfile | 0 ...ocket_client_async_ssl_system_executor.cpp | 10 + .../websocket/client/async-ssl/CMakeLists.txt | 0 .../websocket/client/async-ssl/Jamfile | 0 .../async-ssl/websocket_client_async_ssl.cpp | 10 + .../websocket/client/async/CMakeLists.txt | 0 .../example/websocket/client/async/Jamfile | 0 .../client/async/websocket_client_async.cpp | 0 .../websocket/client/coro-ssl/CMakeLists.txt | 0 .../example/websocket/client/coro-ssl/Jamfile | 0 .../coro-ssl/websocket_client_coro_ssl.cpp | 12 +- .../websocket/client/coro/CMakeLists.txt | 0 .../example/websocket/client/coro/Jamfile | 0 .../client/coro/websocket_client_coro.cpp | 0 .../websocket/client/sync-ssl/CMakeLists.txt | 0 .../example/websocket/client/sync-ssl/Jamfile | 0 .../sync-ssl/websocket_client_sync_ssl.cpp | 8 + .../websocket/client/sync/CMakeLists.txt | 0 .../example/websocket/client/sync/Jamfile | 0 .../client/sync/websocket_client_sync.cpp | 0 .../example/websocket/server/CMakeLists.txt | 0 libs/beast/example/websocket/server/Jamfile | 0 .../websocket/server/async-ssl/CMakeLists.txt | 0 .../websocket/server/async-ssl/Jamfile | 0 .../async-ssl/websocket_server_async_ssl.cpp | 0 .../websocket/server/async/CMakeLists.txt | 0 .../example/websocket/server/async/Jamfile | 0 .../server/async/websocket_server_async.cpp | 0 .../server/chat-multi/CMakeLists.txt | 0 .../websocket/server/chat-multi/Jamfile | 0 .../websocket/server/chat-multi/beast.hpp | 0 .../server/chat-multi/chat_client.html | 0 .../server/chat-multi/http_session.cpp | 0 .../server/chat-multi/http_session.hpp | 0 .../websocket/server/chat-multi/listener.cpp | 0 .../websocket/server/chat-multi/listener.hpp | 0 .../websocket/server/chat-multi/main.cpp | 0 .../websocket/server/chat-multi/net.hpp | 0 .../server/chat-multi/shared_state.cpp | 0 .../server/chat-multi/shared_state.hpp | 0 .../server/chat-multi/websocket_session.cpp | 0 .../server/chat-multi/websocket_session.hpp | 0 .../websocket/server/coro-ssl/CMakeLists.txt | 0 .../example/websocket/server/coro-ssl/Jamfile | 0 .../coro-ssl/websocket_server_coro_ssl.cpp | 0 .../websocket/server/coro/CMakeLists.txt | 0 .../example/websocket/server/coro/Jamfile | 0 .../server/coro/websocket_server_coro.cpp | 0 .../websocket/server/fast/CMakeLists.txt | 0 .../example/websocket/server/fast/Jamfile | 0 .../server/fast/websocket_server_fast.cpp | 0 .../server/stackless-ssl/CMakeLists.txt | 0 .../websocket/server/stackless-ssl/Jamfile | 0 .../websocket_server_stackless_ssl.cpp | 0 .../websocket/server/stackless/CMakeLists.txt | 0 .../websocket/server/stackless/Jamfile | 0 .../stackless/websocket_server_stackless.cpp | 0 .../websocket/server/sync-ssl/CMakeLists.txt | 0 .../example/websocket/server/sync-ssl/Jamfile | 0 .../sync-ssl/websocket_server_sync_ssl.cpp | 0 .../websocket/server/sync/CMakeLists.txt | 0 .../example/websocket/server/sync/Jamfile | 0 .../server/sync/websocket_server_sync.cpp | 0 libs/beast/include/boost/beast.hpp | 21 + .../beast/_experimental/http/icy_stream.hpp | 325 ++ .../_experimental/http/impl/icy_stream.hpp | 352 ++ .../test/detail/stream_state.hpp | 135 + .../test/detail/stream_state.ipp | 149 + .../boost/beast/_experimental/test/error.hpp | 40 + .../beast/_experimental/test/fail_count.hpp | 70 + .../beast/_experimental/test/handler.hpp | 188 + .../beast/_experimental/test/impl/error.hpp | 40 + .../beast/_experimental/test/impl/error.ipp | 65 + .../_experimental/test/impl/fail_count.ipp | 58 + .../beast/_experimental/test/impl/stream.hpp | 499 +++ .../beast/_experimental/test/impl/stream.ipp | 276 ++ .../boost/beast/_experimental/test/stream.hpp | 622 +++ .../boost/beast/_experimental/test/tcp.hpp | 77 + .../beast/_experimental/unit_test/amount.hpp | 59 + .../unit_test/detail/const_container.hpp | 95 + .../beast/_experimental/unit_test/dstream.hpp | 131 + .../_experimental/unit_test/global_suites.hpp | 55 + .../beast/_experimental/unit_test/main.ipp | 87 + .../beast/_experimental/unit_test/match.hpp | 177 + .../_experimental/unit_test/recorder.hpp | 93 + .../_experimental/unit_test/reporter.hpp | 292 ++ .../beast/_experimental/unit_test/results.hpp | 246 + .../beast/_experimental/unit_test/runner.hpp | 292 ++ .../beast/_experimental/unit_test/suite.hpp | 725 +++ .../_experimental/unit_test/suite_info.hpp | 126 + .../_experimental/unit_test/suite_list.hpp | 81 + libs/beast/include/boost/beast/core.hpp | 50 + .../include/boost/beast/core/async_base.hpp | 726 +++ .../include/boost/beast/core/basic_stream.hpp | 1460 ++++++ .../include/boost/beast/core/bind_handler.hpp | 132 + .../boost/beast/core/buffer_traits.hpp | 164 + .../boost/beast/core/buffered_read_stream.hpp | 359 ++ .../boost/beast/core/buffers_adaptor.hpp | 234 + .../include/boost/beast/core/buffers_cat.hpp | 105 + .../boost/beast/core/buffers_prefix.hpp | 201 + .../boost/beast/core/buffers_range.hpp | 128 + .../boost/beast/core/buffers_suffix.hpp | 146 + .../boost/beast/core/buffers_to_string.hpp | 62 + .../boost/beast/core/detail/allocator.hpp | 42 + .../boost/beast/core/detail/async_base.hpp | 46 + .../boost/beast/core/detail/base64.hpp | 88 + .../boost/beast/core/detail/base64.ipp | 202 + .../beast/core/detail/bind_continuation.hpp | 110 + .../core/detail/bind_default_executor.hpp | 121 + .../boost/beast/core/detail/bind_handler.hpp | 416 ++ .../boost/beast/core/detail/buffer.hpp | 84 + .../boost/beast/core/detail/buffer_traits.hpp | 98 + .../boost/beast/core/detail/buffers_pair.hpp | 115 + .../core/detail/buffers_range_adaptor.hpp | 133 + .../boost/beast/core/detail/buffers_ref.hpp | 71 + .../boost/beast/core/detail/chacha.hpp | 126 + .../boost/beast/core/detail/char_buffer.hpp | 78 + .../include/boost/beast/core/detail/clamp.hpp | 59 + .../boost/beast/core/detail/config.hpp | 104 + .../boost/beast/core/detail/cpu_info.hpp | 99 + .../boost/beast/core/detail/flat_stream.hpp | 73 + .../beast/core/detail/get_io_context.hpp | 109 + .../boost/beast/core/detail/impl/read.hpp | 249 ++ .../core/detail/impl/temporary_buffer.ipp | 69 + .../boost/beast/core/detail/is_invocable.hpp | 80 + .../boost/beast/core/detail/ostream.hpp | 267 ++ .../include/boost/beast/core/detail/pcg.hpp | 65 + .../include/boost/beast/core/detail/read.hpp | 245 + .../beast/core/detail/remap_post_to_defer.hpp | 108 + .../boost/beast/core/detail/service_base.hpp | 38 + .../include/boost/beast/core/detail/sha1.hpp | 75 + .../include/boost/beast/core/detail/sha1.ipp | 301 ++ .../boost/beast/core/detail/static_const.hpp | 49 + .../beast/core/detail/static_ostream.hpp | 142 + .../boost/beast/core/detail/static_string.hpp | 133 + .../boost/beast/core/detail/stream_base.hpp | 138 + .../boost/beast/core/detail/stream_traits.hpp | 111 + .../boost/beast/core/detail/string.hpp | 44 + .../beast/core/detail/temporary_buffer.hpp | 83 + .../include/boost/beast/core/detail/tuple.hpp | 116 + .../boost/beast/core/detail/type_traits.hpp | 115 + .../boost/beast/core/detail/variant.hpp | 235 + .../boost/beast/core/detail/varint.hpp | 79 + .../beast/core/detail/win32_unicode_path.hpp | 82 + .../boost/beast/core/detail/work_guard.hpp | 93 + .../include/boost/beast/core/detect_ssl.hpp | 671 +++ libs/beast/include/boost/beast/core/error.hpp | 88 + libs/beast/include/boost/beast/core/file.hpp | 44 + .../include/boost/beast/core/file_base.hpp | 164 + .../include/boost/beast/core/file_posix.hpp | 193 + .../include/boost/beast/core/file_stdio.hpp | 171 + .../include/boost/beast/core/file_win32.hpp | 190 + .../include/boost/beast/core/flat_buffer.hpp | 530 +++ .../boost/beast/core/flat_static_buffer.hpp | 317 ++ .../include/boost/beast/core/flat_stream.hpp | 351 ++ .../boost/beast/core/impl/async_base.hpp | 155 + .../boost/beast/core/impl/basic_stream.hpp | 1051 +++++ .../beast/core/impl/buffered_read_stream.hpp | 242 + .../boost/beast/core/impl/buffers_adaptor.hpp | 707 +++ .../boost/beast/core/impl/buffers_cat.hpp | 470 ++ .../boost/beast/core/impl/buffers_prefix.hpp | 326 ++ .../boost/beast/core/impl/buffers_suffix.hpp | 225 + .../include/boost/beast/core/impl/error.hpp | 44 + .../include/boost/beast/core/impl/error.ipp | 99 + .../boost/beast/core/impl/file_posix.ipp | 331 ++ .../boost/beast/core/impl/file_stdio.ipp | 325 ++ .../boost/beast/core/impl/file_win32.ipp | 357 ++ .../boost/beast/core/impl/flat_buffer.hpp | 544 +++ .../beast/core/impl/flat_static_buffer.hpp | 43 + .../beast/core/impl/flat_static_buffer.ipp | 89 + .../boost/beast/core/impl/flat_stream.hpp | 284 ++ .../boost/beast/core/impl/multi_buffer.hpp | 1286 ++++++ .../boost/beast/core/impl/read_size.hpp | 83 + .../boost/beast/core/impl/saved_handler.hpp | 164 + .../boost/beast/core/impl/saved_handler.ipp | 76 + .../boost/beast/core/impl/static_buffer.hpp | 45 + .../boost/beast/core/impl/static_buffer.ipp | 129 + .../boost/beast/core/impl/static_string.hpp | 583 +++ .../include/boost/beast/core/impl/string.ipp | 73 + .../boost/beast/core/impl/string_param.hpp | 108 + .../boost/beast/core/make_printable.hpp | 107 + .../include/boost/beast/core/multi_buffer.hpp | 594 +++ .../include/boost/beast/core/ostream.hpp | 90 + .../include/boost/beast/core/rate_policy.hpp | 220 + .../include/boost/beast/core/read_size.hpp | 63 + libs/beast/include/boost/beast/core/role.hpp | 50 + .../boost/beast/core/saved_handler.hpp | 137 + libs/beast/include/boost/beast/core/span.hpp | 215 + .../boost/beast/core/static_buffer.hpp | 294 ++ .../boost/beast/core/static_string.hpp | 1113 +++++ .../boost/beast/core/stream_traits.hpp | 544 +++ .../beast/include/boost/beast/core/string.hpp | 80 + .../include/boost/beast/core/string_param.hpp | 134 + .../include/boost/beast/core/string_type.hpp | 45 + .../include/boost/beast/core/tcp_stream.hpp | 34 + libs/beast/include/boost/beast/http.hpp | 39 + .../boost/beast/http/basic_dynamic_body.hpp | 161 + .../boost/beast/http/basic_file_body.hpp | 550 +++ .../include/boost/beast/http/basic_parser.hpp | 699 +++ .../include/boost/beast/http/buffer_body.hpp | 226 + .../include/boost/beast/http/chunk_encode.hpp | 737 +++ .../beast/http/detail/basic_parsed_list.hpp | 197 + .../boost/beast/http/detail/basic_parser.hpp | 206 + .../boost/beast/http/detail/basic_parser.ipp | 849 ++++ .../boost/beast/http/detail/chunk_encode.hpp | 224 + .../boost/beast/http/detail/rfc7230.hpp | 106 + .../boost/beast/http/detail/rfc7230.ipp | 390 ++ .../boost/beast/http/detail/type_traits.hpp | 202 + .../include/boost/beast/http/dynamic_body.hpp | 30 + .../include/boost/beast/http/empty_body.hpp | 131 + libs/beast/include/boost/beast/http/error.hpp | 176 + libs/beast/include/boost/beast/http/field.hpp | 414 ++ .../beast/include/boost/beast/http/fields.hpp | 788 ++++ .../include/boost/beast/http/file_body.hpp | 37 + .../boost/beast/http/impl/basic_parser.hpp | 88 + .../boost/beast/http/impl/basic_parser.ipp | 906 ++++ .../boost/beast/http/impl/chunk_encode.hpp | 706 +++ .../include/boost/beast/http/impl/error.hpp | 37 + .../include/boost/beast/http/impl/error.ipp | 105 + .../include/boost/beast/http/impl/field.ipp | 585 +++ .../include/boost/beast/http/impl/fields.hpp | 1214 +++++ .../include/boost/beast/http/impl/fields.ipp | 138 + .../boost/beast/http/impl/file_body_win32.hpp | 626 +++ .../include/boost/beast/http/impl/message.hpp | 428 ++ .../include/boost/beast/http/impl/parser.hpp | 58 + .../include/boost/beast/http/impl/read.hpp | 712 +++ .../include/boost/beast/http/impl/rfc7230.hpp | 389 ++ .../include/boost/beast/http/impl/rfc7230.ipp | 207 + .../boost/beast/http/impl/serializer.hpp | 431 ++ .../include/boost/beast/http/impl/status.ipp | 222 + .../include/boost/beast/http/impl/verb.ipp | 303 ++ .../include/boost/beast/http/impl/write.hpp | 980 ++++ .../include/boost/beast/http/message.hpp | 1008 +++++ .../beast/include/boost/beast/http/parser.hpp | 505 +++ libs/beast/include/boost/beast/http/read.hpp | 826 ++++ .../include/boost/beast/http/rfc7230.hpp | 329 ++ .../include/boost/beast/http/serializer.hpp | 370 ++ .../include/boost/beast/http/span_body.hpp | 170 + .../beast/include/boost/beast/http/status.hpp | 183 + .../include/boost/beast/http/string_body.hpp | 186 + .../include/boost/beast/http/type_traits.hpp | 234 + .../include/boost/beast/http/vector_body.hpp | 170 + libs/beast/include/boost/beast/http/verb.hpp | 161 + libs/beast/include/boost/beast/http/write.hpp | 763 ++++ libs/beast/include/boost/beast/src.hpp | 67 + libs/beast/include/boost/beast/ssl.hpp | 17 + .../include/boost/beast/ssl/ssl_stream.hpp | 700 +++ libs/beast/include/boost/beast/version.hpp | 28 + libs/beast/include/boost/beast/websocket.hpp | 23 + .../beast/websocket/detail/decorator.hpp | 314 ++ .../boost/beast/websocket/detail/frame.hpp | 247 + .../boost/beast/websocket/detail/hybi13.hpp | 48 + .../boost/beast/websocket/detail/hybi13.ipp | 62 + .../beast/websocket/detail/impl_base.hpp | 487 ++ .../boost/beast/websocket/detail/mask.hpp | 63 + .../boost/beast/websocket/detail/mask.ipp | 66 + .../beast/websocket/detail/pmd_extension.hpp | 125 + .../beast/websocket/detail/pmd_extension.ipp | 310 ++ .../boost/beast/websocket/detail/prng.hpp | 50 + .../boost/beast/websocket/detail/prng.ipp | 151 + .../boost/beast/websocket/detail/service.hpp | 78 + .../boost/beast/websocket/detail/service.ipp | 65 + .../beast/websocket/detail/soft_mutex.hpp | 112 + .../beast/websocket/detail/type_traits.hpp | 36 + .../beast/websocket/detail/utf8_checker.hpp | 96 + .../beast/websocket/detail/utf8_checker.ipp | 331 ++ .../include/boost/beast/websocket/error.hpp | 256 ++ .../boost/beast/websocket/impl/accept.hpp | 633 +++ .../boost/beast/websocket/impl/close.hpp | 453 ++ .../boost/beast/websocket/impl/error.hpp | 44 + .../boost/beast/websocket/impl/error.ipp | 160 + .../boost/beast/websocket/impl/handshake.hpp | 399 ++ .../boost/beast/websocket/impl/ping.hpp | 365 ++ .../boost/beast/websocket/impl/read.hpp | 1386 ++++++ .../boost/beast/websocket/impl/rfc6455.hpp | 40 + .../boost/beast/websocket/impl/ssl.hpp | 109 + .../boost/beast/websocket/impl/stream.hpp | 351 ++ .../beast/websocket/impl/stream_impl.hpp | 992 +++++ .../boost/beast/websocket/impl/teardown.hpp | 213 + .../boost/beast/websocket/impl/write.hpp | 898 ++++ .../include/boost/beast/websocket/option.hpp | 64 + .../include/boost/beast/websocket/rfc6455.hpp | 223 + .../include/boost/beast/websocket/ssl.hpp | 84 + .../include/boost/beast/websocket/stream.hpp | 2648 +++++++++++ .../boost/beast/websocket/stream_base.hpp | 178 + .../boost/beast/websocket/stream_fwd.hpp | 32 + .../boost/beast/websocket/teardown.hpp | 183 + libs/beast/include/boost/beast/zlib.hpp | 20 + .../boost/beast/zlib/deflate_stream.hpp | 404 ++ .../boost/beast/zlib/detail/bitstream.hpp | 201 + .../beast/zlib/detail/deflate_stream.hpp | 727 +++ .../beast/zlib/detail/deflate_stream.ipp | 2295 ++++++++++ .../beast/zlib/detail/inflate_stream.hpp | 251 ++ .../beast/zlib/detail/inflate_stream.ipp | 1118 +++++ .../boost/beast/zlib/detail/ranges.hpp | 102 + .../boost/beast/zlib/detail/window.hpp | 151 + libs/beast/include/boost/beast/zlib/error.hpp | 152 + .../include/boost/beast/zlib/impl/error.hpp | 63 + .../include/boost/beast/zlib/impl/error.ipp | 124 + .../boost/beast/zlib/inflate_stream.hpp | 219 + libs/beast/include/boost/beast/zlib/zlib.hpp | 183 + libs/beast/index.html | 0 libs/beast/meta/explicit-failures-markup.xml | 0 libs/beast/meta/libraries.json | 3 +- libs/beast/test/CMakeLists.txt | 0 libs/beast/test/Jamfile | 0 libs/beast/test/beast/CMakeLists.txt | 0 libs/beast/test/beast/Jamfile | 0 .../test/beast/_experimental/CMakeLists.txt | 0 libs/beast/test/beast/_experimental/Jamfile | 0 libs/beast/test/beast/_experimental/error.cpp | 0 .../test/beast/_experimental/icy_stream.cpp | 0 .../beast/test/beast/_experimental/stream.cpp | 39 + libs/beast/test/beast/core.cpp | 0 libs/beast/test/beast/core/CMakeLists.txt | 0 libs/beast/test/beast/core/Jamfile | 0 libs/beast/test/beast/core/_detail_base64.cpp | 0 .../beast/core/_detail_bind_continuation.cpp | 0 libs/beast/test/beast/core/_detail_buffer.cpp | 0 libs/beast/test/beast/core/_detail_clamp.cpp | 0 .../beast/core/_detail_get_io_context.cpp | 0 .../test/beast/core/_detail_is_invocable.cpp | 0 libs/beast/test/beast/core/_detail_read.cpp | 0 libs/beast/test/beast/core/_detail_sha1.cpp | 0 .../test/beast/core/_detail_static_const.cpp | 0 libs/beast/test/beast/core/_detail_tuple.cpp | 2 +- .../beast/test/beast/core/_detail_variant.cpp | 0 libs/beast/test/beast/core/_detail_varint.cpp | 0 libs/beast/test/beast/core/async_base.cpp | 14 +- libs/beast/test/beast/core/basic_stream.cpp | 33 +- libs/beast/test/beast/core/bind_handler.cpp | 0 libs/beast/test/beast/core/buffer_traits.cpp | 0 .../test/beast/core/buffered_read_stream.cpp | 9 + .../beast/test/beast/core/buffers_adaptor.cpp | 0 libs/beast/test/beast/core/buffers_cat.cpp | 0 libs/beast/test/beast/core/buffers_prefix.cpp | 0 libs/beast/test/beast/core/buffers_range.cpp | 0 libs/beast/test/beast/core/buffers_suffix.cpp | 0 .../test/beast/core/buffers_to_string.cpp | 0 libs/beast/test/beast/core/close_socket.cpp | 0 libs/beast/test/beast/core/detect_ssl.cpp | 0 libs/beast/test/beast/core/error.cpp | 0 libs/beast/test/beast/core/file.cpp | 0 libs/beast/test/beast/core/file_base.cpp | 0 libs/beast/test/beast/core/file_posix.cpp | 0 libs/beast/test/beast/core/file_stdio.cpp | 0 libs/beast/test/beast/core/file_test.hpp | 0 libs/beast/test/beast/core/file_win32.cpp | 0 libs/beast/test/beast/core/flat_buffer.cpp | 0 .../test/beast/core/flat_static_buffer.cpp | 0 libs/beast/test/beast/core/flat_stream.cpp | 0 libs/beast/test/beast/core/make_printable.cpp | 0 libs/beast/test/beast/core/make_strand.cpp | 0 libs/beast/test/beast/core/multi_buffer.cpp | 0 libs/beast/test/beast/core/ostream.cpp | 0 .../beast/test/beast/core/prepare_buffers.cpp | 0 libs/beast/test/beast/core/rate_policy.cpp | 0 libs/beast/test/beast/core/read_size.cpp | 0 libs/beast/test/beast/core/role.cpp | 0 libs/beast/test/beast/core/saved_handler.cpp | 0 libs/beast/test/beast/core/span.cpp | 0 libs/beast/test/beast/core/static_buffer.cpp | 0 libs/beast/test/beast/core/static_string.cpp | 0 libs/beast/test/beast/core/stream_tests.hpp | 0 libs/beast/test/beast/core/stream_traits.cpp | 0 libs/beast/test/beast/core/string.cpp | 0 libs/beast/test/beast/core/tcp_stream.cpp | 0 libs/beast/test/beast/core/test_buffer.hpp | 0 libs/beast/test/beast/core/test_executor.hpp | 0 libs/beast/test/beast/core/test_handler.hpp | 0 libs/beast/test/beast/core/zlib.cpp | 0 libs/beast/test/beast/http.cpp | 0 libs/beast/test/beast/http/CMakeLists.txt | 0 libs/beast/test/beast/http/Jamfile | 0 .../test/beast/http/basic_dynamic_body.cpp | 0 .../beast/test/beast/http/basic_file_body.cpp | 0 libs/beast/test/beast/http/basic_parser.cpp | 36 + libs/beast/test/beast/http/buffer_body.cpp | 0 libs/beast/test/beast/http/chunk_encode.cpp | 0 libs/beast/test/beast/http/dynamic_body.cpp | 0 libs/beast/test/beast/http/empty_body.cpp | 0 libs/beast/test/beast/http/error.cpp | 0 libs/beast/test/beast/http/field.cpp | 5 +- libs/beast/test/beast/http/fields.cpp | 67 + libs/beast/test/beast/http/file_body.cpp | 2 +- libs/beast/test/beast/http/message.cpp | 0 libs/beast/test/beast/http/message_fuzz.hpp | 0 libs/beast/test/beast/http/parser.cpp | 0 libs/beast/test/beast/http/read.cpp | 0 libs/beast/test/beast/http/rfc7230.cpp | 0 libs/beast/test/beast/http/serializer.cpp | 0 libs/beast/test/beast/http/span_body.cpp | 0 libs/beast/test/beast/http/status.cpp | 0 libs/beast/test/beast/http/string_body.cpp | 0 libs/beast/test/beast/http/test_parser.hpp | 2 + libs/beast/test/beast/http/type_traits.cpp | 0 libs/beast/test/beast/http/vector_body.cpp | 0 libs/beast/test/beast/http/verb.cpp | 0 libs/beast/test/beast/http/write.cpp | 0 libs/beast/test/beast/ssl.cpp | 0 libs/beast/test/beast/ssl/CMakeLists.txt | 0 libs/beast/test/beast/ssl/Jamfile | 0 libs/beast/test/beast/ssl/ssl_stream.cpp | 0 libs/beast/test/beast/version.cpp | 0 libs/beast/test/beast/websocket.cpp | 0 .../beast/test/beast/websocket/CMakeLists.txt | 0 libs/beast/test/beast/websocket/Jamfile | 0 .../beast/websocket/_detail_decorator.cpp | 0 .../beast/websocket/_detail_impl_base.cpp | 0 .../test/beast/websocket/_detail_prng.cpp | 12 +- libs/beast/test/beast/websocket/accept.cpp | 58 +- libs/beast/test/beast/websocket/close.cpp | 2 +- .../test/beast/websocket/doc_snippets.cpp | 0 libs/beast/test/beast/websocket/error.cpp | 0 libs/beast/test/beast/websocket/frame.cpp | 0 libs/beast/test/beast/websocket/handshake.cpp | 0 libs/beast/test/beast/websocket/option.cpp | 0 libs/beast/test/beast/websocket/ping.cpp | 0 libs/beast/test/beast/websocket/read1.cpp | 0 libs/beast/test/beast/websocket/read2.cpp | 0 libs/beast/test/beast/websocket/read3.cpp | 397 ++ libs/beast/test/beast/websocket/rfc6455.cpp | 0 libs/beast/test/beast/websocket/ssl.cpp | 0 libs/beast/test/beast/websocket/stream.cpp | 0 .../test/beast/websocket/stream_base.cpp | 0 .../test/beast/websocket/stream_explicit.cpp | 0 .../beast/test/beast/websocket/stream_fwd.cpp | 0 libs/beast/test/beast/websocket/teardown.cpp | 0 libs/beast/test/beast/websocket/test.hpp | 0 libs/beast/test/beast/websocket/timer.cpp | 0 .../test/beast/websocket/utf8_checker.cpp | 0 libs/beast/test/beast/websocket/write.cpp | 0 libs/beast/test/beast/zlib.cpp | 0 libs/beast/test/beast/zlib/CMakeLists.txt | 0 libs/beast/test/beast/zlib/Jamfile | 0 libs/beast/test/beast/zlib/deflate_stream.cpp | 0 libs/beast/test/beast/zlib/error.cpp | 0 libs/beast/test/beast/zlib/inflate_stream.cpp | 4 +- libs/beast/test/beast/zlib/zlib.cpp | 0 libs/beast/test/bench/CMakeLists.txt | 0 libs/beast/test/bench/Jamfile | 0 libs/beast/test/bench/buffers/CMakeLists.txt | 0 libs/beast/test/bench/buffers/Jamfile | 0 .../test/bench/buffers/bench_buffers.cpp | 0 libs/beast/test/bench/parser/CMakeLists.txt | 0 libs/beast/test/bench/parser/Jamfile | 0 libs/beast/test/bench/parser/bench_parser.cpp | 0 .../test/bench/parser/nodejs-parser/AUTHORS | 0 .../bench/parser/nodejs-parser/LICENSE-MIT | 0 .../test/bench/parser/nodejs-parser/README.md | 0 .../bench/parser/nodejs-parser/http_parser.c | 0 .../bench/parser/nodejs-parser/http_parser.h | 0 .../beast/test/bench/parser/nodejs_parser.cpp | 0 .../beast/test/bench/parser/nodejs_parser.hpp | 0 .../test/bench/utf8_checker/CMakeLists.txt | 0 libs/beast/test/bench/utf8_checker/Jamfile | 0 .../bench/utf8_checker/bench_utf8_checker.cpp | 0 libs/beast/test/bench/wsload/CMakeLists.txt | 0 libs/beast/test/bench/wsload/Jamfile | 0 libs/beast/test/bench/wsload/wsload.cpp | 0 libs/beast/test/bench/zlib/CMakeLists.txt | 0 libs/beast/test/bench/zlib/Jamfile | 0 libs/beast/test/bench/zlib/deflate_stream.cpp | 0 libs/beast/test/bench/zlib/inflate_stream.cpp | 0 libs/beast/test/doc/CMakeLists.txt | 0 libs/beast/test/doc/Jamfile | 0 libs/beast/test/doc/core_1_refresher.cpp | 0 libs/beast/test/doc/core_3_timeouts.cpp | 0 libs/beast/test/doc/core_4_layers.cpp | 0 libs/beast/test/doc/core_snippets.cpp | 0 libs/beast/test/doc/exemplars.cpp | 0 libs/beast/test/doc/http_10_custom_parser.cpp | 0 libs/beast/test/doc/http_examples.cpp | 0 libs/beast/test/doc/http_snippets.cpp | 0 libs/beast/test/doc/snippets.hpp | 0 libs/beast/test/doc/snippets.ipp | 0 libs/beast/test/doc/websocket.cpp | 0 .../beast/test/doc/websocket_1_connecting.cpp | 0 .../test/doc/websocket_2_handshaking.cpp | 0 libs/beast/test/doc/websocket_3_decorator.cpp | 0 libs/beast/test/doc/websocket_4_messages.cpp | 0 .../test/doc/websocket_5_control_frames.cpp | 0 libs/beast/test/doc/websocket_6_timeouts.cpp | 0 libs/beast/test/doc/websocket_7_teardown.cpp | 0 libs/beast/test/doc/websocket_8_notes.cpp | 0 libs/beast/test/doc/websocket_common.ipp | 0 libs/beast/test/example/CMakeLists.txt | 0 libs/beast/test/example/Jamfile | 0 libs/beast/test/example/common/CMakeLists.txt | 0 libs/beast/test/example/common/Jamfile | 0 .../test/example/common/root_certificates.cpp | 0 .../example/common/server_certificate.cpp | 0 libs/beast/test/extern/zlib-1.2.11/.gitignore | 26 + .../test/extern/zlib-1.2.11/CMakeLists.txt | 0 libs/beast/test/extern/zlib-1.2.11/ChangeLog | 0 libs/beast/test/extern/zlib-1.2.11/FAQ | 0 libs/beast/test/extern/zlib-1.2.11/INDEX | 0 libs/beast/test/extern/zlib-1.2.11/Makefile | 0 .../beast/test/extern/zlib-1.2.11/Makefile.in | 0 libs/beast/test/extern/zlib-1.2.11/README | 0 libs/beast/test/extern/zlib-1.2.11/adler32.c | 0 .../extern/zlib-1.2.11/amiga/Makefile.pup | 0 .../extern/zlib-1.2.11/amiga/Makefile.sas | 0 libs/beast/test/extern/zlib-1.2.11/compress.c | 0 libs/beast/test/extern/zlib-1.2.11/configure | 0 .../extern/zlib-1.2.11/contrib/README.contrib | 0 .../zlib-1.2.11/contrib/ada/buffer_demo.adb | 0 .../extern/zlib-1.2.11/contrib/ada/mtest.adb | 0 .../extern/zlib-1.2.11/contrib/ada/read.adb | 0 .../extern/zlib-1.2.11/contrib/ada/readme.txt | 0 .../extern/zlib-1.2.11/contrib/ada/test.adb | 0 .../zlib-1.2.11/contrib/ada/zlib-streams.adb | 0 .../zlib-1.2.11/contrib/ada/zlib-streams.ads | 0 .../zlib-1.2.11/contrib/ada/zlib-thin.adb | 0 .../zlib-1.2.11/contrib/ada/zlib-thin.ads | 0 .../extern/zlib-1.2.11/contrib/ada/zlib.adb | 0 .../extern/zlib-1.2.11/contrib/ada/zlib.ads | 328 ++ .../extern/zlib-1.2.11/contrib/ada/zlib.gpr | 0 .../zlib-1.2.11/contrib/amd64/amd64-match.S | 0 .../zlib-1.2.11/contrib/asm686/README.686 | 0 .../extern/zlib-1.2.11/contrib/asm686/match.S | 0 .../extern/zlib-1.2.11/contrib/blast/Makefile | 0 .../extern/zlib-1.2.11/contrib/blast/README | 0 .../extern/zlib-1.2.11/contrib/blast/blast.c | 0 .../extern/zlib-1.2.11/contrib/blast/blast.h | 0 .../extern/zlib-1.2.11/contrib/blast/test.pk | Bin .../extern/zlib-1.2.11/contrib/blast/test.txt | 0 .../zlib-1.2.11/contrib/delphi/ZLib.pas | 0 .../zlib-1.2.11/contrib/delphi/ZLibConst.pas | 0 .../zlib-1.2.11/contrib/delphi/readme.txt | 0 .../zlib-1.2.11/contrib/delphi/zlibd32.mak | 0 .../zlib-1.2.11/contrib/dotzlib/DotZLib.build | 0 .../zlib-1.2.11/contrib/dotzlib/DotZLib.chm | Bin .../zlib-1.2.11/contrib/dotzlib/DotZLib.sln | 0 .../contrib/dotzlib/DotZLib/AssemblyInfo.cs | 0 .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 0 .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 0 .../contrib/dotzlib/DotZLib/CodecBase.cs | 0 .../contrib/dotzlib/DotZLib/Deflater.cs | 0 .../contrib/dotzlib/DotZLib/DotZLib.cs | 0 .../contrib/dotzlib/DotZLib/DotZLib.csproj | 0 .../contrib/dotzlib/DotZLib/GZipStream.cs | 0 .../contrib/dotzlib/DotZLib/Inflater.cs | 0 .../contrib/dotzlib/DotZLib/UnitTests.cs | 0 .../contrib/dotzlib/LICENSE_1_0.txt | 0 .../zlib-1.2.11/contrib/dotzlib/readme.txt | 0 .../zlib-1.2.11/contrib/gcc_gvmat64/gvmat64.S | 0 .../zlib-1.2.11/contrib/infback9/README | 0 .../zlib-1.2.11/contrib/infback9/infback9.c | 0 .../zlib-1.2.11/contrib/infback9/infback9.h | 0 .../zlib-1.2.11/contrib/infback9/inffix9.h | 0 .../zlib-1.2.11/contrib/infback9/inflate9.h | 0 .../zlib-1.2.11/contrib/infback9/inftree9.c | 0 .../zlib-1.2.11/contrib/infback9/inftree9.h | 0 .../zlib-1.2.11/contrib/inflate86/inffas86.c | 0 .../zlib-1.2.11/contrib/inflate86/inffast.S | 0 .../zlib-1.2.11/contrib/iostream/test.cpp | 0 .../zlib-1.2.11/contrib/iostream/zfstream.cpp | 0 .../zlib-1.2.11/contrib/iostream/zfstream.h | 0 .../zlib-1.2.11/contrib/iostream2/zstream.h | 0 .../contrib/iostream2/zstream_test.cpp | 0 .../zlib-1.2.11/contrib/iostream3/README | 0 .../extern/zlib-1.2.11/contrib/iostream3/TODO | 0 .../zlib-1.2.11/contrib/iostream3/test.cc | 0 .../zlib-1.2.11/contrib/iostream3/zfstream.cc | 0 .../zlib-1.2.11/contrib/iostream3/zfstream.h | 0 .../zlib-1.2.11/contrib/masmx64/bld_ml64.bat | 0 .../zlib-1.2.11/contrib/masmx64/gvmat64.asm | 0 .../zlib-1.2.11/contrib/masmx64/inffas8664.c | 0 .../zlib-1.2.11/contrib/masmx64/inffasx64.asm | 0 .../zlib-1.2.11/contrib/masmx64/readme.txt | 0 .../zlib-1.2.11/contrib/masmx86/bld_ml32.bat | 0 .../zlib-1.2.11/contrib/masmx86/inffas32.asm | 0 .../zlib-1.2.11/contrib/masmx86/match686.asm | 0 .../zlib-1.2.11/contrib/masmx86/readme.txt | 0 .../zlib-1.2.11/contrib/minizip/Makefile | 0 .../zlib-1.2.11/contrib/minizip/Makefile.am | 0 .../contrib/minizip/MiniZip64_Changes.txt | 0 .../contrib/minizip/MiniZip64_info.txt | 0 .../zlib-1.2.11/contrib/minizip/configure.ac | 0 .../zlib-1.2.11/contrib/minizip/crypt.h | 0 .../zlib-1.2.11/contrib/minizip/ioapi.c | 0 .../zlib-1.2.11/contrib/minizip/ioapi.h | 0 .../zlib-1.2.11/contrib/minizip/iowin32.c | 0 .../zlib-1.2.11/contrib/minizip/iowin32.h | 0 .../zlib-1.2.11/contrib/minizip/make_vms.com | 0 .../zlib-1.2.11/contrib/minizip/miniunz.c | 0 .../zlib-1.2.11/contrib/minizip/miniunzip.1 | 0 .../zlib-1.2.11/contrib/minizip/minizip.1 | 0 .../zlib-1.2.11/contrib/minizip/minizip.c | 0 .../zlib-1.2.11/contrib/minizip/minizip.pc.in | 0 .../zlib-1.2.11/contrib/minizip/mztools.c | 0 .../zlib-1.2.11/contrib/minizip/mztools.h | 0 .../zlib-1.2.11/contrib/minizip/unzip.c | 0 .../zlib-1.2.11/contrib/minizip/unzip.h | 0 .../extern/zlib-1.2.11/contrib/minizip/zip.c | 0 .../extern/zlib-1.2.11/contrib/minizip/zip.h | 0 .../zlib-1.2.11/contrib/pascal/example.pas | 0 .../zlib-1.2.11/contrib/pascal/readme.txt | 0 .../zlib-1.2.11/contrib/pascal/zlibd32.mak | 0 .../zlib-1.2.11/contrib/pascal/zlibpas.pas | 0 .../extern/zlib-1.2.11/contrib/puff/Makefile | 0 .../extern/zlib-1.2.11/contrib/puff/README | 0 .../extern/zlib-1.2.11/contrib/puff/puff.c | 0 .../extern/zlib-1.2.11/contrib/puff/puff.h | 0 .../zlib-1.2.11/contrib/puff/pufftest.c | 0 .../extern/zlib-1.2.11/contrib/puff/zeros.raw | Bin .../zlib-1.2.11/contrib/testzlib/testzlib.c | 0 .../zlib-1.2.11/contrib/testzlib/testzlib.txt | 0 .../extern/zlib-1.2.11/contrib/untgz/Makefile | 0 .../zlib-1.2.11/contrib/untgz/Makefile.msc | 0 .../extern/zlib-1.2.11/contrib/untgz/untgz.c | 0 .../zlib-1.2.11/contrib/vstudio/readme.txt | 0 .../contrib/vstudio/vc10/miniunz.vcxproj | 0 .../vstudio/vc10/miniunz.vcxproj.filters | 0 .../contrib/vstudio/vc10/minizip.vcxproj | 0 .../vstudio/vc10/minizip.vcxproj.filters | 0 .../contrib/vstudio/vc10/testzlib.vcxproj | 0 .../vstudio/vc10/testzlib.vcxproj.filters | 0 .../contrib/vstudio/vc10/testzlibdll.vcxproj | 0 .../vstudio/vc10/testzlibdll.vcxproj.filters | 0 .../zlib-1.2.11/contrib/vstudio/vc10/zlib.rc | 0 .../contrib/vstudio/vc10/zlibstat.vcxproj | 0 .../vstudio/vc10/zlibstat.vcxproj.filters | 0 .../contrib/vstudio/vc10/zlibvc.def | 0 .../contrib/vstudio/vc10/zlibvc.sln | 0 .../contrib/vstudio/vc10/zlibvc.vcxproj | 0 .../vstudio/vc10/zlibvc.vcxproj.filters | 0 .../contrib/vstudio/vc11/miniunz.vcxproj | 0 .../contrib/vstudio/vc11/minizip.vcxproj | 0 .../contrib/vstudio/vc11/testzlib.vcxproj | 0 .../contrib/vstudio/vc11/testzlibdll.vcxproj | 0 .../zlib-1.2.11/contrib/vstudio/vc11/zlib.rc | 0 .../contrib/vstudio/vc11/zlibstat.vcxproj | 0 .../contrib/vstudio/vc11/zlibvc.def | 0 .../contrib/vstudio/vc11/zlibvc.sln | 0 .../contrib/vstudio/vc11/zlibvc.vcxproj | 0 .../contrib/vstudio/vc12/miniunz.vcxproj | 0 .../contrib/vstudio/vc12/minizip.vcxproj | 0 .../contrib/vstudio/vc12/testzlib.vcxproj | 0 .../contrib/vstudio/vc12/testzlibdll.vcxproj | 0 .../zlib-1.2.11/contrib/vstudio/vc12/zlib.rc | 0 .../contrib/vstudio/vc12/zlibstat.vcxproj | 0 .../contrib/vstudio/vc12/zlibvc.def | 0 .../contrib/vstudio/vc12/zlibvc.sln | 0 .../contrib/vstudio/vc12/zlibvc.vcxproj | 0 .../contrib/vstudio/vc14/miniunz.vcxproj | 0 .../contrib/vstudio/vc14/minizip.vcxproj | 0 .../contrib/vstudio/vc14/testzlib.vcxproj | 0 .../contrib/vstudio/vc14/testzlibdll.vcxproj | 0 .../zlib-1.2.11/contrib/vstudio/vc14/zlib.rc | 0 .../contrib/vstudio/vc14/zlibstat.vcxproj | 0 .../contrib/vstudio/vc14/zlibvc.def | 0 .../contrib/vstudio/vc14/zlibvc.sln | 0 .../contrib/vstudio/vc14/zlibvc.vcxproj | 0 .../contrib/vstudio/vc9/miniunz.vcproj | 0 .../contrib/vstudio/vc9/minizip.vcproj | 0 .../contrib/vstudio/vc9/testzlib.vcproj | 0 .../contrib/vstudio/vc9/testzlibdll.vcproj | 0 .../zlib-1.2.11/contrib/vstudio/vc9/zlib.rc | 0 .../contrib/vstudio/vc9/zlibstat.vcproj | 0 .../contrib/vstudio/vc9/zlibvc.def | 0 .../contrib/vstudio/vc9/zlibvc.sln | 0 .../contrib/vstudio/vc9/zlibvc.vcproj | 0 libs/beast/test/extern/zlib-1.2.11/crc32.c | 0 libs/beast/test/extern/zlib-1.2.11/crc32.h | 0 libs/beast/test/extern/zlib-1.2.11/deflate.c | 0 libs/beast/test/extern/zlib-1.2.11/deflate.h | 0 .../test/extern/zlib-1.2.11/doc/algorithm.txt | 0 .../test/extern/zlib-1.2.11/doc/rfc1950.txt | 0 .../test/extern/zlib-1.2.11/doc/rfc1951.txt | 0 .../test/extern/zlib-1.2.11/doc/rfc1952.txt | 0 .../test/extern/zlib-1.2.11/doc/txtvsbin.txt | 0 .../zlib-1.2.11/examples/README.examples | 0 .../test/extern/zlib-1.2.11/examples/enough.c | 0 .../test/extern/zlib-1.2.11/examples/fitblk.c | 0 .../test/extern/zlib-1.2.11/examples/gun.c | 0 .../extern/zlib-1.2.11/examples/gzappend.c | 0 .../test/extern/zlib-1.2.11/examples/gzjoin.c | 0 .../test/extern/zlib-1.2.11/examples/gzlog.c | 0 .../test/extern/zlib-1.2.11/examples/gzlog.h | 0 .../extern/zlib-1.2.11/examples/zlib_how.html | 0 .../test/extern/zlib-1.2.11/examples/zpipe.c | 0 .../test/extern/zlib-1.2.11/examples/zran.c | 0 libs/beast/test/extern/zlib-1.2.11/gzclose.c | 0 libs/beast/test/extern/zlib-1.2.11/gzguts.h | 0 libs/beast/test/extern/zlib-1.2.11/gzlib.c | 0 libs/beast/test/extern/zlib-1.2.11/gzread.c | 0 libs/beast/test/extern/zlib-1.2.11/gzwrite.c | 0 libs/beast/test/extern/zlib-1.2.11/infback.c | 0 libs/beast/test/extern/zlib-1.2.11/inffast.c | 0 libs/beast/test/extern/zlib-1.2.11/inffast.h | 0 libs/beast/test/extern/zlib-1.2.11/inffixed.h | 0 libs/beast/test/extern/zlib-1.2.11/inflate.c | 0 libs/beast/test/extern/zlib-1.2.11/inflate.h | 0 libs/beast/test/extern/zlib-1.2.11/inftrees.c | 0 libs/beast/test/extern/zlib-1.2.11/inftrees.h | 0 .../test/extern/zlib-1.2.11/make_vms.com | 0 .../extern/zlib-1.2.11/msdos/Makefile.bor | 0 .../extern/zlib-1.2.11/msdos/Makefile.dj2 | 0 .../extern/zlib-1.2.11/msdos/Makefile.emx | 0 .../extern/zlib-1.2.11/msdos/Makefile.msc | 0 .../test/extern/zlib-1.2.11/msdos/Makefile.tc | 0 .../extern/zlib-1.2.11/nintendods/Makefile | 0 .../test/extern/zlib-1.2.11/nintendods/README | 0 .../test/extern/zlib-1.2.11/old/Makefile.emx | 0 .../extern/zlib-1.2.11/old/Makefile.riscos | 0 libs/beast/test/extern/zlib-1.2.11/old/README | 0 .../test/extern/zlib-1.2.11/old/descrip.mms | 0 .../extern/zlib-1.2.11/old/os2/Makefile.os2 | 0 .../test/extern/zlib-1.2.11/old/os2/zlib.def | 0 .../extern/zlib-1.2.11/old/visual-basic.txt | 0 .../test/extern/zlib-1.2.11/os400/README400 | 0 .../test/extern/zlib-1.2.11/os400/bndsrc | 0 .../test/extern/zlib-1.2.11/os400/make.sh | 0 .../test/extern/zlib-1.2.11/os400/zlib.inc | 0 .../test/extern/zlib-1.2.11/qnx/package.qpg | 0 .../test/extern/zlib-1.2.11/test/example.c | 0 .../test/extern/zlib-1.2.11/test/infcover.c | 0 .../test/extern/zlib-1.2.11/test/minigzip.c | 0 .../test/extern/zlib-1.2.11/treebuild.xml | 0 libs/beast/test/extern/zlib-1.2.11/trees.c | 0 libs/beast/test/extern/zlib-1.2.11/trees.h | 0 libs/beast/test/extern/zlib-1.2.11/uncompr.c | 0 .../extern/zlib-1.2.11/watcom/watcom_f.mak | 0 .../extern/zlib-1.2.11/watcom/watcom_l.mak | 0 libs/beast/test/extern/zlib-1.2.11/zconf.h | 0 .../test/extern/zlib-1.2.11/zconf.h.cmakein | 0 libs/beast/test/extern/zlib-1.2.11/zconf.h.in | 0 libs/beast/test/extern/zlib-1.2.11/zlib.3 | 0 libs/beast/test/extern/zlib-1.2.11/zlib.3.pdf | Bin libs/beast/test/extern/zlib-1.2.11/zlib.h | 0 libs/beast/test/extern/zlib-1.2.11/zlib.map | 0 .../test/extern/zlib-1.2.11/zlib.pc.cmakein | 0 libs/beast/test/extern/zlib-1.2.11/zlib.pc.in | 0 libs/beast/test/extern/zlib-1.2.11/zlib2ansi | 0 libs/beast/test/extern/zlib-1.2.11/zutil.c | 0 libs/beast/test/extern/zlib-1.2.11/zutil.h | 0 libs/beast/test/extras/README.md | 0 .../extras/include/boost/beast/doc_debug.hpp | 0 .../extras/include/boost/beast/test/fuzz.hpp | 0 .../include/boost/beast/test/sig_wait.hpp | 0 .../boost/beast/test/test_allocator.hpp | 0 .../include/boost/beast/test/throughput.hpp | 0 .../include/boost/beast/test/websocket.hpp | 0 .../include/boost/beast/test/yield_to.hpp | 8 +- libs/beast/test/lib_asio.cpp | 0 libs/beast/test/lib_asio_ssl.cpp | 0 libs/beast/test/lib_beast.cpp | 0 libs/beast/test/lib_test.cpp | 0 libs/beast/tools/blacklist.supp | 0 libs/beast/tools/build-and-test.sh | 7 +- libs/beast/tools/field.txt | 4 + libs/beast/tools/user-config.jam | 0 libs/beast/tools/valgrind.supp | 0 libs/compute/CMakeLists.txt | 0 libs/compute/CONTRIBUTING.md | 0 libs/compute/LICENSE_1_0.txt | 0 libs/compute/README.md | 0 .../compute/cmake/BoostComputeConfig.cmake.in | 0 libs/compute/cmake/FindBolt.cmake | 0 libs/compute/cmake/FindEigen.cmake | 0 libs/compute/cmake/FindTBB.cmake | 0 libs/compute/cmake/opencl/FindOpenCL.cmake | 0 libs/compute/doc/Jamfile.v2 | 0 libs/compute/doc/advanced_topics.qbk | 0 libs/compute/doc/compute.qbk | 0 libs/compute/doc/design.qbk | 0 libs/compute/doc/faq.qbk | 0 libs/compute/doc/getting_started.qbk | 0 libs/compute/doc/interop.qbk | 0 libs/compute/doc/introduction.qbk | 0 libs/compute/doc/performance.qbk | 0 libs/compute/doc/platforms_and_compilers.qbk | 0 libs/compute/doc/porting_guide.qbk | 0 libs/compute/doc/reference.qbk | 0 libs/compute/doc/tutorial.qbk | 0 libs/compute/example/CMakeLists.txt | 0 libs/compute/example/amd_cpp_kernel.cpp | 0 libs/compute/example/batched_determinant.cpp | 0 libs/compute/example/black_scholes.cpp | 0 libs/compute/example/copy_data.cpp | 0 libs/compute/example/fizz_buzz.cpp | 0 libs/compute/example/hello_world.cpp | 0 libs/compute/example/host_sort.cpp | 0 libs/compute/example/inline_ptx.cpp | 0 libs/compute/example/k_means.cpp | 0 libs/compute/example/list_devices.cpp | 0 libs/compute/example/longest_vector.cpp | 0 libs/compute/example/mandelbrot.cpp | 0 libs/compute/example/mapped_view.cpp | 0 libs/compute/example/matrix_transpose.cpp | 0 libs/compute/example/memory_limits.cpp | 0 libs/compute/example/monte_carlo.cpp | 0 libs/compute/example/nbody.cpp | 0 libs/compute/example/opencl_test.cpp | 0 libs/compute/example/opencv_convolution.cpp | 0 libs/compute/example/opencv_flip.cpp | 0 libs/compute/example/opencv_histogram.cpp | 0 libs/compute/example/opencv_optical_flow.cpp | 0 libs/compute/example/opencv_sobel_filter.cpp | 0 libs/compute/example/opengl_sphere.cpp | 0 libs/compute/example/point_centroid.cpp | 0 libs/compute/example/price_cross.cpp | 0 libs/compute/example/print_vector.cpp | 0 libs/compute/example/qimage_blur.cpp | 0 libs/compute/example/random_walk.cpp | 0 libs/compute/example/resize_image.cpp | 0 libs/compute/example/simple_kernel.cpp | 0 .../compute/example/simple_moving_average.cpp | 0 libs/compute/example/sort_vector.cpp | 0 libs/compute/example/threefry_engine.cpp | 0 libs/compute/example/time_copy.cpp | 0 libs/compute/example/transform_sqrt.cpp | 0 libs/compute/example/vector_addition.cpp | 0 libs/compute/include/boost/compute.hpp | 44 + .../include/boost/compute/algorithm.hpp | 94 + .../boost/compute/algorithm/accumulate.hpp | 193 + .../compute/algorithm/adjacent_difference.hpp | 126 + .../boost/compute/algorithm/adjacent_find.hpp | 169 + .../boost/compute/algorithm/all_of.hpp | 42 + .../boost/compute/algorithm/any_of.hpp | 46 + .../boost/compute/algorithm/binary_search.hpp | 43 + .../include/boost/compute/algorithm/copy.hpp | 881 ++++ .../boost/compute/algorithm/copy_if.hpp | 67 + .../boost/compute/algorithm/copy_n.hpp | 55 + .../include/boost/compute/algorithm/count.hpp | 62 + .../boost/compute/algorithm/count_if.hpp | 69 + .../algorithm/detail/balanced_path.hpp | 162 + .../compute/algorithm/detail/binary_find.hpp | 133 + .../compute/algorithm/detail/compact.hpp | 77 + .../algorithm/detail/copy_on_device.hpp | 199 + .../algorithm/detail/copy_to_device.hpp | 204 + .../compute/algorithm/detail/copy_to_host.hpp | 207 + .../algorithm/detail/count_if_with_ballot.hpp | 78 + .../algorithm/detail/count_if_with_reduce.hpp | 87 + .../detail/count_if_with_threads.hpp | 129 + .../compute/algorithm/detail/find_extrema.hpp | 70 + .../algorithm/detail/find_extrema_on_cpu.hpp | 138 + .../detail/find_extrema_with_atomics.hpp | 108 + .../detail/find_extrema_with_reduce.hpp | 444 ++ .../algorithm/detail/find_if_with_atomics.hpp | 213 + .../algorithm/detail/inplace_reduce.hpp | 136 + .../algorithm/detail/insertion_sort.hpp | 165 + .../compute/algorithm/detail/merge_path.hpp | 116 + .../algorithm/detail/merge_sort_on_cpu.hpp | 366 ++ .../algorithm/detail/merge_sort_on_gpu.hpp | 602 +++ .../detail/merge_with_merge_path.hpp | 203 + .../compute/algorithm/detail/radix_sort.hpp | 469 ++ .../compute/algorithm/detail/random_fill.hpp | 57 + .../algorithm/detail/reduce_by_key.hpp | 119 + .../detail/reduce_by_key_with_scan.hpp | 541 +++ .../algorithm/detail/reduce_on_cpu.hpp | 110 + .../algorithm/detail/reduce_on_gpu.hpp | 286 ++ .../boost/compute/algorithm/detail/scan.hpp | 45 + .../compute/algorithm/detail/scan_on_cpu.hpp | 205 + .../compute/algorithm/detail/scan_on_gpu.hpp | 330 ++ .../compute/algorithm/detail/search_all.hpp | 86 + .../algorithm/detail/serial_accumulate.hpp | 56 + .../algorithm/detail/serial_count_if.hpp | 68 + .../algorithm/detail/serial_find_extrema.hpp | 87 + .../compute/algorithm/detail/serial_merge.hpp | 97 + .../algorithm/detail/serial_reduce.hpp | 63 + .../algorithm/detail/serial_reduce_by_key.hpp | 106 + .../compute/algorithm/detail/serial_scan.hpp | 103 + .../include/boost/compute/algorithm/equal.hpp | 62 + .../boost/compute/algorithm/equal_range.hpp | 48 + .../compute/algorithm/exclusive_scan.hpp | 109 + .../include/boost/compute/algorithm/fill.hpp | 313 ++ .../boost/compute/algorithm/fill_n.hpp | 42 + .../include/boost/compute/algorithm/find.hpp | 63 + .../boost/compute/algorithm/find_end.hpp | 144 + .../boost/compute/algorithm/find_if.hpp | 41 + .../boost/compute/algorithm/find_if_not.hpp | 49 + .../boost/compute/algorithm/for_each.hpp | 72 + .../boost/compute/algorithm/for_each_n.hpp | 41 + .../boost/compute/algorithm/gather.hpp | 91 + .../boost/compute/algorithm/generate.hpp | 55 + .../boost/compute/algorithm/generate_n.hpp | 37 + .../boost/compute/algorithm/includes.hpp | 162 + .../compute/algorithm/inclusive_scan.hpp | 92 + .../boost/compute/algorithm/inner_product.hpp | 103 + .../boost/compute/algorithm/inplace_merge.hpp | 66 + .../include/boost/compute/algorithm/iota.hpp | 54 + .../compute/algorithm/is_partitioned.hpp | 49 + .../compute/algorithm/is_permutation.hpp | 73 + .../boost/compute/algorithm/is_sorted.hpp | 71 + .../algorithm/lexicographical_compare.hpp | 126 + .../boost/compute/algorithm/lower_bound.hpp | 50 + .../boost/compute/algorithm/max_element.hpp | 82 + .../include/boost/compute/algorithm/merge.hpp | 116 + .../boost/compute/algorithm/min_element.hpp | 82 + .../compute/algorithm/minmax_element.hpp | 78 + .../boost/compute/algorithm/mismatch.hpp | 98 + .../compute/algorithm/next_permutation.hpp | 175 + .../boost/compute/algorithm/none_of.hpp | 42 + .../boost/compute/algorithm/nth_element.hpp | 94 + .../boost/compute/algorithm/partial_sum.hpp | 46 + .../boost/compute/algorithm/partition.hpp | 45 + .../compute/algorithm/partition_copy.hpp | 72 + .../compute/algorithm/partition_point.hpp | 52 + .../compute/algorithm/prev_permutation.hpp | 175 + .../compute/algorithm/random_shuffle.hpp | 90 + .../boost/compute/algorithm/reduce.hpp | 310 ++ .../boost/compute/algorithm/reduce_by_key.hpp | 137 + .../boost/compute/algorithm/remove.hpp | 60 + .../boost/compute/algorithm/remove_if.hpp | 53 + .../boost/compute/algorithm/replace.hpp | 96 + .../boost/compute/algorithm/replace_copy.hpp | 70 + .../boost/compute/algorithm/reverse.hpp | 80 + .../boost/compute/algorithm/reverse_copy.hpp | 87 + .../boost/compute/algorithm/rotate.hpp | 56 + .../boost/compute/algorithm/rotate_copy.hpp | 43 + .../boost/compute/algorithm/scatter.hpp | 107 + .../boost/compute/algorithm/scatter_if.hpp | 131 + .../boost/compute/algorithm/search.hpp | 80 + .../boost/compute/algorithm/search_n.hpp | 146 + .../compute/algorithm/set_difference.hpp | 191 + .../compute/algorithm/set_intersection.hpp | 179 + .../algorithm/set_symmetric_difference.hpp | 204 + .../boost/compute/algorithm/set_union.hpp | 204 + .../include/boost/compute/algorithm/sort.hpp | 207 + .../boost/compute/algorithm/sort_by_key.hpp | 168 + .../compute/algorithm/stable_partition.hpp | 78 + .../boost/compute/algorithm/stable_sort.hpp | 115 + .../compute/algorithm/stable_sort_by_key.hpp | 168 + .../boost/compute/algorithm/swap_ranges.hpp | 52 + .../boost/compute/algorithm/transform.hpp | 87 + .../boost/compute/algorithm/transform_if.hpp | 123 + .../compute/algorithm/transform_reduce.hpp | 100 + .../boost/compute/algorithm/unique.hpp | 73 + .../boost/compute/algorithm/unique_copy.hpp | 175 + .../boost/compute/algorithm/upper_bound.hpp | 49 + .../include/boost/compute/allocator.hpp | 21 + .../compute/allocator/buffer_allocator.hpp | 118 + .../compute/allocator/pinned_allocator.hpp | 53 + libs/compute/include/boost/compute/async.hpp | 21 + .../include/boost/compute/async/future.hpp | 196 + .../include/boost/compute/async/wait.hpp | 56 + .../boost/compute/async/wait_guard.hpp | 63 + libs/compute/include/boost/compute/buffer.hpp | 227 + libs/compute/include/boost/compute/cl.hpp | 52 + libs/compute/include/boost/compute/cl_ext.hpp | 22 + .../compute/include/boost/compute/closure.hpp | 347 ++ .../include/boost/compute/command_queue.hpp | 2008 +++++++++ libs/compute/include/boost/compute/config.hpp | 66 + .../include/boost/compute/container.hpp | 27 + .../include/boost/compute/container/array.hpp | 317 ++ .../boost/compute/container/basic_string.hpp | 331 ++ .../boost/compute/container/detail/scalar.hpp | 62 + .../compute/container/dynamic_bitset.hpp | 237 + .../boost/compute/container/flat_map.hpp | 406 ++ .../boost/compute/container/flat_set.hpp | 339 ++ .../boost/compute/container/mapped_view.hpp | 250 ++ .../include/boost/compute/container/stack.hpp | 81 + .../boost/compute/container/string.hpp | 25 + .../boost/compute/container/valarray.hpp | 500 +++ .../boost/compute/container/vector.hpp | 823 ++++ .../compute/include/boost/compute/context.hpp | 245 + libs/compute/include/boost/compute/core.hpp | 33 + .../compute/detail/assert_cl_success.hpp | 24 + .../boost/compute/detail/buffer_value.hpp | 180 + .../boost/compute/detail/cl_versions.hpp | 64 + .../boost/compute/detail/device_ptr.hpp | 215 + .../boost/compute/detail/diagnostic.hpp | 112 + .../include/boost/compute/detail/duration.hpp | 54 + .../boost/compute/detail/get_object_info.hpp | 284 ++ .../include/boost/compute/detail/getenv.hpp | 36 + .../boost/compute/detail/global_static.hpp | 37 + .../compute/detail/is_buffer_iterator.hpp | 30 + .../compute/detail/is_contiguous_iterator.hpp | 118 + .../compute/detail/iterator_plus_distance.hpp | 53 + .../compute/detail/iterator_range_size.hpp | 44 + .../boost/compute/detail/iterator_traits.hpp | 35 + .../include/boost/compute/detail/literal.hpp | 53 + .../boost/compute/detail/lru_cache.hpp | 139 + .../boost/compute/detail/meta_kernel.hpp | 1145 +++++ .../compute/detail/mpl_vector_to_tuple.hpp | 65 + .../detail/nvidia_compute_capability.hpp | 61 + .../boost/compute/detail/parameter_cache.hpp | 223 + .../include/boost/compute/detail/path.hpp | 73 + .../boost/compute/detail/print_range.hpp | 82 + .../detail/read_write_single_value.hpp | 78 + .../include/boost/compute/detail/sha1.hpp | 58 + .../boost/compute/detail/variadic_macros.hpp | 35 + .../include/boost/compute/detail/vendor.hpp | 50 + .../boost/compute/detail/work_size.hpp | 37 + libs/compute/include/boost/compute/device.hpp | 673 +++ libs/compute/include/boost/compute/event.hpp | 338 ++ .../include/boost/compute/exception.hpp | 23 + .../boost/compute/exception/context_error.hpp | 88 + .../compute/exception/no_device_found.hpp | 48 + .../boost/compute/exception/opencl_error.hpp | 158 + .../exception/program_build_failure.hpp | 58 + .../exception/unsupported_extension_error.hpp | 71 + .../compute/experimental/clamp_range.hpp | 49 + .../boost/compute/experimental/malloc.hpp | 51 + .../experimental/sort_by_transform.hpp | 66 + .../boost/compute/experimental/tabulate.hpp | 44 + .../include/boost/compute/function.hpp | 467 ++ .../include/boost/compute/functional.hpp | 34 + .../include/boost/compute/functional/as.hpp | 51 + .../boost/compute/functional/atomic.hpp | 141 + .../include/boost/compute/functional/bind.hpp | 261 ++ .../boost/compute/functional/common.hpp | 29 + .../boost/compute/functional/convert.hpp | 51 + .../compute/functional/detail/macros.hpp | 35 + .../functional/detail/nvidia_ballot.hpp | 48 + .../functional/detail/nvidia_popcount.hpp | 42 + .../compute/functional/detail/unpack.hpp | 143 + .../boost/compute/functional/field.hpp | 86 + .../boost/compute/functional/geometry.hpp | 32 + .../include/boost/compute/functional/get.hpp | 76 + .../include/boost/compute/functional/hash.hpp | 91 + .../boost/compute/functional/identity.hpp | 64 + .../boost/compute/functional/integer.hpp | 30 + .../boost/compute/functional/logical.hpp | 208 + .../include/boost/compute/functional/math.hpp | 80 + .../boost/compute/functional/operator.hpp | 100 + .../boost/compute/functional/popcount.hpp | 55 + .../boost/compute/functional/relational.hpp | 39 + libs/compute/include/boost/compute/image.hpp | 25 + .../include/boost/compute/image/image1d.hpp | 204 + .../include/boost/compute/image/image2d.hpp | 262 ++ .../include/boost/compute/image/image3d.hpp | 265 ++ .../boost/compute/image/image_format.hpp | 135 + .../boost/compute/image/image_object.hpp | 170 + .../boost/compute/image/image_sampler.hpp | 221 + .../compute/include/boost/compute/image2d.hpp | 12 + .../compute/include/boost/compute/image3d.hpp | 12 + .../include/boost/compute/image_format.hpp | 12 + .../include/boost/compute/image_sampler.hpp | 12 + .../include/boost/compute/interop/eigen.hpp | 16 + .../boost/compute/interop/eigen/core.hpp | 72 + .../include/boost/compute/interop/opencv.hpp | 17 + .../boost/compute/interop/opencv/core.hpp | 141 + .../boost/compute/interop/opencv/highgui.hpp | 33 + .../boost/compute/interop/opencv/ocl.hpp | 51 + .../include/boost/compute/interop/opengl.hpp | 24 + .../boost/compute/interop/opengl/acquire.hpp | 100 + .../boost/compute/interop/opengl/cl_gl.hpp | 22 + .../compute/interop/opengl/cl_gl_ext.hpp | 22 + .../boost/compute/interop/opengl/context.hpp | 139 + .../boost/compute/interop/opengl/gl.hpp | 20 + .../compute/interop/opengl/opengl_buffer.hpp | 106 + .../interop/opengl/opengl_renderbuffer.hpp | 129 + .../compute/interop/opengl/opengl_texture.hpp | 133 + .../include/boost/compute/interop/qt.hpp | 17 + .../boost/compute/interop/qt/qimage.hpp | 69 + .../boost/compute/interop/qt/qpoint.hpp | 20 + .../boost/compute/interop/qt/qpointf.hpp | 20 + .../boost/compute/interop/qt/qtcore.hpp | 18 + .../boost/compute/interop/qt/qtgui.hpp | 16 + .../boost/compute/interop/qt/qvector.hpp | 48 + .../include/boost/compute/interop/vtk.hpp | 19 + .../boost/compute/interop/vtk/bounds.hpp | 59 + .../boost/compute/interop/vtk/data_array.hpp | 65 + .../boost/compute/interop/vtk/matrix4x4.hpp | 46 + .../boost/compute/interop/vtk/points.hpp | 55 + .../include/boost/compute/iterator.hpp | 28 + .../compute/iterator/buffer_iterator.hpp | 295 ++ .../iterator/constant_buffer_iterator.hpp | 209 + .../compute/iterator/constant_iterator.hpp | 171 + .../compute/iterator/counting_iterator.hpp | 185 + .../detail/get_base_iterator_buffer.hpp | 52 + .../iterator/detail/swizzle_iterator.hpp | 188 + .../compute/iterator/discard_iterator.hpp | 170 + .../iterator/function_input_iterator.hpp | 186 + .../compute/iterator/permutation_iterator.hpp | 192 + .../compute/iterator/strided_iterator.hpp | 298 ++ .../compute/iterator/transform_iterator.hpp | 227 + .../boost/compute/iterator/zip_iterator.hpp | 316 ++ libs/compute/include/boost/compute/kernel.hpp | 538 +++ libs/compute/include/boost/compute/lambda.hpp | 22 + .../include/boost/compute/lambda/context.hpp | 364 ++ .../boost/compute/lambda/functional.hpp | 597 +++ .../include/boost/compute/lambda/get.hpp | 148 + .../boost/compute/lambda/make_pair.hpp | 70 + .../boost/compute/lambda/make_tuple.hpp | 127 + .../boost/compute/lambda/placeholder.hpp | 28 + .../boost/compute/lambda/placeholders.hpp | 93 + .../boost/compute/lambda/result_of.hpp | 113 + libs/compute/include/boost/compute/memory.hpp | 21 + .../boost/compute/memory/local_buffer.hpp | 91 + .../include/boost/compute/memory/svm_ptr.hpp | 184 + .../include/boost/compute/memory_object.hpp | 264 ++ libs/compute/include/boost/compute/pipe.hpp | 154 + .../include/boost/compute/platform.hpp | 258 ++ .../compute/include/boost/compute/program.hpp | 799 ++++ libs/compute/include/boost/compute/random.hpp | 28 + .../compute/random/bernoulli_distribution.hpp | 100 + .../compute/random/default_random_engine.hpp | 24 + .../compute/random/discrete_distribution.hpp | 160 + .../random/linear_congruential_engine.hpp | 238 + .../random/mersenne_twister_engine.hpp | 254 ++ .../compute/random/normal_distribution.hpp | 140 + .../boost/compute/random/threefry_engine.hpp | 318 ++ .../random/uniform_int_distribution.hpp | 119 + .../random/uniform_real_distribution.hpp | 116 + libs/compute/include/boost/compute/source.hpp | 12 + libs/compute/include/boost/compute/svm.hpp | 72 + libs/compute/include/boost/compute/system.hpp | 288 ++ .../include/boost/compute/type_traits.hpp | 25 + .../boost/compute/type_traits/common_type.hpp | 55 + .../type_traits/detail/capture_traits.hpp | 33 + .../type_traits/is_device_iterator.hpp | 39 + .../compute/type_traits/is_fundamental.hpp | 58 + .../compute/type_traits/is_vector_type.hpp | 38 + .../compute/type_traits/make_vector_type.hpp | 71 + .../boost/compute/type_traits/result_of.hpp | 39 + .../boost/compute/type_traits/scalar_type.hpp | 72 + .../compute/type_traits/type_definition.hpp | 42 + .../boost/compute/type_traits/type_name.hpp | 124 + .../boost/compute/type_traits/vector_size.hpp | 65 + libs/compute/include/boost/compute/types.hpp | 25 + .../include/boost/compute/types/builtin.hpp | 12 + .../include/boost/compute/types/complex.hpp | 196 + .../boost/compute/types/fundamental.hpp | 217 + .../include/boost/compute/types/pair.hpp | 117 + .../include/boost/compute/types/size_t.hpp | 60 + .../include/boost/compute/types/struct.hpp | 173 + .../include/boost/compute/types/tuple.hpp | 220 + .../include/boost/compute/user_event.hpp | 88 + .../compute/include/boost/compute/utility.hpp | 21 + .../include/boost/compute/utility/dim.hpp | 76 + .../include/boost/compute/utility/extents.hpp | 164 + .../include/boost/compute/utility/invoke.hpp | 71 + .../boost/compute/utility/program_cache.hpp | 172 + .../include/boost/compute/utility/source.hpp | 39 + .../boost/compute/utility/wait_list.hpp | 217 + .../compute/include/boost/compute/version.hpp | 18 + .../include/boost/compute/wait_list.hpp | 12 + libs/compute/index.html | 0 libs/compute/meta/libraries.json | 0 libs/compute/perf/CMakeLists.txt | 0 libs/compute/perf/perf.hpp | 0 libs/compute/perf/perf_accumulate.cpp | 0 .../perf/perf_bernoulli_distribution.cpp | 0 libs/compute/perf/perf_binary_find.cpp | 0 libs/compute/perf/perf_bolt_accumulate.cpp | 0 libs/compute/perf/perf_bolt_count.cpp | 0 .../compute/perf/perf_bolt_exclusive_scan.cpp | 0 libs/compute/perf/perf_bolt_fill.cpp | 0 libs/compute/perf/perf_bolt_inner_product.cpp | 0 libs/compute/perf/perf_bolt_max_element.cpp | 0 libs/compute/perf/perf_bolt_merge.cpp | 0 libs/compute/perf/perf_bolt_partial_sum.cpp | 0 libs/compute/perf/perf_bolt_reduce_by_key.cpp | 0 libs/compute/perf/perf_bolt_saxpy.cpp | 0 libs/compute/perf/perf_bolt_sort.cpp | 0 libs/compute/perf/perf_cart_to_polar.cpp | 0 libs/compute/perf/perf_comparison_sort.cpp | 0 libs/compute/perf/perf_copy_if.cpp | 0 libs/compute/perf/perf_copy_to_device.cpp | 0 libs/compute/perf/perf_count.cpp | 0 .../perf/perf_discrete_distribution.cpp | 0 libs/compute/perf/perf_erase_remove.cpp | 0 libs/compute/perf/perf_exclusive_scan.cpp | 0 libs/compute/perf/perf_fill.cpp | 0 libs/compute/perf/perf_find.cpp | 0 libs/compute/perf/perf_find_end.cpp | 0 libs/compute/perf/perf_host_sort.cpp | 0 libs/compute/perf/perf_includes.cpp | 0 libs/compute/perf/perf_inner_product.cpp | 0 libs/compute/perf/perf_is_permutation.cpp | 0 libs/compute/perf/perf_is_sorted.cpp | 0 libs/compute/perf/perf_max_element.cpp | 0 libs/compute/perf/perf_merge.cpp | 0 libs/compute/perf/perf_next_permutation.cpp | 0 libs/compute/perf/perf_nth_element.cpp | 0 libs/compute/perf/perf_partial_sum.cpp | 0 libs/compute/perf/perf_partition.cpp | 0 libs/compute/perf/perf_partition_point.cpp | 0 libs/compute/perf/perf_prev_permutation.cpp | 0 .../perf/perf_random_number_engine.cpp | 0 libs/compute/perf/perf_reduce_by_key.cpp | 0 libs/compute/perf/perf_reverse.cpp | 0 libs/compute/perf/perf_reverse_copy.cpp | 0 libs/compute/perf/perf_rotate.cpp | 0 libs/compute/perf/perf_rotate_copy.cpp | 0 libs/compute/perf/perf_saxpy.cpp | 0 libs/compute/perf/perf_search.cpp | 0 libs/compute/perf/perf_search_n.cpp | 0 libs/compute/perf/perf_set_difference.cpp | 0 libs/compute/perf/perf_set_intersection.cpp | 0 .../perf/perf_set_symmetric_difference.cpp | 0 libs/compute/perf/perf_set_union.cpp | 0 libs/compute/perf/perf_sort.cpp | 0 libs/compute/perf/perf_sort_by_key.cpp | 0 libs/compute/perf/perf_sort_float.cpp | 0 libs/compute/perf/perf_stable_partition.cpp | 0 libs/compute/perf/perf_stl_accumulate.cpp | 0 libs/compute/perf/perf_stl_count.cpp | 0 libs/compute/perf/perf_stl_find.cpp | 0 libs/compute/perf/perf_stl_find_end.cpp | 0 libs/compute/perf/perf_stl_includes.cpp | 0 libs/compute/perf/perf_stl_inner_product.cpp | 0 libs/compute/perf/perf_stl_is_permutation.cpp | 0 libs/compute/perf/perf_stl_max_element.cpp | 0 libs/compute/perf/perf_stl_merge.cpp | 0 .../perf/perf_stl_next_permutation.cpp | 0 libs/compute/perf/perf_stl_partial_sum.cpp | 0 libs/compute/perf/perf_stl_partition.cpp | 0 .../compute/perf/perf_stl_partition_point.cpp | 0 .../perf/perf_stl_prev_permutation.cpp | 0 libs/compute/perf/perf_stl_reverse.cpp | 0 libs/compute/perf/perf_stl_reverse_copy.cpp | 0 libs/compute/perf/perf_stl_rotate.cpp | 0 libs/compute/perf/perf_stl_rotate_copy.cpp | 0 libs/compute/perf/perf_stl_saxpy.cpp | 0 libs/compute/perf/perf_stl_search.cpp | 0 libs/compute/perf/perf_stl_search_n.cpp | 0 libs/compute/perf/perf_stl_set_difference.cpp | 0 .../perf/perf_stl_set_intersection.cpp | 0 .../perf_stl_set_symmetric_difference.cpp | 0 libs/compute/perf/perf_stl_set_union.cpp | 0 libs/compute/perf/perf_stl_sort.cpp | 0 .../perf/perf_stl_stable_partition.cpp | 0 libs/compute/perf/perf_stl_unique.cpp | 0 libs/compute/perf/perf_stl_unique_copy.cpp | 0 libs/compute/perf/perf_tbb_accumulate.cpp | 0 libs/compute/perf/perf_tbb_merge.cpp | 0 libs/compute/perf/perf_tbb_sort.cpp | 0 libs/compute/perf/perf_thrust_accumulate.cu | 0 libs/compute/perf/perf_thrust_count.cu | 0 .../perf/perf_thrust_exclusive_scan.cu | 0 libs/compute/perf/perf_thrust_find.cu | 0 .../compute/perf/perf_thrust_inner_product.cu | 0 libs/compute/perf/perf_thrust_merge.cu | 0 libs/compute/perf/perf_thrust_partial_sum.cu | 0 libs/compute/perf/perf_thrust_partition.cu | 0 .../compute/perf/perf_thrust_reduce_by_key.cu | 0 libs/compute/perf/perf_thrust_reverse.cu | 0 libs/compute/perf/perf_thrust_reverse_copy.cu | 0 libs/compute/perf/perf_thrust_rotate.cu | 0 libs/compute/perf/perf_thrust_saxpy.cu | 0 .../perf/perf_thrust_set_difference.cu | 0 libs/compute/perf/perf_thrust_sort.cu | 0 libs/compute/perf/perf_thrust_unique.cu | 0 .../perf/perf_uniform_int_distribution.cpp | 0 libs/compute/perf/perf_unique.cpp | 0 libs/compute/perf/perf_unique_copy.cpp | 0 libs/compute/test/CMakeLists.txt | 0 libs/compute/test/Jamfile.v2 | 0 libs/compute/test/check/has_opencl.cpp | 0 libs/compute/test/check_macros.hpp | 0 libs/compute/test/context_setup.hpp | 0 libs/compute/test/data/invalid_program.cl | 0 libs/compute/test/data/program.cl | 0 libs/compute/test/data/program.spirv32 | Bin libs/compute/test/data/program.spirv64 | Bin libs/compute/test/extra/CMakeLists.txt | 0 .../compute/test/extra/test_interop_eigen.cpp | 0 .../test/extra/test_interop_opencv.cpp | 0 .../test/extra/test_interop_opengl.cpp | 0 libs/compute/test/extra/test_interop_qt.cpp | 0 libs/compute/test/extra/test_interop_vtk.cpp | 0 .../test/extra/test_multiple_objects1.cpp | 0 .../test/extra/test_multiple_objects2.cpp | 0 libs/compute/test/opencl_version_check.hpp | 0 libs/compute/test/quirks.hpp | 0 libs/compute/test/test_accumulate.cpp | 0 .../compute/test/test_adjacent_difference.cpp | 0 libs/compute/test/test_adjacent_find.cpp | 0 .../test/test_amd_cpp_kernel_language.cpp | 0 libs/compute/test/test_any_all_none_of.cpp | 0 libs/compute/test/test_array.cpp | 0 libs/compute/test/test_async_wait.cpp | 0 libs/compute/test/test_async_wait_guard.cpp | 0 .../test/test_bernoulli_distribution.cpp | 0 libs/compute/test/test_binary_search.cpp | 0 libs/compute/test/test_buffer.cpp | 0 libs/compute/test/test_buffer_allocator.cpp | 0 libs/compute/test/test_buffer_iterator.cpp | 0 libs/compute/test/test_clamp_range.cpp | 0 libs/compute/test/test_closure.cpp | 0 libs/compute/test/test_command_queue.cpp | 0 libs/compute/test/test_complex.cpp | 0 libs/compute/test/test_constant_iterator.cpp | 0 libs/compute/test/test_context.cpp | 0 libs/compute/test/test_context_error.cpp | 0 libs/compute/test/test_copy.cpp | 0 libs/compute/test/test_copy_if.cpp | 0 libs/compute/test/test_copy_type_mismatch.cpp | 0 libs/compute/test/test_count.cpp | 0 libs/compute/test/test_counting_iterator.cpp | 0 libs/compute/test/test_device.cpp | 0 libs/compute/test/test_discard_iterator.cpp | 0 .../test/test_discrete_distribution.cpp | 0 libs/compute/test/test_dynamic_bitset.cpp | 0 libs/compute/test/test_equal.cpp | 0 libs/compute/test/test_equal_range.cpp | 0 libs/compute/test/test_event.cpp | 0 libs/compute/test/test_extents.cpp | 0 libs/compute/test/test_extrema.cpp | 0 libs/compute/test/test_fill.cpp | 0 libs/compute/test/test_find.cpp | 0 libs/compute/test/test_find_end.cpp | 0 libs/compute/test/test_flat_map.cpp | 0 libs/compute/test/test_flat_set.cpp | 0 libs/compute/test/test_for_each.cpp | 0 libs/compute/test/test_function.cpp | 0 .../test/test_function_input_iterator.cpp | 0 libs/compute/test/test_functional_as.cpp | 0 libs/compute/test/test_functional_bind.cpp | 0 libs/compute/test/test_functional_convert.cpp | 0 libs/compute/test/test_functional_get.cpp | 0 libs/compute/test/test_functional_hash.cpp | 0 .../compute/test/test_functional_identity.cpp | 0 .../compute/test/test_functional_popcount.cpp | 0 libs/compute/test/test_functional_unpack.cpp | 0 libs/compute/test/test_gather.cpp | 0 libs/compute/test/test_generate.cpp | 0 libs/compute/test/test_image1d.cpp | 0 libs/compute/test/test_image2d.cpp | 0 libs/compute/test/test_image3d.cpp | 0 libs/compute/test/test_image_sampler.cpp | 0 libs/compute/test/test_includes.cpp | 0 libs/compute/test/test_inner_product.cpp | 0 libs/compute/test/test_inplace_merge.cpp | 0 libs/compute/test/test_inplace_reduce.cpp | 0 libs/compute/test/test_insertion_sort.cpp | 0 libs/compute/test/test_invoke.cpp | 0 libs/compute/test/test_iota.cpp | 0 libs/compute/test/test_is_permutation.cpp | 0 libs/compute/test/test_is_sorted.cpp | 0 libs/compute/test/test_kernel.cpp | 0 libs/compute/test/test_lambda.cpp | 0 .../test/test_lexicographical_compare.cpp | 0 .../test/test_linear_congruential_engine.cpp | 0 libs/compute/test/test_literal_conversion.cpp | 0 libs/compute/test/test_local_buffer.cpp | 0 libs/compute/test/test_malloc.cpp | 0 libs/compute/test/test_mapped_view.cpp | 0 libs/compute/test/test_merge.cpp | 0 libs/compute/test/test_merge_sort_gpu.cpp | 0 .../test/test_mersenne_twister_engine.cpp | 0 libs/compute/test/test_mismatch.cpp | 0 libs/compute/test/test_next_permutation.cpp | 0 libs/compute/test/test_no_device_found.cpp | 0 .../compute/test/test_normal_distribution.cpp | 0 libs/compute/test/test_nth_element.cpp | 0 libs/compute/test/test_opencl_error.cpp | 0 libs/compute/test/test_pair.cpp | 0 libs/compute/test/test_partial_sum.cpp | 0 libs/compute/test/test_partition.cpp | 0 libs/compute/test/test_partition_point.cpp | 0 .../test/test_permutation_iterator.cpp | 0 libs/compute/test/test_pinned_allocator.cpp | 0 libs/compute/test/test_pipe.cpp | 0 libs/compute/test/test_platform.cpp | 0 libs/compute/test/test_prev_permutation.cpp | 0 libs/compute/test/test_program.cpp | 0 libs/compute/test/test_program_cache.cpp | 0 libs/compute/test/test_radix_sort.cpp | 0 libs/compute/test/test_radix_sort_by_key.cpp | 0 libs/compute/test/test_random_fill.cpp | 0 libs/compute/test/test_random_shuffle.cpp | 0 libs/compute/test/test_reduce.cpp | 0 libs/compute/test/test_reduce_by_key.cpp | 0 libs/compute/test/test_remove.cpp | 0 libs/compute/test/test_replace.cpp | 0 libs/compute/test/test_result_of.cpp | 0 libs/compute/test/test_reverse.cpp | 0 libs/compute/test/test_rotate.cpp | 0 libs/compute/test/test_rotate_copy.cpp | 0 libs/compute/test/test_scan.cpp | 0 libs/compute/test/test_scatter.cpp | 0 libs/compute/test/test_scatter_if.cpp | 0 libs/compute/test/test_search.cpp | 0 libs/compute/test/test_search_n.cpp | 0 libs/compute/test/test_set_difference.cpp | 0 libs/compute/test/test_set_intersection.cpp | 0 .../test/test_set_symmetric_difference.cpp | 0 libs/compute/test/test_set_union.cpp | 0 libs/compute/test/test_sort.cpp | 0 libs/compute/test/test_sort_by_key.cpp | 0 libs/compute/test/test_sort_by_transform.cpp | 0 libs/compute/test/test_stable_partition.cpp | 0 libs/compute/test/test_stable_sort.cpp | 0 libs/compute/test/test_stable_sort_by_key.cpp | 0 libs/compute/test/test_stack.cpp | 0 libs/compute/test/test_strided_iterator.cpp | 0 libs/compute/test/test_string.cpp | 0 libs/compute/test/test_struct.cpp | 0 libs/compute/test/test_svm_ptr.cpp | 0 libs/compute/test/test_system.cpp | 0 libs/compute/test/test_tabulate.cpp | 0 libs/compute/test/test_threefry_engine.cpp | 0 libs/compute/test/test_transform.cpp | 0 libs/compute/test/test_transform_if.cpp | 0 libs/compute/test/test_transform_iterator.cpp | 0 libs/compute/test/test_transform_reduce.cpp | 0 libs/compute/test/test_tuple.cpp | 0 libs/compute/test/test_type_traits.cpp | 0 libs/compute/test/test_types.cpp | 0 .../test/test_uniform_int_distribution.cpp | 0 .../test/test_uniform_real_distribution.cpp | 0 libs/compute/test/test_unique.cpp | 0 libs/compute/test/test_unique_copy.cpp | 0 .../test/test_unsupported_extension.cpp | 0 libs/compute/test/test_user_defined_types.cpp | 0 libs/compute/test/test_user_event.cpp | 0 libs/compute/test/test_valarray.cpp | 0 libs/compute/test/test_vector.cpp | 0 libs/compute/test/test_wait_list.cpp | 0 libs/compute/test/test_zip_iterator.cpp | 0 libs/hana/CMakeLists.txt | 0 libs/hana/CONTRIBUTING.md | 0 libs/hana/LICENSE.md | 0 libs/hana/README.md | 24 +- libs/hana/RELEASE_NOTES.md | 9 +- libs/hana/benchmark/CMakeLists.txt | 0 libs/hana/benchmark/chart.html | 0 libs/hana/benchmark/find_if/compile.erb.json | 0 .../find_if/compile.fusion.list.erb.cpp | 0 .../find_if/compile.fusion.vector.erb.cpp | 0 .../find_if/compile.hana.map.erb.cpp | 0 .../find_if/compile.hana.set.erb.cpp | 0 .../find_if/compile.hana.tuple.erb.cpp | 0 .../find_if/compile.meta.list.erb.cpp | 0 .../find_if/compile.mpl.vector.erb.cpp | 0 .../compile.std.integer_sequence.erb.cpp | 0 libs/hana/benchmark/fold_left/bloat.erb.json | 0 .../fold_left/compile.cexpr.recursive.erb.cpp | 0 .../fold_left/compile.cexpr.unrolled.erb.cpp | 0 .../hana/benchmark/fold_left/compile.erb.json | 0 .../fold_left/compile.fusion.list.erb.cpp | 0 .../fold_left/compile.fusion.vector.erb.cpp | 0 .../compile.hana.basic_tuple.erb.cpp | 0 .../fold_left/compile.hana.tuple.erb.cpp | 0 .../fold_left/compile.meta.list.erb.cpp | 0 .../fold_left/compile.mpl.vector.erb.cpp | 0 .../fold_left/compile.mpl11.list.erb.cpp | 0 .../hana/benchmark/fold_left/execute.erb.json | 0 .../fold_left/execute.fusion.list.erb.cpp | 0 .../fold_left/execute.fusion.vector.erb.cpp | 0 .../fold_left/execute.hana.tuple.erb.cpp | 0 .../fold_left/execute.std.array.erb.cpp | 0 .../fold_left/execute.std.vector.erb.cpp | 0 .../hana/benchmark/including/baseline.erb.cpp | 0 .../hana/benchmark/including/compile.erb.json | 0 libs/hana/benchmark/including/fusion.erb.cpp | 0 libs/hana/benchmark/including/hana.erb.cpp | 0 libs/hana/benchmark/including/meta.erb.cpp | 0 libs/hana/benchmark/including/mpl.erb.cpp | 0 libs/hana/benchmark/including/mpl11.erb.cpp | 0 libs/hana/benchmark/make/compile.erb.json | 0 .../make/compile.fusion.list.erb.cpp | 0 .../make/compile.fusion.vector.erb.cpp | 0 .../make/compile.hana.basic_tuple.erb.cpp | 0 .../benchmark/make/compile.hana.tuple.erb.cpp | 0 .../benchmark/make/compile.meta.list.erb.cpp | 0 .../benchmark/make/compile.mpl.vector.erb.cpp | 0 .../benchmark/make/compile.mpl11.list.erb.cpp | 0 .../benchmark/make/compile.std.array.erb.cpp | 0 .../benchmark/make/compile.std.tuple.erb.cpp | 0 libs/hana/benchmark/measure.hpp | 0 libs/hana/benchmark/reverse/move.erb.json | 0 .../reverse/move.fusion.vector.erb.cpp | 0 .../benchmark/reverse/move.hana.tuple.erb.cpp | 0 libs/hana/benchmark/reverse/nomove.erb.json | 0 .../reverse/nomove.fusion.vector.erb.cpp | 0 .../reverse/nomove.hana.tuple.erb.cpp | 0 libs/hana/benchmark/sort/compile.erb.json | 0 .../sort/compile.hana.tuple.rand.erb.cpp | 0 .../sort/compile.hana.tuple.reversed.erb.cpp | 0 .../sort/compile.hana.tuple.sorted.erb.cpp | 0 ...ompile.hana.tuple.sorted_but_first.erb.cpp | 0 ...compile.hana.tuple.sorted_but_last.erb.cpp | 0 libs/hana/benchmark/transform/bloat.erb.json | 0 .../hana/benchmark/transform/compile.erb.json | 0 .../transform/compile.fusion.list.erb.cpp | 0 .../transform/compile.fusion.vector.erb.cpp | 0 .../transform/compile.hana.tuple.erb.cpp | 0 .../transform/compile.hana.types.erb.cpp | 0 .../transform/compile.meta.list.erb.cpp | 0 .../transform/compile.mpl.vector.erb.cpp | 0 .../transform/compile.mpl11.list.erb.cpp | 0 .../hana/benchmark/transform/execute.erb.json | 0 .../transform/execute.fusion.list.erb.cpp | 0 .../transform/execute.fusion.vector.erb.cpp | 0 .../transform/execute.hana.tuple.erb.cpp | 0 .../transform/execute.std.array.erb.cpp | 0 .../transform/execute.std.vector.erb.cpp | 0 libs/hana/cmake/CheckCxxCompilerSupport.cmake | 0 libs/hana/cmake/FindMPL11.cmake | 0 libs/hana/cmake/FindMeta.cmake | 0 libs/hana/cmake/TestHeaders.cmake | 0 libs/hana/cmake/hana.pc.in | 0 libs/hana/doc/CMakeLists.txt | 0 libs/hana/doc/Doxyfile.in | 0 libs/hana/doc/Jamfile.v2 | 0 libs/hana/doc/footer.html | 0 libs/hana/doc/header.html | 0 libs/hana/doc/icons/Boost.png | Bin libs/hana/doc/js/chart.js | 0 libs/hana/doc/js/hana.js | 0 libs/hana/doc/js/highcharts-data.js | 55 +- libs/hana/doc/js/highcharts-exporting.js | 55 +- libs/hana/doc/js/highcharts.js | 865 ++-- libs/hana/doc/js/mathjax-config.js | 0 libs/hana/doc/layout.xml | 0 libs/hana/doc/tutorial.hpp | 102 +- libs/hana/example/CMakeLists.txt | 0 libs/hana/example/accessors.cpp | 0 libs/hana/example/adapt_adt.cpp | 0 libs/hana/example/adapt_struct.cpp | 0 libs/hana/example/adjust.cpp | 0 libs/hana/example/adjust_if.cpp | 0 libs/hana/example/all.cpp | 0 libs/hana/example/all_of.cpp | 0 libs/hana/example/and.cpp | 0 libs/hana/example/any.cpp | 0 libs/hana/example/any_of.cpp | 0 libs/hana/example/ap.cpp | 0 libs/hana/example/append.cpp | 0 libs/hana/example/at.cpp | 0 libs/hana/example/at_c.cpp | 0 libs/hana/example/at_key.cpp | 0 libs/hana/example/back.cpp | 0 libs/hana/example/basic_tuple/make.cpp | 0 libs/hana/example/cartesian_product.cpp | 0 libs/hana/example/chain.cpp | 0 .../example/cmake_integration/CMakeLists.txt | 0 libs/hana/example/cmake_integration/main.cpp | 0 libs/hana/example/comparing.cpp | 0 libs/hana/example/concat.cpp | 0 libs/hana/example/contains.cpp | 0 libs/hana/example/core/common/common.cpp | 0 libs/hana/example/core/common/common_t.cpp | 0 libs/hana/example/core/common/has_common.cpp | 0 libs/hana/example/core/convert/embedding.cpp | 0 .../example/core/convert/is_convertible.cpp | 0 .../hana/example/core/convert/is_embedded.cpp | 0 libs/hana/example/core/convert/to.cpp | 0 libs/hana/example/core/default.cpp | 0 libs/hana/example/core/is_a.cpp | 0 libs/hana/example/core/make.cpp | 0 libs/hana/example/core/tag_of.cpp | 0 libs/hana/example/core/tag_of_t.cpp | 0 libs/hana/example/core/when.cpp | 0 libs/hana/example/core/when_valid.cpp | 0 libs/hana/example/count.cpp | 0 libs/hana/example/count_if.cpp | 0 libs/hana/example/cppcon_2014/comparable.cpp | 0 libs/hana/example/cppcon_2014/det.cpp | 0 libs/hana/example/cppcon_2014/functor.cpp | 0 libs/hana/example/cppcon_2014/matrix.cpp | 0 .../example/cppcon_2014/matrix/comparable.hpp | 0 libs/hana/example/cppcon_2014/matrix/det.hpp | 0 .../example/cppcon_2014/matrix/functor.hpp | 0 .../hana/example/cppcon_2014/matrix/group.hpp | 0 .../example/cppcon_2014/matrix/matrix.hpp | 0 .../example/cppcon_2014/matrix/monoid.hpp | 0 libs/hana/example/cppcon_2014/matrix/ring.hpp | 0 libs/hana/example/cppcon_2014/ring.cpp | 0 libs/hana/example/cycle.cpp | 0 libs/hana/example/define_struct.cpp | 0 libs/hana/example/detail/wrong.cpp | 0 libs/hana/example/div.cpp | 0 libs/hana/example/drop_back.cpp | 0 libs/hana/example/drop_front.cpp | 0 libs/hana/example/drop_front_exactly.cpp | 0 libs/hana/example/drop_while.cpp | 0 libs/hana/example/duplicate.cpp | 0 libs/hana/example/empty.cpp | 0 libs/hana/example/equal.cpp | 0 libs/hana/example/eval.cpp | 0 libs/hana/example/eval_if.cpp | 0 libs/hana/example/ext/boost/fusion/deque.cpp | 0 libs/hana/example/ext/boost/fusion/list.cpp | 0 libs/hana/example/ext/boost/fusion/tuple.cpp | 0 libs/hana/example/ext/boost/fusion/vector.cpp | 0 .../mpl/integral_c/integral_constant.cpp | 0 .../example/ext/boost/mpl/list/comparable.cpp | 0 .../example/ext/boost/mpl/list/conversion.cpp | 0 .../example/ext/boost/mpl/list/foldable.cpp | 0 .../example/ext/boost/mpl/list/iterable.cpp | 0 .../example/ext/boost/mpl/list/searchable.cpp | 0 .../ext/boost/mpl/vector/comparable.cpp | 0 .../ext/boost/mpl/vector/conversion.cpp | 0 .../example/ext/boost/mpl/vector/foldable.cpp | 0 .../example/ext/boost/mpl/vector/iterable.cpp | 0 .../ext/boost/mpl/vector/searchable.cpp | 0 libs/hana/example/ext/boost/tuple.cpp | 0 .../hana/example/ext/std/array/comparable.cpp | 0 libs/hana/example/ext/std/array/foldable.cpp | 0 libs/hana/example/ext/std/array/iterable.cpp | 0 libs/hana/example/ext/std/array/orderable.cpp | 0 .../ext/std/integer_sequence/comparable.cpp | 0 .../ext/std/integer_sequence/foldable.cpp | 0 .../ext/std/integer_sequence/iterable.cpp | 0 .../ext/std/integer_sequence/searchable.cpp | 0 .../example/ext/std/integral_constant.cpp | 0 libs/hana/example/ext/std/pair.cpp | 0 .../hana/example/ext/std/ratio/arithmetic.cpp | 0 .../hana/example/ext/std/ratio/comparable.cpp | 0 libs/hana/example/ext/std/ratio/orderable.cpp | 0 libs/hana/example/ext/std/tuple.cpp | 0 libs/hana/example/extend.cpp | 0 libs/hana/example/extract.cpp | 0 libs/hana/example/fill.cpp | 0 libs/hana/example/filter.cpp | 0 libs/hana/example/find.cpp | 0 libs/hana/example/find_if.cpp | 0 libs/hana/example/first.cpp | 0 libs/hana/example/flatten.cpp | 0 libs/hana/example/fold.cpp | 0 libs/hana/example/fold_left.cpp | 0 libs/hana/example/fold_right.cpp | 0 libs/hana/example/foldable/to.cpp | 0 libs/hana/example/for_each.cpp | 0 libs/hana/example/front.cpp | 0 libs/hana/example/functional/always.cpp | 0 libs/hana/example/functional/apply.cpp | 0 libs/hana/example/functional/arg.cpp | 0 libs/hana/example/functional/capture.cpp | 0 libs/hana/example/functional/compose.cpp | 0 libs/hana/example/functional/curry.cpp | 0 libs/hana/example/functional/demux.cpp | 0 libs/hana/example/functional/fix.cpp | 0 libs/hana/example/functional/flip.cpp | 0 libs/hana/example/functional/id.cpp | 0 libs/hana/example/functional/infix.cpp | 0 libs/hana/example/functional/iterate.cpp | 0 libs/hana/example/functional/lockstep.cpp | 0 libs/hana/example/functional/on.cpp | 0 libs/hana/example/functional/overload.cpp | 0 .../example/functional/overload_linearly.cpp | 0 libs/hana/example/functional/partial.cpp | 0 libs/hana/example/functional/placeholder.cpp | 0 .../example/functional/reverse_partial.cpp | 0 libs/hana/example/fuse.cpp | 0 libs/hana/example/greater.cpp | 0 libs/hana/example/greater_equal.cpp | 0 libs/hana/example/group.cpp | 0 libs/hana/example/hash.cpp | 0 libs/hana/example/if.cpp | 0 libs/hana/example/in.cpp | 0 libs/hana/example/index_if.cpp | 0 libs/hana/example/insert.cpp | 0 libs/hana/example/insert_range.cpp | 0 libs/hana/example/integral_constant.cpp | 0 libs/hana/example/intersperse.cpp | 0 libs/hana/example/is_disjoint.cpp | 0 libs/hana/example/is_empty.cpp | 0 libs/hana/example/is_subset.cpp | 0 libs/hana/example/iterable/searchable.cpp | 0 libs/hana/example/lazy/comonad.cpp | 0 libs/hana/example/lazy/functor.cpp | 0 libs/hana/example/lazy/make.cpp | 0 libs/hana/example/lazy/monad.cpp | 0 libs/hana/example/length.cpp | 0 libs/hana/example/less.cpp | 0 libs/hana/example/less_equal.cpp | 0 libs/hana/example/lexicographical_compare.cpp | 0 libs/hana/example/lift.cpp | 0 libs/hana/example/map/comparable.cpp | 0 libs/hana/example/map/difference.cpp | 0 libs/hana/example/map/erase_key.cpp | 0 libs/hana/example/map/foldable.cpp | 0 libs/hana/example/map/insert.cpp | 0 libs/hana/example/map/intersection.cpp | 0 libs/hana/example/map/keys.cpp | 0 libs/hana/example/map/make.cpp | 0 libs/hana/example/map/map.cpp | 0 libs/hana/example/map/searchable.cpp | 0 .../hana/example/map/symmetric_difference.cpp | 0 libs/hana/example/map/to.cpp | 0 libs/hana/example/map/union.cpp | 0 libs/hana/example/map/values.cpp | 0 libs/hana/example/max.cpp | 0 libs/hana/example/maximum.cpp | 0 libs/hana/example/maximum_by.cpp | 0 libs/hana/example/members.cpp | 0 libs/hana/example/min.cpp | 0 libs/hana/example/minimum.cpp | 0 libs/hana/example/minimum_by.cpp | 0 libs/hana/example/minus.cpp | 0 .../example/misc/dimensional_analysis.cpp | 0 libs/hana/example/misc/from_json.cpp | 0 libs/hana/example/misc/indexed_sort.cpp | 0 libs/hana/example/misc/infinite_list.cpp | 0 libs/hana/example/misc/infinite_set.cpp | 0 libs/hana/example/misc/lambda_tuple.cpp | 0 libs/hana/example/misc/nth.cpp | 0 libs/hana/example/misc/overload_linearly.cpp | 0 libs/hana/example/misc/printf.cpp | 0 libs/hana/example/misc/ref_tuple.cpp | 0 .../hana/example/misc/restricted_function.cpp | 0 libs/hana/example/misc/tree.cpp | 0 libs/hana/example/mod.cpp | 0 libs/hana/example/monadic_compose.cpp | 0 libs/hana/example/monadic_fold_left.cpp | 0 libs/hana/example/monadic_fold_right.cpp | 0 libs/hana/example/mult.cpp | 0 libs/hana/example/negate.cpp | 0 libs/hana/example/none.cpp | 0 libs/hana/example/none_of.cpp | 0 libs/hana/example/not.cpp | 0 libs/hana/example/not_equal.cpp | 0 libs/hana/example/one.cpp | 0 .../example/optional/applicative.complex.cpp | 0 libs/hana/example/optional/applicative.cpp | 0 libs/hana/example/optional/comparable.cpp | 0 libs/hana/example/optional/foldable.cpp | 0 libs/hana/example/optional/functor.cpp | 0 libs/hana/example/optional/is_just.cpp | 0 libs/hana/example/optional/is_nothing.cpp | 0 libs/hana/example/optional/just.cpp | 0 libs/hana/example/optional/make.cpp | 0 libs/hana/example/optional/maybe.cpp | 0 libs/hana/example/optional/monad.cpp | 0 libs/hana/example/optional/monad_plus.cpp | 0 libs/hana/example/optional/nothing.cpp | 0 libs/hana/example/optional/orderable.cpp | 0 libs/hana/example/optional/searchable.cpp | 0 libs/hana/example/optional/sfinae.cpp | 0 .../sfinae_friendly_metafunctions.cpp | 0 libs/hana/example/optional/value.cpp | 0 libs/hana/example/optional/value_or.cpp | 0 libs/hana/example/or.cpp | 0 libs/hana/example/ordering.cpp | 0 libs/hana/example/overview.cpp | 0 libs/hana/example/pair/comparable.cpp | 0 libs/hana/example/pair/foldable.cpp | 0 libs/hana/example/pair/make.cpp | 0 libs/hana/example/pair/orderable.cpp | 0 libs/hana/example/pair/product.cpp | 0 libs/hana/example/partition.cpp | 0 libs/hana/example/permutations.cpp | 0 libs/hana/example/plus.cpp | 0 libs/hana/example/power.cpp | 0 libs/hana/example/prefix.cpp | 0 libs/hana/example/prepend.cpp | 0 libs/hana/example/product.cpp | 0 libs/hana/example/product/comparable.cpp | 0 libs/hana/example/product/make.cpp | 0 libs/hana/example/range/comparable.cpp | 0 libs/hana/example/range/foldable.cpp | 0 libs/hana/example/range/iterable.cpp | 0 libs/hana/example/range/make.cpp | 0 libs/hana/example/range/range_c.cpp | 0 libs/hana/example/range/searchable.cpp | 0 libs/hana/example/remove.cpp | 0 libs/hana/example/remove_at.cpp | 0 libs/hana/example/remove_at_c.cpp | 0 libs/hana/example/remove_if.cpp | 0 libs/hana/example/remove_range.cpp | 0 libs/hana/example/remove_range_c.cpp | 0 libs/hana/example/repeat.cpp | 0 libs/hana/example/replace.cpp | 0 libs/hana/example/replace_if.cpp | 0 libs/hana/example/replicate.cpp | 0 libs/hana/example/reverse.cpp | 0 libs/hana/example/reverse_fold.cpp | 0 libs/hana/example/scan_left.cpp | 0 libs/hana/example/scan_right.cpp | 0 libs/hana/example/second.cpp | 0 libs/hana/example/sequence/applicative.cpp | 0 libs/hana/example/sequence/comparable.cpp | 0 libs/hana/example/sequence/foldable.cpp | 0 libs/hana/example/sequence/functor.cpp | 0 libs/hana/example/sequence/iterable.cpp | 0 libs/hana/example/sequence/make.cpp | 0 libs/hana/example/sequence/monad.ints.cpp | 0 libs/hana/example/sequence/monad.types.cpp | 0 libs/hana/example/sequence/monad_plus.cpp | 0 libs/hana/example/sequence/orderable.cpp | 0 libs/hana/example/sequence/searchable.cpp | 0 libs/hana/example/set/comparable.cpp | 0 libs/hana/example/set/difference.cpp | 0 libs/hana/example/set/erase_key.cpp | 0 libs/hana/example/set/foldable.cpp | 0 libs/hana/example/set/insert.cpp | 0 libs/hana/example/set/intersection.cpp | 0 libs/hana/example/set/make.cpp | 0 libs/hana/example/set/searchable.cpp | 0 .../hana/example/set/symmetric_difference.cpp | 0 libs/hana/example/set/to.cpp | 0 libs/hana/example/set/union.cpp | 0 libs/hana/example/size.cpp | 0 libs/hana/example/slice.cpp | 0 libs/hana/example/slice_c.cpp | 0 libs/hana/example/sort.cpp | 0 libs/hana/example/span.cpp | 0 libs/hana/example/string/comparable.cpp | 0 libs/hana/example/string/foldable.cpp | 0 libs/hana/example/string/from_c_str.cpp | 0 libs/hana/example/string/hashable.cpp | 0 libs/hana/example/string/iterable.cpp | 0 libs/hana/example/string/literal.cpp | 0 libs/hana/example/string/macro.cpp | 0 libs/hana/example/string/make.cpp | 0 libs/hana/example/string/monoid.cpp | 0 libs/hana/example/string/orderable.cpp | 0 libs/hana/example/string/searchable.cpp | 0 libs/hana/example/string/string_c.cpp | 0 libs/hana/example/string/to.cpp | 0 libs/hana/example/struct.custom_accessor.cpp | 0 libs/hana/example/struct.mcd.nested.cpp | 0 .../example/struct.mcd.tag_dispatching.cpp | 0 libs/hana/example/struct/comparable.cpp | 0 libs/hana/example/struct/foldable.cpp | 0 libs/hana/example/struct/keys.cpp | 0 libs/hana/example/struct/searchable.cpp | 0 libs/hana/example/struct/to.cpp | 0 libs/hana/example/suffix.cpp | 0 libs/hana/example/sum.cpp | 0 libs/hana/example/take_back.cpp | 0 libs/hana/example/take_back_c.cpp | 0 libs/hana/example/take_front.cpp | 0 libs/hana/example/take_front_c.cpp | 0 libs/hana/example/take_while.cpp | 0 libs/hana/example/tap.cpp | 0 libs/hana/example/then.cpp | 0 libs/hana/example/transform.cpp | 0 libs/hana/example/tuple/foldable.cpp | 0 libs/hana/example/tuple/interop.cpp | 0 libs/hana/example/tuple/make.cpp | 0 libs/hana/example/tuple/tuple.cpp | 0 libs/hana/example/tuple/tuple_c.cpp | 0 libs/hana/example/tuple/tuple_t.cpp | 0 libs/hana/example/tutorial/algorithms.cpp | 0 libs/hana/example/tutorial/appendix_mpl.cpp | 0 libs/hana/example/tutorial/concepts.cpp | 0 .../tutorial/constant_side_effects.cpp | 0 libs/hana/example/tutorial/containers.cpp | 0 .../example/tutorial/ext/fusion_to_hana.cpp | 0 libs/hana/example/tutorial/ext/mpl_vector.cpp | 0 libs/hana/example/tutorial/ext/ratio_plus.cpp | 0 libs/hana/example/tutorial/include_ext.cpp | 0 .../example/tutorial/integral-branching.cpp | 0 libs/hana/example/tutorial/integral.cpp | 0 libs/hana/example/tutorial/introduction.cpp | 0 .../example/tutorial/introspection.adapt.cpp | 0 libs/hana/example/tutorial/introspection.cpp | 0 .../example/tutorial/introspection.json.cpp | 0 .../example/tutorial/introspection.sfinae.cpp | 0 libs/hana/example/tutorial/mpl_cheatsheet.cpp | 0 libs/hana/example/tutorial/quickstart.cpp | 0 .../example/tutorial/quickstart.switchAny.cpp | 0 .../example/tutorial/rationale.container.cpp | 0 .../hana/example/tutorial/tag_dispatching.cpp | 0 libs/hana/example/tutorial/type.cpp | 0 libs/hana/example/type/alignof.cpp | 0 libs/hana/example/type/basic_type.cpp | 0 libs/hana/example/type/comparable.cpp | 0 libs/hana/example/type/decltype.cpp | 0 libs/hana/example/type/hashable.cpp | 0 libs/hana/example/type/integral.cpp | 0 libs/hana/example/type/is_valid.cpp | 0 libs/hana/example/type/make.cpp | 0 libs/hana/example/type/metafunction.cpp | 0 libs/hana/example/type/metafunction_class.cpp | 0 libs/hana/example/type/sizeof.cpp | 0 libs/hana/example/type/template.cpp | 0 libs/hana/example/type/trait.cpp | 0 libs/hana/example/type/typeid.cpp | 0 libs/hana/example/unfold_left.cpp | 0 libs/hana/example/unfold_right.cpp | 0 libs/hana/example/unique.cpp | 0 libs/hana/example/unpack.cpp | 0 libs/hana/example/value.cpp | 0 libs/hana/example/value_of.cpp | 0 libs/hana/example/version.cpp | 0 libs/hana/example/wandbox.cpp | 0 libs/hana/example/while.cpp | 0 libs/hana/example/zero.cpp | 0 libs/hana/example/zip.cpp | 0 libs/hana/example/zip_shortest.cpp | 0 libs/hana/example/zip_shortest_with.cpp | 0 libs/hana/example/zip_with.cpp | 0 libs/hana/hana.sublime-project | 0 libs/hana/include/boost/hana.hpp | 209 + libs/hana/include/boost/hana/accessors.hpp | 56 + libs/hana/include/boost/hana/adapt_adt.hpp | 17 + libs/hana/include/boost/hana/adapt_struct.hpp | 17 + libs/hana/include/boost/hana/adjust.hpp | 55 + libs/hana/include/boost/hana/adjust_if.hpp | 78 + libs/hana/include/boost/hana/all.hpp | 48 + libs/hana/include/boost/hana/all_of.hpp | 51 + libs/hana/include/boost/hana/and.hpp | 58 + libs/hana/include/boost/hana/any.hpp | 48 + libs/hana/include/boost/hana/any_of.hpp | 192 + libs/hana/include/boost/hana/ap.hpp | 78 + libs/hana/include/boost/hana/append.hpp | 74 + libs/hana/include/boost/hana/assert.hpp | 327 ++ libs/hana/include/boost/hana/at.hpp | 57 + libs/hana/include/boost/hana/at_key.hpp | 97 + libs/hana/include/boost/hana/back.hpp | 53 + libs/hana/include/boost/hana/basic_tuple.hpp | 264 ++ libs/hana/include/boost/hana/bool.hpp | 271 ++ .../include/boost/hana/cartesian_product.hpp | 113 + libs/hana/include/boost/hana/chain.hpp | 50 + libs/hana/include/boost/hana/comparing.hpp | 44 + libs/hana/include/boost/hana/concat.hpp | 80 + libs/hana/include/boost/hana/concept.hpp | 36 + .../boost/hana/concept/applicative.hpp | 33 + .../include/boost/hana/concept/comonad.hpp | 35 + .../include/boost/hana/concept/comparable.hpp | 32 + .../include/boost/hana/concept/constant.hpp | 31 + .../boost/hana/concept/euclidean_ring.hpp | 35 + .../include/boost/hana/concept/foldable.hpp | 33 + .../include/boost/hana/concept/functor.hpp | 33 + .../hana/include/boost/hana/concept/group.hpp | 34 + .../include/boost/hana/concept/hashable.hpp | 32 + .../boost/hana/concept/integral_constant.hpp | 43 + .../include/boost/hana/concept/iterable.hpp | 35 + .../include/boost/hana/concept/logical.hpp | 35 + .../boost/hana/concept/metafunction.hpp | 41 + .../hana/include/boost/hana/concept/monad.hpp | 33 + .../include/boost/hana/concept/monad_plus.hpp | 33 + .../include/boost/hana/concept/monoid.hpp | 34 + .../include/boost/hana/concept/orderable.hpp | 32 + .../include/boost/hana/concept/product.hpp | 33 + libs/hana/include/boost/hana/concept/ring.hpp | 34 + .../include/boost/hana/concept/searchable.hpp | 33 + .../include/boost/hana/concept/sequence.hpp | 44 + .../include/boost/hana/concept/struct.hpp | 31 + libs/hana/include/boost/hana/config.hpp | 173 + libs/hana/include/boost/hana/contains.hpp | 51 + libs/hana/include/boost/hana/core.hpp | 22 + libs/hana/include/boost/hana/core/common.hpp | 109 + libs/hana/include/boost/hana/core/default.hpp | 32 + .../hana/include/boost/hana/core/dispatch.hpp | 18 + libs/hana/include/boost/hana/core/is_a.hpp | 41 + libs/hana/include/boost/hana/core/make.hpp | 45 + libs/hana/include/boost/hana/core/tag_of.hpp | 59 + libs/hana/include/boost/hana/core/to.hpp | 196 + libs/hana/include/boost/hana/core/when.hpp | 15 + libs/hana/include/boost/hana/count.hpp | 50 + libs/hana/include/boost/hana/count_if.hpp | 92 + libs/hana/include/boost/hana/cycle.hpp | 127 + .../hana/include/boost/hana/define_struct.hpp | 17 + .../include/boost/hana/detail/algorithm.hpp | 186 + .../hana/include/boost/hana/detail/any_of.hpp | 46 + libs/hana/include/boost/hana/detail/array.hpp | 105 + .../boost/hana/detail/canonical_constant.hpp | 80 + .../include/boost/hana/detail/concepts.hpp | 78 + .../hana/include/boost/hana/detail/create.hpp | 33 + libs/hana/include/boost/hana/detail/decay.hpp | 48 + .../include/boost/hana/detail/dispatch_if.hpp | 56 + libs/hana/include/boost/hana/detail/ebo.hpp | 115 + .../include/boost/hana/detail/fast_and.hpp | 25 + .../hana/detail/first_unsatisfied_index.hpp | 56 + .../hana/detail/has_common_embedding.hpp | 69 + .../boost/hana/detail/has_duplicates.hpp | 65 + .../include/boost/hana/detail/hash_table.hpp | 145 + .../include/boost/hana/detail/index_if.hpp | 55 + .../boost/hana/detail/integral_constant.hpp | 249 ++ .../include/boost/hana/detail/intrinsics.hpp | 67 + .../include/boost/hana/detail/nested_by.hpp | 40 + .../boost/hana/detail/nested_by_fwd.hpp | 55 + .../include/boost/hana/detail/nested_than.hpp | 29 + .../boost/hana/detail/nested_than_fwd.hpp | 47 + .../include/boost/hana/detail/nested_to.hpp | 28 + .../boost/hana/detail/nested_to_fwd.hpp | 47 + .../boost/hana/detail/operators/adl.hpp | 34 + .../hana/detail/operators/arithmetic.hpp | 78 + .../hana/detail/operators/comparable.hpp | 52 + .../boost/hana/detail/operators/iterable.hpp | 40 + .../boost/hana/detail/operators/logical.hpp | 51 + .../boost/hana/detail/operators/monad.hpp | 35 + .../boost/hana/detail/operators/orderable.hpp | 60 + .../hana/detail/operators/searchable.hpp | 40 + .../boost/hana/detail/preprocessor.hpp | 39 + .../boost/hana/detail/std_common_type.hpp | 36 + .../boost/hana/detail/struct_macros.hpp | 2803 ++++++++++++ .../boost/hana/detail/struct_macros.hpp.erb | 231 + .../include/boost/hana/detail/type_at.hpp | 57 + .../include/boost/hana/detail/type_foldl1.hpp | 145 + .../include/boost/hana/detail/type_foldr1.hpp | 149 + .../boost/hana/detail/unpack_flatten.hpp | 70 + .../include/boost/hana/detail/variadic/at.hpp | 40 + .../boost/hana/detail/variadic/drop_into.hpp | 47 + .../boost/hana/detail/variadic/foldl1.hpp | 214 + .../boost/hana/detail/variadic/foldr1.hpp | 210 + .../hana/detail/variadic/reverse_apply.hpp | 27 + .../detail/variadic/reverse_apply/flat.hpp | 41 + .../variadic/reverse_apply/unrolled.hpp | 87 + .../boost/hana/detail/variadic/split_at.hpp | 153 + .../boost/hana/detail/variadic/take.hpp | 51 + .../hana/include/boost/hana/detail/void_t.hpp | 21 + libs/hana/include/boost/hana/detail/wrong.hpp | 33 + libs/hana/include/boost/hana/difference.hpp | 40 + libs/hana/include/boost/hana/div.hpp | 107 + libs/hana/include/boost/hana/drop_back.hpp | 75 + libs/hana/include/boost/hana/drop_front.hpp | 57 + .../include/boost/hana/drop_front_exactly.hpp | 85 + libs/hana/include/boost/hana/drop_while.hpp | 93 + libs/hana/include/boost/hana/duplicate.hpp | 48 + libs/hana/include/boost/hana/empty.hpp | 53 + libs/hana/include/boost/hana/equal.hpp | 206 + libs/hana/include/boost/hana/erase_key.hpp | 37 + libs/hana/include/boost/hana/eval.hpp | 57 + libs/hana/include/boost/hana/eval_if.hpp | 93 + .../boost/hana/experimental/printable.hpp | 257 ++ .../boost/hana/experimental/type_name.hpp | 64 + .../include/boost/hana/experimental/types.hpp | 158 + .../include/boost/hana/experimental/view.hpp | 515 +++ libs/hana/include/boost/hana/ext/boost.hpp | 21 + .../include/boost/hana/ext/boost/fusion.hpp | 22 + .../boost/hana/ext/boost/fusion/deque.hpp | 108 + .../hana/ext/boost/fusion/detail/common.hpp | 79 + .../boost/hana/ext/boost/fusion/list.hpp | 111 + .../boost/hana/ext/boost/fusion/tuple.hpp | 49 + .../boost/hana/ext/boost/fusion/vector.hpp | 110 + .../hana/include/boost/hana/ext/boost/mpl.hpp | 21 + .../boost/hana/ext/boost/mpl/integral_c.hpp | 81 + .../include/boost/hana/ext/boost/mpl/list.hpp | 186 + .../boost/hana/ext/boost/mpl/vector.hpp | 201 + .../include/boost/hana/ext/boost/tuple.hpp | 138 + libs/hana/include/boost/hana/ext/std.hpp | 25 + .../hana/include/boost/hana/ext/std/array.hpp | 171 + .../boost/hana/ext/std/integer_sequence.hpp | 140 + .../boost/hana/ext/std/integral_constant.hpp | 96 + libs/hana/include/boost/hana/ext/std/pair.hpp | 91 + .../hana/include/boost/hana/ext/std/ratio.hpp | 164 + .../hana/include/boost/hana/ext/std/tuple.hpp | 180 + .../include/boost/hana/ext/std/vector.hpp | 110 + libs/hana/include/boost/hana/extend.hpp | 50 + libs/hana/include/boost/hana/extract.hpp | 45 + libs/hana/include/boost/hana/fill.hpp | 74 + libs/hana/include/boost/hana/filter.hpp | 135 + libs/hana/include/boost/hana/find.hpp | 61 + libs/hana/include/boost/hana/find_if.hpp | 129 + libs/hana/include/boost/hana/first.hpp | 45 + libs/hana/include/boost/hana/flatten.hpp | 62 + libs/hana/include/boost/hana/fold.hpp | 17 + libs/hana/include/boost/hana/fold_left.hpp | 97 + libs/hana/include/boost/hana/fold_right.hpp | 97 + libs/hana/include/boost/hana/for_each.hpp | 62 + libs/hana/include/boost/hana/front.hpp | 47 + libs/hana/include/boost/hana/functional.hpp | 33 + .../include/boost/hana/functional/always.hpp | 64 + .../include/boost/hana/functional/apply.hpp | 85 + .../include/boost/hana/functional/arg.hpp | 141 + .../include/boost/hana/functional/capture.hpp | 112 + .../include/boost/hana/functional/compose.hpp | 108 + .../include/boost/hana/functional/curry.hpp | 170 + .../include/boost/hana/functional/demux.hpp | 269 ++ .../include/boost/hana/functional/fix.hpp | 83 + .../include/boost/hana/functional/flip.hpp | 73 + .../hana/include/boost/hana/functional/id.hpp | 38 + .../include/boost/hana/functional/infix.hpp | 185 + .../include/boost/hana/functional/iterate.hpp | 201 + .../boost/hana/functional/lockstep.hpp | 114 + .../hana/include/boost/hana/functional/on.hpp | 83 + .../boost/hana/functional/overload.hpp | 88 + .../hana/functional/overload_linearly.hpp | 110 + .../include/boost/hana/functional/partial.hpp | 105 + .../boost/hana/functional/placeholder.hpp | 263 ++ .../boost/hana/functional/reverse_partial.hpp | 103 + libs/hana/include/boost/hana/fuse.hpp | 47 + .../hana/include/boost/hana/fwd/accessors.hpp | 50 + .../hana/include/boost/hana/fwd/adapt_adt.hpp | 48 + .../include/boost/hana/fwd/adapt_struct.hpp | 48 + libs/hana/include/boost/hana/fwd/adjust.hpp | 64 + .../hana/include/boost/hana/fwd/adjust_if.hpp | 69 + libs/hana/include/boost/hana/fwd/all.hpp | 46 + libs/hana/include/boost/hana/fwd/all_of.hpp | 54 + libs/hana/include/boost/hana/fwd/and.hpp | 53 + libs/hana/include/boost/hana/fwd/any.hpp | 46 + libs/hana/include/boost/hana/fwd/any_of.hpp | 53 + libs/hana/include/boost/hana/fwd/ap.hpp | 81 + libs/hana/include/boost/hana/fwd/append.hpp | 68 + libs/hana/include/boost/hana/fwd/at.hpp | 89 + libs/hana/include/boost/hana/fwd/at_key.hpp | 67 + libs/hana/include/boost/hana/fwd/back.hpp | 48 + .../include/boost/hana/fwd/basic_tuple.hpp | 70 + libs/hana/include/boost/hana/fwd/bool.hpp | 15 + .../boost/hana/fwd/cartesian_product.hpp | 62 + libs/hana/include/boost/hana/fwd/chain.hpp | 67 + .../hana/include/boost/hana/fwd/comparing.hpp | 65 + libs/hana/include/boost/hana/fwd/concat.hpp | 63 + .../boost/hana/fwd/concept/applicative.hpp | 117 + .../boost/hana/fwd/concept/comonad.hpp | 111 + .../boost/hana/fwd/concept/comparable.hpp | 160 + .../boost/hana/fwd/concept/constant.hpp | 210 + .../boost/hana/fwd/concept/euclidean_ring.hpp | 117 + .../boost/hana/fwd/concept/foldable.hpp | 141 + .../boost/hana/fwd/concept/functor.hpp | 139 + .../include/boost/hana/fwd/concept/group.hpp | 111 + .../boost/hana/fwd/concept/hashable.hpp | 68 + .../hana/fwd/concept/integral_constant.hpp | 73 + .../boost/hana/fwd/concept/iterable.hpp | 149 + .../boost/hana/fwd/concept/logical.hpp | 166 + .../boost/hana/fwd/concept/metafunction.hpp | 99 + .../include/boost/hana/fwd/concept/monad.hpp | 198 + .../boost/hana/fwd/concept/monad_plus.hpp | 89 + .../include/boost/hana/fwd/concept/monoid.hpp | 101 + .../boost/hana/fwd/concept/orderable.hpp | 187 + .../boost/hana/fwd/concept/product.hpp | 103 + .../include/boost/hana/fwd/concept/ring.hpp | 106 + .../boost/hana/fwd/concept/searchable.hpp | 143 + .../boost/hana/fwd/concept/sequence.hpp | 165 + .../include/boost/hana/fwd/concept/struct.hpp | 156 + libs/hana/include/boost/hana/fwd/contains.hpp | 73 + libs/hana/include/boost/hana/fwd/core.hpp | 21 + .../include/boost/hana/fwd/core/common.hpp | 103 + .../include/boost/hana/fwd/core/default.hpp | 56 + .../hana/include/boost/hana/fwd/core/is_a.hpp | 61 + .../hana/include/boost/hana/fwd/core/make.hpp | 70 + .../include/boost/hana/fwd/core/tag_of.hpp | 120 + libs/hana/include/boost/hana/fwd/core/to.hpp | 174 + .../hana/include/boost/hana/fwd/core/when.hpp | 74 + libs/hana/include/boost/hana/fwd/count.hpp | 57 + libs/hana/include/boost/hana/fwd/count_if.hpp | 56 + libs/hana/include/boost/hana/fwd/cycle.hpp | 76 + .../include/boost/hana/fwd/define_struct.hpp | 48 + .../include/boost/hana/fwd/difference.hpp | 32 + libs/hana/include/boost/hana/fwd/div.hpp | 59 + .../hana/include/boost/hana/fwd/drop_back.hpp | 63 + .../include/boost/hana/fwd/drop_front.hpp | 66 + .../boost/hana/fwd/drop_front_exactly.hpp | 67 + .../include/boost/hana/fwd/drop_while.hpp | 60 + .../hana/include/boost/hana/fwd/duplicate.hpp | 57 + libs/hana/include/boost/hana/fwd/empty.hpp | 53 + libs/hana/include/boost/hana/fwd/equal.hpp | 80 + .../hana/include/boost/hana/fwd/erase_key.hpp | 32 + libs/hana/include/boost/hana/fwd/eval.hpp | 58 + libs/hana/include/boost/hana/fwd/eval_if.hpp | 155 + libs/hana/include/boost/hana/fwd/extend.hpp | 62 + libs/hana/include/boost/hana/fwd/extract.hpp | 58 + libs/hana/include/boost/hana/fwd/fill.hpp | 57 + libs/hana/include/boost/hana/fwd/filter.hpp | 81 + libs/hana/include/boost/hana/fwd/find.hpp | 60 + libs/hana/include/boost/hana/fwd/find_if.hpp | 57 + libs/hana/include/boost/hana/fwd/first.hpp | 49 + libs/hana/include/boost/hana/fwd/flatten.hpp | 63 + libs/hana/include/boost/hana/fwd/fold.hpp | 38 + .../hana/include/boost/hana/fwd/fold_left.hpp | 88 + .../include/boost/hana/fwd/fold_right.hpp | 92 + libs/hana/include/boost/hana/fwd/for_each.hpp | 55 + libs/hana/include/boost/hana/fwd/front.hpp | 48 + libs/hana/include/boost/hana/fwd/fuse.hpp | 55 + libs/hana/include/boost/hana/fwd/greater.hpp | 53 + .../include/boost/hana/fwd/greater_equal.hpp | 54 + libs/hana/include/boost/hana/fwd/group.hpp | 103 + libs/hana/include/boost/hana/fwd/hash.hpp | 68 + libs/hana/include/boost/hana/fwd/if.hpp | 57 + libs/hana/include/boost/hana/fwd/index_if.hpp | 60 + libs/hana/include/boost/hana/fwd/insert.hpp | 60 + .../include/boost/hana/fwd/insert_range.hpp | 57 + .../boost/hana/fwd/integral_constant.hpp | 175 + .../include/boost/hana/fwd/intersection.hpp | 32 + .../include/boost/hana/fwd/intersperse.hpp | 57 + .../include/boost/hana/fwd/is_disjoint.hpp | 50 + libs/hana/include/boost/hana/fwd/is_empty.hpp | 49 + .../hana/include/boost/hana/fwd/is_subset.hpp | 79 + libs/hana/include/boost/hana/fwd/keys.hpp | 50 + libs/hana/include/boost/hana/fwd/lazy.hpp | 124 + libs/hana/include/boost/hana/fwd/length.hpp | 50 + libs/hana/include/boost/hana/fwd/less.hpp | 53 + .../include/boost/hana/fwd/less_equal.hpp | 54 + .../hana/fwd/lexicographical_compare.hpp | 93 + libs/hana/include/boost/hana/fwd/lift.hpp | 62 + libs/hana/include/boost/hana/fwd/map.hpp | 382 ++ libs/hana/include/boost/hana/fwd/max.hpp | 44 + libs/hana/include/boost/hana/fwd/maximum.hpp | 116 + libs/hana/include/boost/hana/fwd/members.hpp | 46 + libs/hana/include/boost/hana/fwd/min.hpp | 51 + libs/hana/include/boost/hana/fwd/minimum.hpp | 116 + libs/hana/include/boost/hana/fwd/minus.hpp | 67 + libs/hana/include/boost/hana/fwd/mod.hpp | 62 + .../boost/hana/fwd/monadic_compose.hpp | 75 + .../boost/hana/fwd/monadic_fold_left.hpp | 110 + .../boost/hana/fwd/monadic_fold_right.hpp | 112 + libs/hana/include/boost/hana/fwd/mult.hpp | 63 + libs/hana/include/boost/hana/fwd/negate.hpp | 42 + libs/hana/include/boost/hana/fwd/none.hpp | 46 + libs/hana/include/boost/hana/fwd/none_of.hpp | 55 + libs/hana/include/boost/hana/fwd/not.hpp | 47 + .../hana/include/boost/hana/fwd/not_equal.hpp | 70 + libs/hana/include/boost/hana/fwd/one.hpp | 47 + libs/hana/include/boost/hana/fwd/optional.hpp | 515 +++ libs/hana/include/boost/hana/fwd/or.hpp | 53 + libs/hana/include/boost/hana/fwd/ordering.hpp | 65 + libs/hana/include/boost/hana/fwd/pair.hpp | 158 + .../hana/include/boost/hana/fwd/partition.hpp | 81 + .../include/boost/hana/fwd/permutations.hpp | 50 + libs/hana/include/boost/hana/fwd/plus.hpp | 63 + libs/hana/include/boost/hana/fwd/power.hpp | 56 + libs/hana/include/boost/hana/fwd/prefix.hpp | 72 + libs/hana/include/boost/hana/fwd/prepend.hpp | 73 + libs/hana/include/boost/hana/fwd/product.hpp | 73 + libs/hana/include/boost/hana/fwd/range.hpp | 150 + libs/hana/include/boost/hana/fwd/remove.hpp | 70 + .../hana/include/boost/hana/fwd/remove_at.hpp | 82 + .../hana/include/boost/hana/fwd/remove_if.hpp | 69 + .../include/boost/hana/fwd/remove_range.hpp | 85 + libs/hana/include/boost/hana/fwd/repeat.hpp | 58 + libs/hana/include/boost/hana/fwd/replace.hpp | 64 + .../include/boost/hana/fwd/replace_if.hpp | 63 + .../hana/include/boost/hana/fwd/replicate.hpp | 78 + libs/hana/include/boost/hana/fwd/reverse.hpp | 49 + .../include/boost/hana/fwd/reverse_fold.hpp | 84 + .../hana/include/boost/hana/fwd/scan_left.hpp | 105 + .../include/boost/hana/fwd/scan_right.hpp | 105 + libs/hana/include/boost/hana/fwd/second.hpp | 48 + libs/hana/include/boost/hana/fwd/set.hpp | 298 ++ libs/hana/include/boost/hana/fwd/size.hpp | 33 + libs/hana/include/boost/hana/fwd/slice.hpp | 105 + libs/hana/include/boost/hana/fwd/sort.hpp | 103 + libs/hana/include/boost/hana/fwd/span.hpp | 85 + libs/hana/include/boost/hana/fwd/string.hpp | 273 ++ libs/hana/include/boost/hana/fwd/suffix.hpp | 72 + libs/hana/include/boost/hana/fwd/sum.hpp | 82 + .../boost/hana/fwd/symmetric_difference.hpp | 32 + .../hana/include/boost/hana/fwd/take_back.hpp | 78 + .../include/boost/hana/fwd/take_front.hpp | 78 + .../include/boost/hana/fwd/take_while.hpp | 56 + libs/hana/include/boost/hana/fwd/tap.hpp | 68 + libs/hana/include/boost/hana/fwd/then.hpp | 52 + .../hana/include/boost/hana/fwd/transform.hpp | 57 + libs/hana/include/boost/hana/fwd/tuple.hpp | 229 + libs/hana/include/boost/hana/fwd/type.hpp | 542 +++ .../include/boost/hana/fwd/unfold_left.hpp | 85 + .../include/boost/hana/fwd/unfold_right.hpp | 85 + libs/hana/include/boost/hana/fwd/union.hpp | 32 + libs/hana/include/boost/hana/fwd/unique.hpp | 91 + libs/hana/include/boost/hana/fwd/unpack.hpp | 95 + libs/hana/include/boost/hana/fwd/value.hpp | 100 + libs/hana/include/boost/hana/fwd/while.hpp | 71 + libs/hana/include/boost/hana/fwd/zero.hpp | 47 + libs/hana/include/boost/hana/fwd/zip.hpp | 61 + .../include/boost/hana/fwd/zip_shortest.hpp | 61 + .../boost/hana/fwd/zip_shortest_with.hpp | 62 + libs/hana/include/boost/hana/fwd/zip_with.hpp | 62 + libs/hana/include/boost/hana/greater.hpp | 71 + .../hana/include/boost/hana/greater_equal.hpp | 74 + libs/hana/include/boost/hana/group.hpp | 158 + libs/hana/include/boost/hana/hash.hpp | 114 + libs/hana/include/boost/hana/if.hpp | 61 + libs/hana/include/boost/hana/index_if.hpp | 105 + libs/hana/include/boost/hana/insert.hpp | 52 + libs/hana/include/boost/hana/insert_range.hpp | 64 + .../include/boost/hana/integral_constant.hpp | 15 + libs/hana/include/boost/hana/intersection.hpp | 39 + libs/hana/include/boost/hana/intersperse.hpp | 76 + libs/hana/include/boost/hana/is_disjoint.hpp | 65 + libs/hana/include/boost/hana/is_empty.hpp | 45 + libs/hana/include/boost/hana/is_subset.hpp | 84 + libs/hana/include/boost/hana/keys.hpp | 48 + libs/hana/include/boost/hana/lazy.hpp | 229 + libs/hana/include/boost/hana/length.hpp | 57 + libs/hana/include/boost/hana/less.hpp | 142 + libs/hana/include/boost/hana/less_equal.hpp | 75 + .../boost/hana/lexicographical_compare.hpp | 110 + libs/hana/include/boost/hana/lift.hpp | 54 + libs/hana/include/boost/hana/map.hpp | 577 +++ libs/hana/include/boost/hana/max.hpp | 58 + libs/hana/include/boost/hana/maximum.hpp | 97 + libs/hana/include/boost/hana/members.hpp | 65 + libs/hana/include/boost/hana/min.hpp | 58 + libs/hana/include/boost/hana/minimum.hpp | 97 + libs/hana/include/boost/hana/minus.hpp | 114 + libs/hana/include/boost/hana/mod.hpp | 107 + .../include/boost/hana/monadic_compose.hpp | 51 + .../include/boost/hana/monadic_fold_left.hpp | 136 + .../include/boost/hana/monadic_fold_right.hpp | 135 + libs/hana/include/boost/hana/mult.hpp | 107 + libs/hana/include/boost/hana/negate.hpp | 61 + libs/hana/include/boost/hana/none.hpp | 48 + libs/hana/include/boost/hana/none_of.hpp | 50 + libs/hana/include/boost/hana/not.hpp | 75 + libs/hana/include/boost/hana/not_equal.hpp | 59 + libs/hana/include/boost/hana/one.hpp | 79 + libs/hana/include/boost/hana/optional.hpp | 417 ++ libs/hana/include/boost/hana/or.hpp | 61 + libs/hana/include/boost/hana/ordering.hpp | 44 + libs/hana/include/boost/hana/pair.hpp | 211 + libs/hana/include/boost/hana/partition.hpp | 116 + libs/hana/include/boost/hana/permutations.hpp | 78 + libs/hana/include/boost/hana/plus.hpp | 109 + libs/hana/include/boost/hana/power.hpp | 65 + libs/hana/include/boost/hana/prefix.hpp | 52 + libs/hana/include/boost/hana/prepend.hpp | 74 + libs/hana/include/boost/hana/product.hpp | 56 + libs/hana/include/boost/hana/range.hpp | 294 ++ libs/hana/include/boost/hana/remove.hpp | 54 + libs/hana/include/boost/hana/remove_at.hpp | 86 + libs/hana/include/boost/hana/remove_if.hpp | 52 + libs/hana/include/boost/hana/remove_range.hpp | 100 + libs/hana/include/boost/hana/repeat.hpp | 58 + libs/hana/include/boost/hana/replace.hpp | 56 + libs/hana/include/boost/hana/replace_if.hpp | 54 + libs/hana/include/boost/hana/replicate.hpp | 72 + libs/hana/include/boost/hana/reverse.hpp | 61 + libs/hana/include/boost/hana/reverse_fold.hpp | 37 + libs/hana/include/boost/hana/scan_left.hpp | 133 + libs/hana/include/boost/hana/scan_right.hpp | 130 + libs/hana/include/boost/hana/second.hpp | 45 + libs/hana/include/boost/hana/set.hpp | 323 ++ libs/hana/include/boost/hana/size.hpp | 17 + libs/hana/include/boost/hana/slice.hpp | 99 + libs/hana/include/boost/hana/sort.hpp | 273 ++ libs/hana/include/boost/hana/span.hpp | 75 + libs/hana/include/boost/hana/string.hpp | 349 ++ libs/hana/include/boost/hana/suffix.hpp | 52 + libs/hana/include/boost/hana/sum.hpp | 56 + .../boost/hana/symmetric_difference.hpp | 46 + libs/hana/include/boost/hana/take_back.hpp | 76 + libs/hana/include/boost/hana/take_front.hpp | 75 + libs/hana/include/boost/hana/take_while.hpp | 55 + libs/hana/include/boost/hana/tap.hpp | 59 + libs/hana/include/boost/hana/then.hpp | 55 + libs/hana/include/boost/hana/traits.hpp | 214 + libs/hana/include/boost/hana/transform.hpp | 76 + libs/hana/include/boost/hana/tuple.hpp | 320 ++ libs/hana/include/boost/hana/type.hpp | 284 ++ libs/hana/include/boost/hana/unfold_left.hpp | 71 + libs/hana/include/boost/hana/unfold_right.hpp | 71 + libs/hana/include/boost/hana/union.hpp | 39 + libs/hana/include/boost/hana/unique.hpp | 75 + libs/hana/include/boost/hana/unpack.hpp | 141 + libs/hana/include/boost/hana/value.hpp | 56 + libs/hana/include/boost/hana/version.hpp | 53 + libs/hana/include/boost/hana/while.hpp | 117 + libs/hana/include/boost/hana/zero.hpp | 81 + libs/hana/include/boost/hana/zip.hpp | 50 + libs/hana/include/boost/hana/zip_shortest.hpp | 51 + .../include/boost/hana/zip_shortest_with.hpp | 64 + libs/hana/include/boost/hana/zip_with.hpp | 70 + libs/hana/index.html | 0 libs/hana/meta/libraries.json | 0 libs/hana/test/CMakeLists.txt | 0 libs/hana/test/Jamfile.v2 | 0 libs/hana/test/_include/auto/README.md | 0 libs/hana/test/_include/auto/all_of.hpp | 0 libs/hana/test/_include/auto/any_of.hpp | 0 libs/hana/test/_include/auto/ap.hpp | 0 libs/hana/test/_include/auto/at.hpp | 0 .../test/_include/auto/cartesian_product.hpp | 0 libs/hana/test/_include/auto/drop_back.hpp | 0 libs/hana/test/_include/auto/drop_front.hpp | 0 libs/hana/test/_include/auto/drop_while.hpp | 0 libs/hana/test/_include/auto/for_each.hpp | 0 libs/hana/test/_include/auto/group.hpp | 0 libs/hana/test/_include/auto/index_if.hpp | 0 libs/hana/test/_include/auto/insert.hpp | 0 libs/hana/test/_include/auto/insert_range.hpp | 0 libs/hana/test/_include/auto/intersperse.hpp | 0 libs/hana/test/_include/auto/is_empty.hpp | 0 libs/hana/test/_include/auto/length.hpp | 0 .../_include/auto/lexicographical_compare.hpp | 0 libs/hana/test/_include/auto/make.hpp | 0 libs/hana/test/_include/auto/none_of.hpp | 0 libs/hana/test/_include/auto/partition.hpp | 0 libs/hana/test/_include/auto/permutations.hpp | 0 libs/hana/test/_include/auto/remove_at.hpp | 0 libs/hana/test/_include/auto/remove_range.hpp | 0 libs/hana/test/_include/auto/reverse.hpp | 0 libs/hana/test/_include/auto/scans.hpp | 0 libs/hana/test/_include/auto/sequence.hpp | 0 libs/hana/test/_include/auto/slice.hpp | 0 libs/hana/test/_include/auto/sort.hpp | 0 libs/hana/test/_include/auto/span.hpp | 0 libs/hana/test/_include/auto/take_back.hpp | 0 libs/hana/test/_include/auto/take_front.hpp | 0 libs/hana/test/_include/auto/take_while.hpp | 0 libs/hana/test/_include/auto/test_case.hpp | 0 libs/hana/test/_include/auto/transform.hpp | 0 libs/hana/test/_include/auto/unfolds.hpp | 0 libs/hana/test/_include/auto/unique.hpp | 0 libs/hana/test/_include/auto/zips.hpp | 0 libs/hana/test/_include/laws/applicative.hpp | 0 libs/hana/test/_include/laws/base.hpp | 0 libs/hana/test/_include/laws/comonad.hpp | 0 libs/hana/test/_include/laws/comparable.hpp | 0 libs/hana/test/_include/laws/constant.hpp | 0 .../test/_include/laws/euclidean_ring.hpp | 0 libs/hana/test/_include/laws/foldable.hpp | 0 libs/hana/test/_include/laws/functor.hpp | 0 libs/hana/test/_include/laws/group.hpp | 0 libs/hana/test/_include/laws/hashable.hpp | 0 libs/hana/test/_include/laws/iterable.hpp | 0 libs/hana/test/_include/laws/logical.hpp | 0 libs/hana/test/_include/laws/monad.hpp | 0 libs/hana/test/_include/laws/monad_plus.hpp | 0 libs/hana/test/_include/laws/monoid.hpp | 0 libs/hana/test/_include/laws/orderable.hpp | 0 libs/hana/test/_include/laws/product.hpp | 0 libs/hana/test/_include/laws/ring.hpp | 0 libs/hana/test/_include/laws/searchable.hpp | 0 libs/hana/test/_include/laws/sequence.hpp | 0 .../hana/test/_include/laws/templates/seq.hpp | 0 libs/hana/test/_include/support/cnumeric.hpp | 0 .../_include/support/constexpr_move_only.hpp | 0 libs/hana/test/_include/support/counter.hpp | 0 .../_include/support/equivalence_class.hpp | 0 libs/hana/test/_include/support/identity.hpp | 0 .../test/_include/support/minimal_product.hpp | 0 libs/hana/test/_include/support/numeric.hpp | 0 libs/hana/test/_include/support/seq.hpp | 0 libs/hana/test/_include/support/tracked.hpp | 0 .../_include/support/tracked_move_only.hpp | 0 libs/hana/test/assert/commas.cpp | 0 libs/hana/test/assert/constant.cpp | 0 libs/hana/test/assert/constexpr.cpp | 0 libs/hana/test/assert/flexible.cpp | 0 libs/hana/test/assert/lambdas.cpp | 0 libs/hana/test/assert/runtime.cpp | 0 libs/hana/test/basic_tuple/auto/_specs.hpp | 0 libs/hana/test/basic_tuple/auto/all_of.cpp | 0 libs/hana/test/basic_tuple/auto/any_of.cpp | 0 libs/hana/test/basic_tuple/auto/ap.cpp | 0 libs/hana/test/basic_tuple/auto/at.cpp | 0 .../basic_tuple/auto/cartesian_product.cpp | 0 libs/hana/test/basic_tuple/auto/drop_back.cpp | 0 .../hana/test/basic_tuple/auto/drop_front.cpp | 0 .../hana/test/basic_tuple/auto/drop_while.cpp | 0 libs/hana/test/basic_tuple/auto/for_each.cpp | 0 libs/hana/test/basic_tuple/auto/group.cpp | 0 libs/hana/test/basic_tuple/auto/index_if.cpp | 0 libs/hana/test/basic_tuple/auto/insert.cpp | 0 .../test/basic_tuple/auto/insert_range.cpp | 0 .../test/basic_tuple/auto/intersperse.cpp | 0 libs/hana/test/basic_tuple/auto/is_empty.cpp | 0 libs/hana/test/basic_tuple/auto/length.cpp | 0 .../auto/lexicographical_compare.cpp | 0 libs/hana/test/basic_tuple/auto/make.cpp | 0 libs/hana/test/basic_tuple/auto/none_of.cpp | 0 libs/hana/test/basic_tuple/auto/partition.cpp | 0 .../test/basic_tuple/auto/permutations.cpp | 0 libs/hana/test/basic_tuple/auto/remove_at.cpp | 0 .../test/basic_tuple/auto/remove_range.cpp | 0 libs/hana/test/basic_tuple/auto/reverse.cpp | 0 libs/hana/test/basic_tuple/auto/scans.cpp | 0 libs/hana/test/basic_tuple/auto/sequence.cpp | 0 libs/hana/test/basic_tuple/auto/slice.cpp | 0 libs/hana/test/basic_tuple/auto/sort.cpp | 0 libs/hana/test/basic_tuple/auto/span.cpp | 0 libs/hana/test/basic_tuple/auto/take_back.cpp | 0 .../hana/test/basic_tuple/auto/take_front.cpp | 0 .../hana/test/basic_tuple/auto/take_while.cpp | 0 libs/hana/test/basic_tuple/auto/transform.cpp | 0 libs/hana/test/basic_tuple/auto/unfolds.cpp | 0 libs/hana/test/basic_tuple/auto/unique.cpp | 0 libs/hana/test/basic_tuple/auto/zips.cpp | 0 libs/hana/test/basic_tuple/cnstr.copy.cpp | 0 libs/hana/test/basic_tuple/construct.cpp | 0 libs/hana/test/basic_tuple/laws.cpp | 0 libs/hana/test/basic_tuple/length.cpp | 0 libs/hana/test/basic_tuple/make.cpp | 0 libs/hana/test/basic_tuple/unpack.cpp | 0 libs/hana/test/builtin_array.cpp | 0 libs/hana/test/comparable.cpp | 0 .../hana/test/concept/constant/arithmetic.cpp | 0 .../hana/test/concept/constant/comparable.cpp | 0 libs/hana/test/concept/constant/laws.cpp | 0 libs/hana/test/concept/constant/logical.cpp | 0 libs/hana/test/concept/constant/mcd.cpp | 0 libs/hana/test/concept/constant/minimal.hpp | 0 libs/hana/test/concept/constant/orderable.cpp | 0 libs/hana/test/concept/constant/to.cpp | 0 libs/hana/test/concept/integral_constant.cpp | 0 libs/hana/test/concept/sequence/iterable.cpp | 0 libs/hana/test/concept/sequence/monad.cpp | 0 .../hana/test/concept/sequence/monad_plus.cpp | 0 libs/hana/test/concept/sequence/orderable.cpp | 0 .../hana/test/concept/sequence/searchable.cpp | 0 libs/hana/test/concept/sequence/sequence.cpp | 0 libs/hana/test/concept/struct/any_of.cpp | 0 libs/hana/test/concept/struct/at_key.cpp | 0 libs/hana/test/concept/struct/equal.cpp | 0 libs/hana/test/concept/struct/find_if.cpp | 0 libs/hana/test/concept/struct/fold_left.cpp | 0 libs/hana/test/concept/struct/fold_right.cpp | 0 libs/hana/test/concept/struct/keys.cpp | 0 libs/hana/test/concept/struct/laws.cpp | 0 .../test/concept/struct/macro.adapt_adt.cpp | 0 .../concept/struct/macro.adapt_struct.cpp | 0 .../concept/struct/macro.define_struct.cpp | 0 .../test/concept/struct/member_function.cpp | 0 libs/hana/test/concept/struct/members.cpp | 0 .../test/concept/struct/minimal_struct.hpp | 0 libs/hana/test/concept/struct/unpack.cpp | 0 libs/hana/test/core/common.cpp | 0 libs/hana/test/core/default.cpp | 0 libs/hana/test/core/is_a.cpp | 0 libs/hana/test/core/is_embedded.cpp | 0 libs/hana/test/core/make.cpp | 0 libs/hana/test/core/tag_of.cpp | 0 libs/hana/test/core/to.cpp | 0 libs/hana/test/core/when.cpp | 0 libs/hana/test/deploy/CMakeLists.txt | 0 libs/hana/test/deploy/main.cpp | 0 libs/hana/test/detail/algorithm.cpp | 0 libs/hana/test/detail/any_of.cpp | 0 .../test/detail/canonical_constant/laws.cpp | 0 libs/hana/test/detail/create.cpp | 0 libs/hana/test/detail/decay.cpp | 0 libs/hana/test/detail/ebo.cpp | 0 libs/hana/test/detail/fast_and.cpp | 0 .../test/detail/first_unsatisfied_index.cpp | 0 libs/hana/test/detail/has_duplicates.cpp | 0 libs/hana/test/detail/preprocessor.cpp | 0 libs/hana/test/detail/struct_macros.cpp | 0 libs/hana/test/detail/type_at.cpp | 0 libs/hana/test/detail/type_foldl1.cpp | 0 libs/hana/test/detail/type_foldr1.cpp | 0 libs/hana/test/detail/unpack_flatten.cpp | 0 libs/hana/test/detail/variadic/at.cpp | 0 libs/hana/test/detail/variadic/drop_into.cpp | 0 libs/hana/test/detail/variadic/foldl1.cpp | 0 libs/hana/test/detail/variadic/foldr1.cpp | 0 .../test/detail/variadic/reverse_apply.cpp | 0 libs/hana/test/detail/variadic/split_at.cpp | 0 libs/hana/test/detail/variadic/take.cpp | 0 libs/hana/test/euclidean_ring.cpp | 0 libs/hana/test/experimental/printable/map.cpp | 0 .../experimental/printable/metafunction.cpp | 0 .../test/experimental/printable/optional.cpp | 0 .../hana/test/experimental/printable/pair.cpp | 0 libs/hana/test/experimental/printable/set.cpp | 0 .../test/experimental/printable/string.cpp | 0 .../test/experimental/printable/tuple.cpp | 0 .../hana/test/experimental/printable/type.cpp | 0 libs/hana/test/experimental/type_name.cpp | 0 libs/hana/test/experimental/types/at.cpp | 0 .../hana/test/experimental/types/contains.cpp | 0 .../test/experimental/types/drop_front.cpp | 0 libs/hana/test/experimental/types/equal.cpp | 0 .../hana/test/experimental/types/is_empty.cpp | 0 .../test/experimental/types/transform.cpp | 0 libs/hana/test/experimental/types/unpack.cpp | 0 .../test/experimental/view/empty/is_empty.cpp | 0 .../test/experimental/view/empty/length.cpp | 0 .../test/experimental/view/empty/unpack.cpp | 0 .../hana/test/experimental/view/joined/at.cpp | 0 .../experimental/view/joined/is_empty.cpp | 0 .../test/experimental/view/joined/length.cpp | 0 .../test/experimental/view/joined/unpack.cpp | 0 .../hana/test/experimental/view/single/at.cpp | 0 .../experimental/view/single/is_empty.cpp | 0 .../test/experimental/view/single/length.cpp | 0 .../test/experimental/view/single/unpack.cpp | 0 .../hana/test/experimental/view/sliced/at.cpp | 0 .../experimental/view/sliced/is_empty.cpp | 0 .../test/experimental/view/sliced/length.cpp | 0 .../test/experimental/view/sliced/unpack.cpp | 0 .../test/experimental/view/transformed/ap.cpp | 0 .../test/experimental/view/transformed/at.cpp | 0 .../view/transformed/drop_front.cpp | 0 .../experimental/view/transformed/equal.cpp | 0 .../view/transformed/is_empty.cpp | 0 .../view/transformed/laziness.cpp | 0 .../experimental/view/transformed/length.cpp | 0 .../experimental/view/transformed/less.cpp | 0 .../view/transformed/transform.cpp | 0 .../experimental/view/transformed/unpack.cpp | 0 .../ext/boost/fusion/deque/auto/_specs.hpp | 0 .../ext/boost/fusion/deque/auto/all_of.cpp | 0 .../ext/boost/fusion/deque/auto/any_of.cpp | 0 .../test/ext/boost/fusion/deque/auto/ap.cpp | 0 .../test/ext/boost/fusion/deque/auto/at.cpp | 0 .../fusion/deque/auto/cartesian_product.cpp | 0 .../ext/boost/fusion/deque/auto/drop_back.cpp | 0 .../boost/fusion/deque/auto/drop_front.cpp | 0 .../boost/fusion/deque/auto/drop_while.cpp | 0 .../ext/boost/fusion/deque/auto/for_each.cpp | 0 .../ext/boost/fusion/deque/auto/group.cpp | 0 .../ext/boost/fusion/deque/auto/index_if.cpp | 0 .../ext/boost/fusion/deque/auto/insert.cpp | 0 .../boost/fusion/deque/auto/insert_range.cpp | 0 .../boost/fusion/deque/auto/intersperse.cpp | 0 .../ext/boost/fusion/deque/auto/is_empty.cpp | 0 .../ext/boost/fusion/deque/auto/length.cpp | 0 .../deque/auto/lexicographical_compare.cpp | 0 .../test/ext/boost/fusion/deque/auto/make.cpp | 0 .../ext/boost/fusion/deque/auto/none_of.cpp | 0 .../ext/boost/fusion/deque/auto/partition.cpp | 0 .../boost/fusion/deque/auto/permutations.cpp | 0 .../ext/boost/fusion/deque/auto/remove_at.cpp | 0 .../boost/fusion/deque/auto/remove_range.cpp | 0 .../ext/boost/fusion/deque/auto/reverse.cpp | 0 .../ext/boost/fusion/deque/auto/scans.cpp | 0 .../ext/boost/fusion/deque/auto/sequence.cpp | 0 .../ext/boost/fusion/deque/auto/slice.cpp | 0 .../test/ext/boost/fusion/deque/auto/sort.cpp | 0 .../test/ext/boost/fusion/deque/auto/span.cpp | 0 .../ext/boost/fusion/deque/auto/take_back.cpp | 0 .../boost/fusion/deque/auto/take_front.cpp | 0 .../boost/fusion/deque/auto/take_while.cpp | 0 .../ext/boost/fusion/deque/auto/transform.cpp | 0 .../ext/boost/fusion/deque/auto/unfolds.cpp | 0 .../ext/boost/fusion/deque/auto/unique.cpp | 0 .../test/ext/boost/fusion/deque/auto/zips.cpp | 0 .../ext/boost/fusion/list/auto/_specs.hpp | 0 .../ext/boost/fusion/list/auto/all_of.cpp | 0 .../ext/boost/fusion/list/auto/any_of.cpp | 0 .../test/ext/boost/fusion/list/auto/ap.cpp | 0 .../test/ext/boost/fusion/list/auto/at.cpp | 0 .../fusion/list/auto/cartesian_product.cpp | 0 .../ext/boost/fusion/list/auto/drop_back.cpp | 0 .../ext/boost/fusion/list/auto/drop_front.cpp | 0 .../ext/boost/fusion/list/auto/drop_while.cpp | 0 .../ext/boost/fusion/list/auto/for_each.cpp | 0 .../test/ext/boost/fusion/list/auto/group.cpp | 0 .../ext/boost/fusion/list/auto/index_if.cpp | 0 .../ext/boost/fusion/list/auto/insert.cpp | 0 .../boost/fusion/list/auto/insert_range.cpp | 0 .../boost/fusion/list/auto/intersperse.cpp | 0 .../ext/boost/fusion/list/auto/is_empty.cpp | 0 .../ext/boost/fusion/list/auto/length.cpp | 0 .../list/auto/lexicographical_compare.cpp | 0 .../test/ext/boost/fusion/list/auto/make.cpp | 0 .../ext/boost/fusion/list/auto/none_of.cpp | 0 .../ext/boost/fusion/list/auto/partition.cpp | 0 .../boost/fusion/list/auto/permutations.cpp | 0 .../ext/boost/fusion/list/auto/remove_at.cpp | 0 .../boost/fusion/list/auto/remove_range.cpp | 0 .../ext/boost/fusion/list/auto/reverse.cpp | 0 .../test/ext/boost/fusion/list/auto/scans.cpp | 0 .../ext/boost/fusion/list/auto/sequence.cpp | 0 .../test/ext/boost/fusion/list/auto/slice.cpp | 0 .../test/ext/boost/fusion/list/auto/sort.cpp | 0 .../test/ext/boost/fusion/list/auto/span.cpp | 0 .../ext/boost/fusion/list/auto/take_back.cpp | 0 .../ext/boost/fusion/list/auto/take_front.cpp | 0 .../ext/boost/fusion/list/auto/take_while.cpp | 0 .../ext/boost/fusion/list/auto/transform.cpp | 0 .../ext/boost/fusion/list/auto/unfolds.cpp | 0 .../ext/boost/fusion/list/auto/unique.cpp | 0 .../test/ext/boost/fusion/list/auto/zips.cpp | 0 .../ext/boost/fusion/tuple/auto/_specs.hpp | 0 .../ext/boost/fusion/tuple/auto/all_of.cpp | 0 .../ext/boost/fusion/tuple/auto/any_of.cpp | 0 .../test/ext/boost/fusion/tuple/auto/ap.cpp | 0 .../test/ext/boost/fusion/tuple/auto/at.cpp | 0 .../fusion/tuple/auto/cartesian_product.cpp | 0 .../ext/boost/fusion/tuple/auto/drop_back.cpp | 0 .../boost/fusion/tuple/auto/drop_front.cpp | 0 .../boost/fusion/tuple/auto/drop_while.cpp | 0 .../ext/boost/fusion/tuple/auto/for_each.cpp | 0 .../ext/boost/fusion/tuple/auto/group.cpp | 0 .../ext/boost/fusion/tuple/auto/index_if.cpp | 0 .../ext/boost/fusion/tuple/auto/insert.cpp | 0 .../boost/fusion/tuple/auto/insert_range.cpp | 0 .../boost/fusion/tuple/auto/intersperse.cpp | 0 .../ext/boost/fusion/tuple/auto/is_empty.cpp | 0 .../ext/boost/fusion/tuple/auto/length.cpp | 0 .../tuple/auto/lexicographical_compare.cpp | 0 .../test/ext/boost/fusion/tuple/auto/make.cpp | 0 .../ext/boost/fusion/tuple/auto/none_of.cpp | 0 .../ext/boost/fusion/tuple/auto/partition.cpp | 0 .../boost/fusion/tuple/auto/permutations.cpp | 0 .../ext/boost/fusion/tuple/auto/remove_at.cpp | 0 .../boost/fusion/tuple/auto/remove_range.cpp | 0 .../ext/boost/fusion/tuple/auto/reverse.cpp | 0 .../ext/boost/fusion/tuple/auto/scans.cpp | 0 .../ext/boost/fusion/tuple/auto/sequence.cpp | 0 .../ext/boost/fusion/tuple/auto/slice.cpp | 0 .../test/ext/boost/fusion/tuple/auto/sort.cpp | 0 .../test/ext/boost/fusion/tuple/auto/span.cpp | 0 .../ext/boost/fusion/tuple/auto/take_back.cpp | 0 .../boost/fusion/tuple/auto/take_front.cpp | 0 .../boost/fusion/tuple/auto/take_while.cpp | 0 .../ext/boost/fusion/tuple/auto/transform.cpp | 0 .../ext/boost/fusion/tuple/auto/unfolds.cpp | 0 .../ext/boost/fusion/tuple/auto/unique.cpp | 0 .../test/ext/boost/fusion/tuple/auto/zips.cpp | 0 .../ext/boost/fusion/vector/auto/_specs.hpp | 0 .../ext/boost/fusion/vector/auto/all_of.cpp | 0 .../ext/boost/fusion/vector/auto/any_of.cpp | 0 .../test/ext/boost/fusion/vector/auto/ap.cpp | 0 .../test/ext/boost/fusion/vector/auto/at.cpp | 0 .../fusion/vector/auto/cartesian_product.cpp | 0 .../boost/fusion/vector/auto/drop_back.cpp | 0 .../boost/fusion/vector/auto/drop_front.cpp | 0 .../boost/fusion/vector/auto/drop_while.cpp | 0 .../ext/boost/fusion/vector/auto/for_each.cpp | 0 .../ext/boost/fusion/vector/auto/group.cpp | 0 .../ext/boost/fusion/vector/auto/index_if.cpp | 0 .../ext/boost/fusion/vector/auto/insert.cpp | 0 .../boost/fusion/vector/auto/insert_range.cpp | 0 .../boost/fusion/vector/auto/intersperse.cpp | 0 .../ext/boost/fusion/vector/auto/is_empty.cpp | 0 .../ext/boost/fusion/vector/auto/length.cpp | 0 .../vector/auto/lexicographical_compare.cpp | 0 .../ext/boost/fusion/vector/auto/make.cpp | 0 .../ext/boost/fusion/vector/auto/none_of.cpp | 0 .../boost/fusion/vector/auto/partition.cpp | 0 .../boost/fusion/vector/auto/permutations.cpp | 0 .../boost/fusion/vector/auto/remove_at.cpp | 0 .../boost/fusion/vector/auto/remove_range.cpp | 0 .../ext/boost/fusion/vector/auto/reverse.cpp | 0 .../ext/boost/fusion/vector/auto/scans.cpp | 0 .../ext/boost/fusion/vector/auto/sequence.cpp | 0 .../ext/boost/fusion/vector/auto/slice.cpp | 0 .../ext/boost/fusion/vector/auto/sort.cpp | 0 .../ext/boost/fusion/vector/auto/span.cpp | 0 .../boost/fusion/vector/auto/take_back.cpp | 0 .../boost/fusion/vector/auto/take_front.cpp | 0 .../boost/fusion/vector/auto/take_while.cpp | 0 .../boost/fusion/vector/auto/transform.cpp | 0 .../ext/boost/fusion/vector/auto/unfolds.cpp | 0 .../ext/boost/fusion/vector/auto/unique.cpp | 0 .../ext/boost/fusion/vector/auto/zips.cpp | 0 .../ext/boost/mpl/integral_c/arithmetic.cpp | 0 .../ext/boost/mpl/integral_c/comparable.cpp | 0 .../ext/boost/mpl/integral_c/constant.cpp | 0 .../test/ext/boost/mpl/integral_c/interop.cpp | 0 .../test/ext/boost/mpl/integral_c/logical.cpp | 0 .../ext/boost/mpl/integral_c/orderable.cpp | 0 .../test/ext/boost/mpl/integral_c/tag.cpp | 0 .../test/ext/boost/mpl/list/comparable.cpp | 0 .../hana/test/ext/boost/mpl/list/foldable.cpp | 0 .../hana/test/ext/boost/mpl/list/iterable.cpp | 0 .../test/ext/boost/mpl/list/searchable.cpp | 0 libs/hana/test/ext/boost/mpl/list/tag.cpp | 0 libs/hana/test/ext/boost/mpl/list/to.cpp | 0 .../test/ext/boost/mpl/vector/comparable.cpp | 0 .../test/ext/boost/mpl/vector/foldable.cpp | 0 .../test/ext/boost/mpl/vector/iterable.cpp | 0 .../test/ext/boost/mpl/vector/searchable.cpp | 0 libs/hana/test/ext/boost/mpl/vector/tag.cpp | 0 libs/hana/test/ext/boost/mpl/vector/to.cpp | 0 .../hana/test/ext/boost/tuple/auto/_specs.hpp | 0 .../hana/test/ext/boost/tuple/auto/all_of.cpp | 0 .../hana/test/ext/boost/tuple/auto/any_of.cpp | 0 libs/hana/test/ext/boost/tuple/auto/ap.cpp | 0 libs/hana/test/ext/boost/tuple/auto/at.cpp | 0 .../boost/tuple/auto/cartesian_product.cpp | 0 .../test/ext/boost/tuple/auto/drop_back.cpp | 0 .../test/ext/boost/tuple/auto/drop_front.cpp | 0 .../test/ext/boost/tuple/auto/drop_while.cpp | 0 .../test/ext/boost/tuple/auto/for_each.cpp | 0 libs/hana/test/ext/boost/tuple/auto/group.cpp | 0 .../test/ext/boost/tuple/auto/index_if.cpp | 0 .../hana/test/ext/boost/tuple/auto/insert.cpp | 0 .../ext/boost/tuple/auto/insert_range.cpp | 0 .../boost/tuple/auto/intersperse.broken.cpp | 0 .../test/ext/boost/tuple/auto/is_empty.cpp | 0 .../hana/test/ext/boost/tuple/auto/length.cpp | 0 .../tuple/auto/lexicographical_compare.cpp | 0 libs/hana/test/ext/boost/tuple/auto/make.cpp | 0 .../test/ext/boost/tuple/auto/none_of.cpp | 0 .../test/ext/boost/tuple/auto/partition.cpp | 0 .../boost/tuple/auto/permutations.broken.cpp | 0 .../test/ext/boost/tuple/auto/remove_at.cpp | 0 .../ext/boost/tuple/auto/remove_range.cpp | 0 .../test/ext/boost/tuple/auto/reverse.cpp | 0 libs/hana/test/ext/boost/tuple/auto/scans.cpp | 0 .../test/ext/boost/tuple/auto/sequence.cpp | 0 libs/hana/test/ext/boost/tuple/auto/slice.cpp | 0 libs/hana/test/ext/boost/tuple/auto/sort.cpp | 0 libs/hana/test/ext/boost/tuple/auto/span.cpp | 0 .../test/ext/boost/tuple/auto/take_back.cpp | 0 .../boost/tuple/auto/take_front.broken.cpp | 0 .../test/ext/boost/tuple/auto/take_while.cpp | 0 .../test/ext/boost/tuple/auto/transform.cpp | 0 .../test/ext/boost/tuple/auto/unfolds.cpp | 0 .../hana/test/ext/boost/tuple/auto/unique.cpp | 0 libs/hana/test/ext/boost/tuple/auto/zips.cpp | 0 libs/hana/test/ext/boost/tuple/iterable.cpp | 0 libs/hana/test/ext/boost/tuple/monad.cpp | 0 libs/hana/test/ext/boost/tuple/monad_plus.cpp | 0 libs/hana/test/ext/boost/tuple/orderable.cpp | 0 libs/hana/test/ext/boost/tuple/searchable.cpp | 0 libs/hana/test/ext/boost/tuple/tag_of.cpp | 0 libs/hana/test/ext/std/array/at.cpp | 0 libs/hana/test/ext/std/array/comparable.cpp | 0 libs/hana/test/ext/std/array/foldable.cpp | 0 libs/hana/test/ext/std/array/issue_304.cpp | 0 libs/hana/test/ext/std/array/iterable.cpp | 0 libs/hana/test/ext/std/array/orderable.cpp | 0 libs/hana/test/ext/std/array/searchable.cpp | 0 libs/hana/test/ext/std/bugs/libcxx_19616.cpp | 0 libs/hana/test/ext/std/bugs/libcxx_22806.cpp | 0 .../integer_sequence/drop_front_exactly.cpp | 0 .../test/ext/std/integer_sequence/equal.cpp | 0 .../test/ext/std/integer_sequence/find_if.cpp | 0 .../test/ext/std/integer_sequence/front.cpp | 0 .../ext/std/integer_sequence/is_empty.cpp | 0 .../test/ext/std/integer_sequence/laws.cpp | 0 .../test/ext/std/integer_sequence/unpack.cpp | 0 .../ext/std/integral_constant/arithmetic.cpp | 0 .../ext/std/integral_constant/comparable.cpp | 0 .../ext/std/integral_constant/constant.cpp | 0 .../ext/std/integral_constant/interop.cpp | 0 .../ext/std/integral_constant/logical.cpp | 0 .../ext/std/integral_constant/orderable.cpp | 0 .../test/ext/std/integral_constant/tag.cpp | 0 libs/hana/test/ext/std/pair/first_second.cpp | 0 libs/hana/test/ext/std/pair/issue_90.cpp | 0 libs/hana/test/ext/std/pair/laws.cpp | 0 libs/hana/test/ext/std/pair/make.cpp | 0 libs/hana/test/ext/std/ratio/div.cpp | 0 libs/hana/test/ext/std/ratio/equal.cpp | 0 libs/hana/test/ext/std/ratio/laws.cpp | 0 libs/hana/test/ext/std/ratio/less.cpp | 0 libs/hana/test/ext/std/ratio/minus.cpp | 0 libs/hana/test/ext/std/ratio/mod.cpp | 0 libs/hana/test/ext/std/ratio/mult.cpp | 0 libs/hana/test/ext/std/ratio/one.cpp | 0 libs/hana/test/ext/std/ratio/plus.cpp | 0 libs/hana/test/ext/std/ratio/to.cpp | 0 libs/hana/test/ext/std/ratio/zero.cpp | 0 libs/hana/test/ext/std/tuple/auto/_specs.hpp | 0 libs/hana/test/ext/std/tuple/auto/all_of.cpp | 0 libs/hana/test/ext/std/tuple/auto/any_of.cpp | 0 libs/hana/test/ext/std/tuple/auto/ap.cpp | 0 libs/hana/test/ext/std/tuple/auto/at.cpp | 0 .../ext/std/tuple/auto/cartesian_product.cpp | 0 .../test/ext/std/tuple/auto/drop_back.cpp | 0 .../test/ext/std/tuple/auto/drop_front.cpp | 0 .../test/ext/std/tuple/auto/drop_while.cpp | 0 .../hana/test/ext/std/tuple/auto/for_each.cpp | 0 libs/hana/test/ext/std/tuple/auto/group.cpp | 0 .../hana/test/ext/std/tuple/auto/index_if.cpp | 0 libs/hana/test/ext/std/tuple/auto/insert.cpp | 0 .../test/ext/std/tuple/auto/insert_range.cpp | 0 .../test/ext/std/tuple/auto/intersperse.cpp | 0 .../hana/test/ext/std/tuple/auto/is_empty.cpp | 0 libs/hana/test/ext/std/tuple/auto/length.cpp | 0 .../tuple/auto/lexicographical_compare.cpp | 0 libs/hana/test/ext/std/tuple/auto/make.cpp | 0 libs/hana/test/ext/std/tuple/auto/none_of.cpp | 0 .../test/ext/std/tuple/auto/partition.cpp | 0 .../test/ext/std/tuple/auto/permutations.cpp | 0 .../test/ext/std/tuple/auto/remove_at.cpp | 0 .../test/ext/std/tuple/auto/remove_range.cpp | 0 libs/hana/test/ext/std/tuple/auto/reverse.cpp | 0 libs/hana/test/ext/std/tuple/auto/scans.cpp | 0 .../hana/test/ext/std/tuple/auto/sequence.cpp | 0 libs/hana/test/ext/std/tuple/auto/slice.cpp | 0 libs/hana/test/ext/std/tuple/auto/sort.cpp | 0 libs/hana/test/ext/std/tuple/auto/span.cpp | 0 .../test/ext/std/tuple/auto/take_back.cpp | 0 .../test/ext/std/tuple/auto/take_front.cpp | 0 .../test/ext/std/tuple/auto/take_while.cpp | 0 .../test/ext/std/tuple/auto/transform.cpp | 0 libs/hana/test/ext/std/tuple/auto/unfolds.cpp | 0 libs/hana/test/ext/std/tuple/auto/unique.cpp | 0 libs/hana/test/ext/std/tuple/auto/zips.cpp | 0 libs/hana/test/ext/std/tuple/issue_90.cpp | 0 libs/hana/test/ext/std/tuple/laws.cpp | 0 libs/hana/test/ext/std/tuple/laws.functor.cpp | 0 .../test/ext/std/tuple/laws.searchable.cpp | 0 libs/hana/test/ext/std/vector.cpp | 0 libs/hana/test/fold_left/ref.cpp | 0 libs/hana/test/fold_right/ref.cpp | 0 .../test/foldable/fold_left_mcd/iterable.cpp | 0 .../test/foldable/fold_left_mcd/monad.cpp | 0 .../foldable/fold_left_mcd/monad_plus.cpp | 0 .../test/foldable/fold_left_mcd/orderable.cpp | 0 .../foldable/fold_left_mcd/searchable.cpp | 0 .../test/foldable/fold_left_mcd/sequence.cpp | 0 .../test/foldable/iterable_mcd/iterable.cpp | 0 .../hana/test/foldable/iterable_mcd/monad.cpp | 0 .../test/foldable/iterable_mcd/monad_plus.cpp | 0 .../test/foldable/iterable_mcd/orderable.cpp | 0 .../test/foldable/iterable_mcd/searchable.cpp | 0 .../test/foldable/iterable_mcd/sequence.cpp | 0 .../test/foldable/unpack_mcd/iterable.cpp | 0 libs/hana/test/foldable/unpack_mcd/monad.cpp | 0 .../test/foldable/unpack_mcd/monad_plus.cpp | 0 .../test/foldable/unpack_mcd/orderable.cpp | 0 .../test/foldable/unpack_mcd/searchable.cpp | 0 .../test/foldable/unpack_mcd/sequence.cpp | 0 libs/hana/test/functional.cpp | 0 libs/hana/test/functional/apply.cpp | 12 - libs/hana/test/functional/capture.cpp | 0 libs/hana/test/functional/demux.cpp | 0 libs/hana/test/functional/fix.cpp | 0 libs/hana/test/functional/iterate.cpp | 0 libs/hana/test/functional/lockstep.cpp | 0 .../test/functional/overload_linearly.cpp | 0 libs/hana/test/functional/partial.cpp | 0 libs/hana/test/functional/placeholder.cpp | 0 libs/hana/test/functional/reverse_partial.cpp | 0 libs/hana/test/group.cpp | 0 .../test/identity/applicative.full_mcd.cpp | 0 .../test/identity/applicative.monad_mcd.cpp | 0 .../hana/test/identity/functor.adjust_mcd.cpp | 0 .../test/identity/functor.transform_mcd.cpp | 0 libs/hana/test/identity/main.hpp | 0 libs/hana/test/identity/monad.chain_mcd.cpp | 0 libs/hana/test/identity/monad.flatten_mcd.cpp | 0 libs/hana/test/if_/non_copyable.cpp | 0 libs/hana/test/index_if.cpp | 0 .../test/integral_constant/arithmetic.cpp | 0 .../test/integral_constant/comparable.cpp | 0 libs/hana/test/integral_constant/constant.cpp | 0 .../test/integral_constant/constexpr_init.cpp | 0 .../test/integral_constant/github_354.cpp | 0 libs/hana/test/integral_constant/hash.cpp | 0 libs/hana/test/integral_constant/hashable.cpp | 0 libs/hana/test/integral_constant/logical.cpp | 0 .../hana/test/integral_constant/operators.cpp | 0 .../hana/test/integral_constant/orderable.cpp | 0 libs/hana/test/integral_constant/std_api.cpp | 0 libs/hana/test/integral_constant/tag.cpp | 0 libs/hana/test/integral_constant/times.cpp | 0 libs/hana/test/integral_constant/udl.cpp | 0 libs/hana/test/issues/clang_20046.cpp | 0 libs/hana/test/issues/github_112.cpp | 0 libs/hana/test/issues/github_113.cpp | 0 libs/hana/test/issues/github_149.cpp | 0 libs/hana/test/issues/github_15.cpp | 0 libs/hana/test/issues/github_165.cpp | 0 libs/hana/test/issues/github_202.cpp | 0 libs/hana/test/issues/github_221.cpp | 0 libs/hana/test/issues/github_234.cpp | 0 libs/hana/test/issues/github_252.cpp | 0 libs/hana/test/issues/github_260.cpp | 0 libs/hana/test/issues/github_266.cpp | 0 libs/hana/test/issues/github_269.cpp | 0 libs/hana/test/issues/github_297.cpp | 0 libs/hana/test/issues/github_31.cpp | 0 libs/hana/test/issues/github_331.cpp | 0 libs/hana/test/issues/github_362.cpp | 0 libs/hana/test/issues/github_365.cpp | 0 libs/hana/test/issues/github_460.cpp | 27 + libs/hana/test/issues/github_470.cpp | 39 + libs/hana/test/issues/github_75/tu1.cpp | 0 libs/hana/test/issues/github_75/tu2.cpp | 0 libs/hana/test/issues/github_91.cpp | 0 libs/hana/test/lazy.cpp | 0 libs/hana/test/logical.cpp | 0 libs/hana/test/map/any_of.cpp | 0 libs/hana/test/map/assign.copy.cpp | 0 libs/hana/test/map/assign.move.cpp | 0 libs/hana/test/map/at_key.collisions.cpp | 0 libs/hana/test/map/at_key.cpp | 0 libs/hana/test/map/at_key.ref.cpp | 0 libs/hana/test/map/at_key.stackoverflow.cpp | 0 libs/hana/test/map/cnstr.copy.cpp | 0 libs/hana/test/map/cnstr.default.cpp | 0 libs/hana/test/map/cnstr.move.cpp | 0 libs/hana/test/map/cnstr.trap.cpp | 0 libs/hana/test/map/cnstr.variadic.cpp | 0 libs/hana/test/map/contains.cpp | 0 libs/hana/test/map/difference.cpp | 0 libs/hana/test/map/equal.cpp | 0 libs/hana/test/map/erase_key.cpp | 0 libs/hana/test/map/find_if.cpp | 0 libs/hana/test/map/fold_left.cpp | 0 libs/hana/test/map/fold_right.cpp | 0 libs/hana/test/map/insert.cpp | 0 libs/hana/test/map/intersection.cpp | 0 libs/hana/test/map/is_subset.cpp | 0 libs/hana/test/map/keys.cpp | 0 libs/hana/test/map/laws.cpp | 0 libs/hana/test/map/map.cpp | 0 libs/hana/test/map/symmetric_difference.cpp | 0 libs/hana/test/map/to.cpp | 0 libs/hana/test/map/union.cpp | 0 libs/hana/test/map/unpack.cpp | 0 libs/hana/test/map/values.cpp | 0 libs/hana/test/minimal_product.cpp | 0 libs/hana/test/monoid.cpp | 0 libs/hana/test/numeric/main.hpp | 0 libs/hana/test/numeric/minus_mcd.cpp | 0 libs/hana/test/numeric/negate_mcd.cpp | 0 libs/hana/test/optional/any_of.cpp | 0 libs/hana/test/optional/ap.cpp | 0 libs/hana/test/optional/chain.cpp | 0 libs/hana/test/optional/concat.cpp | 0 .../test/optional/copy.trap_construct.cpp | 0 libs/hana/test/optional/empty.cpp | 0 libs/hana/test/optional/equal.cpp | 0 libs/hana/test/optional/find_if.cpp | 0 libs/hana/test/optional/flatten.cpp | 0 libs/hana/test/optional/fold_left.cpp | 0 libs/hana/test/optional/fold_right.cpp | 0 libs/hana/test/optional/is_just.cpp | 0 libs/hana/test/optional/is_nothing.cpp | 0 libs/hana/test/optional/laws.cpp | 0 libs/hana/test/optional/less.cpp | 0 libs/hana/test/optional/lift.cpp | 0 libs/hana/test/optional/make.cpp | 0 libs/hana/test/optional/maybe.cpp | 0 libs/hana/test/optional/nested_type.cpp | 0 libs/hana/test/optional/operator_arrow.cpp | 0 libs/hana/test/optional/operator_deref.cpp | 0 libs/hana/test/optional/representation.cpp | 0 libs/hana/test/optional/sfinae.cpp | 0 libs/hana/test/optional/transform.cpp | 0 libs/hana/test/optional/unpack.cpp | 0 libs/hana/test/optional/value.cpp | 0 libs/hana/test/optional/value_or.cpp | 0 libs/hana/test/orderable.cpp | 0 libs/hana/test/pair/assign.copy.cpp | 0 libs/hana/test/pair/assign.move.cpp | 0 libs/hana/test/pair/cnstr.copy.cpp | 0 libs/hana/test/pair/cnstr.default.cpp | 0 libs/hana/test/pair/cnstr.memberwise.cpp | 0 libs/hana/test/pair/cnstr.move.cpp | 0 libs/hana/test/pair/comparable.cpp | 0 libs/hana/test/pair/empty_storage.cpp | 0 libs/hana/test/pair/foldable.cpp | 0 libs/hana/test/pair/issue_90.cpp | 0 libs/hana/test/pair/make.cpp | 0 libs/hana/test/pair/orderable.cpp | 0 libs/hana/test/pair/product.cpp | 0 libs/hana/test/pair/tag_of.cpp | 0 libs/hana/test/range/at.cpp | 0 libs/hana/test/range/back.cpp | 0 libs/hana/test/range/contains.cpp | 0 libs/hana/test/range/drop_front.cpp | 0 libs/hana/test/range/drop_front_exactly.cpp | 0 libs/hana/test/range/equal.cpp | 0 libs/hana/test/range/find.cpp | 0 libs/hana/test/range/front.cpp | 0 libs/hana/test/range/is_empty.cpp | 0 libs/hana/test/range/laws.cpp | 0 libs/hana/test/range/length.cpp | 0 libs/hana/test/range/make.cpp | 0 libs/hana/test/range/maximum.cpp | 0 libs/hana/test/range/minimum.cpp | 0 libs/hana/test/range/product.cpp | 0 libs/hana/test/range/range_c.cpp | 0 libs/hana/test/range/sum.cpp | 0 libs/hana/test/range/unpack.cpp | 0 libs/hana/test/repeat.cpp | 0 libs/hana/test/ring.cpp | 0 libs/hana/test/searchable.cpp | 0 libs/hana/test/set/any_of.cpp | 0 libs/hana/test/set/cnstr.copy.cpp | 0 libs/hana/test/set/cnstr.default.cpp | 0 libs/hana/test/set/cnstr.move.cpp | 0 libs/hana/test/set/cnstr.trap.cpp | 0 libs/hana/test/set/difference.cpp | 0 libs/hana/test/set/equal.cpp | 0 libs/hana/test/set/erase_key.cpp | 0 libs/hana/test/set/find_if.cpp | 0 libs/hana/test/set/insert.cpp | 0 libs/hana/test/set/intersection.cpp | 0 libs/hana/test/set/is_subset.cpp | 0 libs/hana/test/set/laws.cpp | 0 libs/hana/test/set/make.cpp | 0 libs/hana/test/set/symmetric_difference.cpp | 0 libs/hana/test/set/to.cpp | 0 libs/hana/test/set/union.cpp | 0 libs/hana/test/set/unpack.cpp | 0 libs/hana/test/string/any_of.cpp | 0 libs/hana/test/string/at.cpp | 0 libs/hana/test/string/c_str.cpp | 0 libs/hana/test/string/cnstr.c_str.cpp | 0 libs/hana/test/string/cnstr.copy.cpp | 0 libs/hana/test/string/cnstr.default.cpp | 0 libs/hana/test/string/contains.cpp | 0 libs/hana/test/string/drop_front_exactly.cpp | 0 libs/hana/test/string/equal.cpp | 0 libs/hana/test/string/find.cpp | 0 libs/hana/test/string/find_if.cpp | 0 libs/hana/test/string/front.cpp | 0 libs/hana/test/string/hash.cpp | 0 libs/hana/test/string/is_empty.cpp | 0 libs/hana/test/string/laws.cpp | 0 libs/hana/test/string/length.cpp | 0 libs/hana/test/string/less.cpp | 0 libs/hana/test/string/macro.cpp | 0 libs/hana/test/string/make.cpp | 0 libs/hana/test/string/plus.cpp | 0 libs/hana/test/string/to.cpp | 0 libs/hana/test/string/udl.cpp | 0 libs/hana/test/string/unpack.cpp | 0 libs/hana/test/string/zero.cpp | 0 libs/hana/test/tuple/any_of.clang_ice.cpp | 0 libs/hana/test/tuple/assign.convert_copy.cpp | 0 libs/hana/test/tuple/assign.convert_move.cpp | 0 libs/hana/test/tuple/assign.copy.cpp | 0 libs/hana/test/tuple/assign.move.cpp | 0 libs/hana/test/tuple/at.const.cpp | 0 libs/hana/test/tuple/at.non_const.cpp | 0 libs/hana/test/tuple/at.rv.cpp | 0 libs/hana/test/tuple/auto/_specs.hpp | 0 libs/hana/test/tuple/auto/all_of.cpp | 0 libs/hana/test/tuple/auto/any_of.cpp | 0 libs/hana/test/tuple/auto/ap.cpp | 0 libs/hana/test/tuple/auto/at.cpp | 0 .../test/tuple/auto/cartesian_product.cpp | 0 libs/hana/test/tuple/auto/drop_back.cpp | 0 libs/hana/test/tuple/auto/drop_front.cpp | 0 libs/hana/test/tuple/auto/drop_while.cpp | 0 libs/hana/test/tuple/auto/for_each.cpp | 0 libs/hana/test/tuple/auto/group.cpp | 0 libs/hana/test/tuple/auto/index_if.cpp | 0 libs/hana/test/tuple/auto/insert.cpp | 0 libs/hana/test/tuple/auto/insert_range.cpp | 0 libs/hana/test/tuple/auto/intersperse.cpp | 0 libs/hana/test/tuple/auto/is_empty.cpp | 0 libs/hana/test/tuple/auto/length.cpp | 0 .../tuple/auto/lexicographical_compare.cpp | 0 libs/hana/test/tuple/auto/make.cpp | 0 libs/hana/test/tuple/auto/none_of.cpp | 0 libs/hana/test/tuple/auto/partition.cpp | 0 libs/hana/test/tuple/auto/permutations.cpp | 0 libs/hana/test/tuple/auto/remove_at.cpp | 0 libs/hana/test/tuple/auto/remove_range.cpp | 0 libs/hana/test/tuple/auto/reverse.cpp | 0 libs/hana/test/tuple/auto/scans.cpp | 0 libs/hana/test/tuple/auto/sequence.cpp | 0 libs/hana/test/tuple/auto/slice.cpp | 0 libs/hana/test/tuple/auto/sort.cpp | 0 libs/hana/test/tuple/auto/span.cpp | 0 libs/hana/test/tuple/auto/take_back.cpp | 0 libs/hana/test/tuple/auto/take_front.cpp | 0 libs/hana/test/tuple/auto/take_while.cpp | 0 libs/hana/test/tuple/auto/transform.cpp | 0 libs/hana/test/tuple/auto/unfolds.cpp | 0 libs/hana/test/tuple/auto/unique.cpp | 0 libs/hana/test/tuple/auto/zips.cpp | 0 libs/hana/test/tuple/cnstr.convert_copy.cpp | 0 libs/hana/test/tuple/cnstr.convert_move.cpp | 0 libs/hana/test/tuple/cnstr.copy.cpp | 0 libs/hana/test/tuple/cnstr.default.cpp | 0 libs/hana/test/tuple/cnstr.move.cpp | 0 libs/hana/test/tuple/cnstr.nested.cpp | 0 libs/hana/test/tuple/cnstr.trap.cpp | 0 libs/hana/test/tuple/cnstr.variadic_array.cpp | 0 libs/hana/test/tuple/cnstr.variadic_copy.cpp | 0 .../test/tuple/cnstr.variadic_forward.cpp | 0 libs/hana/test/tuple/empty_member.cpp | 0 libs/hana/test/tuple/hold_refs.cpp | 0 libs/hana/test/tuple/issue_90.cpp | 0 libs/hana/test/tuple/laws.cpp | 0 libs/hana/test/tuple/laws.functor.cpp | 0 libs/hana/test/tuple/laws.searchable.cpp | 0 libs/hana/test/tuple/move_only.cpp | 0 libs/hana/test/tuple/pair_interop.cpp | 0 libs/hana/test/tuple/smart_ptr.cpp | 0 .../test/tuple/special.drop_front_exactly.cpp | 0 libs/hana/test/tuple/special.empty.cpp | 0 libs/hana/test/tuple/special.equal.cpp | 0 libs/hana/test/tuple/special.fill.cpp | 0 libs/hana/test/tuple/special.fold_left.cpp | 0 libs/hana/test/tuple/special.fold_right.cpp | 0 libs/hana/test/tuple/special.front.cpp | 0 libs/hana/test/tuple/special.is_empty.cpp | 0 libs/hana/test/tuple/special.prepend.cpp | 0 libs/hana/test/tuple/special.transform.cpp | 0 libs/hana/test/tuple/to.cpp | 0 libs/hana/test/tuple/unpack.cpp | 0 libs/hana/test/tuple/usability_of_types.cpp | 0 libs/hana/test/type/adl.cpp | 0 libs/hana/test/type/alignof.cpp | 0 libs/hana/test/type/decltype.cpp | 0 libs/hana/test/type/equal.cpp | 0 libs/hana/test/type/hash.cpp | 0 libs/hana/test/type/inherit_basic_type.cpp | 0 libs/hana/test/type/integral.cpp | 0 libs/hana/test/type/is_valid.cpp | 0 libs/hana/test/type/laws.cpp | 0 libs/hana/test/type/make.cpp | 0 libs/hana/test/type/metafunction.cpp | 0 libs/hana/test/type/metafunction_class.cpp | 0 libs/hana/test/type/nested_type.cpp | 0 libs/hana/test/type/sizeof.cpp | 0 libs/hana/test/type/template.cpp | 0 libs/hana/test/type/traits.cpp | 4 +- libs/hana/test/type/typeid.cpp | 0 libs/hana/test/type/unary_plus.cpp | 0 libs/hana/util/release.sh | 66 + libs/index.html | 0 libs/libraries.htm | 557 +-- libs/maintainers.txt | 35 +- libs/numeric/doc/build.jam | 11 + libs/numeric/index.html | 0 libs/numeric/sublibs | 0 libs/pfr/LICENSE_1_0.txt | 23 + libs/pfr/README.md | 101 + libs/pfr/doc/Jamfile.v2 | 69 + libs/pfr/doc/pfr.qbk | 530 +++ libs/pfr/example/get.cpp | 42 + libs/pfr/example/motivating_example0.cpp | 26 + libs/pfr/example/quick_examples.cpp | 188 + libs/pfr/example/sample_printing.cpp | 95 + libs/pfr/include/boost/pfr.hpp | 21 + libs/pfr/include/boost/pfr/core.hpp | 226 + .../pfr/detail/cast_to_layout_compatible.hpp | 75 + libs/pfr/include/boost/pfr/detail/config.hpp | 80 + libs/pfr/include/boost/pfr/detail/core.hpp | 24 + .../boost/pfr/detail/core14_classic.hpp | 703 +++ .../boost/pfr/detail/core14_loophole.hpp | 200 + libs/pfr/include/boost/pfr/detail/core17.hpp | 71 + .../boost/pfr/detail/core17_generated.hpp | 1036 +++++ .../include/boost/pfr/detail/detectors.hpp | 70 + .../include/boost/pfr/detail/fields_count.hpp | 266 ++ .../boost/pfr/detail/for_each_field_impl.hpp | 54 + .../include/boost/pfr/detail/functional.hpp | 191 + libs/pfr/include/boost/pfr/detail/io.hpp | 85 + .../detail/make_flat_tuple_of_references.hpp | 96 + .../pfr/detail/make_integer_sequence.hpp | 90 + .../boost/pfr/detail/offset_based_getter.hpp | 140 + .../pfr/include/boost/pfr/detail/rvalue_t.hpp | 35 + .../boost/pfr/detail/sequence_tuple.hpp | 127 + .../include/boost/pfr/detail/size_array.hpp | 79 + libs/pfr/include/boost/pfr/detail/size_t_.hpp | 18 + .../pfr/include/boost/pfr/detail/stdtuple.hpp | 46 + .../pfr/detail/tie_from_structure_tuple.hpp | 44 + .../boost/pfr/detail/unsafe_declval.hpp | 36 + libs/pfr/include/boost/pfr/functions_for.hpp | 93 + libs/pfr/include/boost/pfr/functors.hpp | 221 + libs/pfr/include/boost/pfr/io.hpp | 113 + libs/pfr/include/boost/pfr/io_fields.hpp | 164 + libs/pfr/include/boost/pfr/ops.hpp | 187 + libs/pfr/include/boost/pfr/ops_fields.hpp | 127 + libs/pfr/include/boost/pfr/tuple_size.hpp | 48 + libs/pfr/index.html | 13 + libs/pfr/meta/libraries.json | 17 + libs/pfr/misc/generate_cpp17.py | 111 + libs/pfr/test/Jamfile.v2 | 134 + libs/pfr/test/appveyor.yml | 100 + .../fields_count_on_reference.cpp | 15 + .../movable_and_lvalue_references.cpp | 25 + libs/pfr/test/compile-fail/non_aggregate.cpp | 16 + libs/pfr/test/compile-fail/ops_on_union.cpp | 18 + libs/pfr/test/compile-fail/ops_unions.cpp | 22 + .../compile-fail/ops_unrestricted_unions.cpp | 28 + .../test/compile-fail/pfr_review_test2.cpp | 39 + libs/pfr/test/compile-fail/private_fields.cpp | 30 + .../test/compile-fail/protected_fields.cpp | 26 + libs/pfr/test/compile-fail/rvalue_tie.cpp | 17 + .../test/compile-fail/virtual_functions.cpp | 20 + libs/pfr/test/loophole_detection.cpp | 29 + libs/pfr/test/offset_based_getter.cpp | 37 + libs/pfr/test/print_config.cpp | 35 + libs/pfr/test/run/bitfields_count.cpp | 21 + libs/pfr/test/run/constexpr_ops.cpp | 81 + libs/pfr/test/run/destructuring_tie.cpp | 60 + libs/pfr/test/run/error_pfr_c1202.cpp | 101 + libs/pfr/test/run/fields_count_on_const.cpp | 15 + libs/pfr/test/run/for_each_field.cpp | 113 + libs/pfr/test/run/functions_for.cpp | 160 + libs/pfr/test/run/get_const_field.cpp | 55 + .../run/get_non_default_constructible.cpp | 27 + libs/pfr/test/run/get_rvalue.cpp | 31 + libs/pfr/test/run/issue30.cpp | 37 + libs/pfr/test/run/issue33.cpp | 26 + libs/pfr/test/run/motivating_example.cpp | 22 + libs/pfr/test/run/motivating_example2.cpp | 21 + .../pfr/test/run/non_copyable_but_movable.cpp | 43 + libs/pfr/test/run/non_dc_non_cop_but_mov.cpp | 44 + .../test/run/non_default_constructible.cpp | 34 + libs/pfr/test/run/non_std_layout.cpp | 26 + libs/pfr/test/run/ops.cpp | 108 + libs/pfr/test/run/optional_chrono.cpp | 78 + libs/pfr/test/run/optional_like.cpp | 27 + libs/pfr/test/run/read_write.cpp | 90 + libs/pfr/test/run/read_write_non_literal.cpp | 75 + libs/pfr/test/run/std_interactions.cpp | 36 + libs/pfr/test/run/template_constructor.cpp | 56 + libs/pfr/test/run/template_forwarding_ref.cpp | 69 + libs/pfr/test/run/template_unconstrained.cpp | 69 + libs/pfr/test/run/tie_anonymous.cpp | 108 + .../test/run/tie_anonymous_const_field.cpp | 60 + libs/pfr/test/run/tuple_size.cpp | 16 + libs/pfr/test/test_tuple_sizes_on.cpp | 53 + libs/platform_maintainers.txt | 0 rst.css | 0 status/Jamfile.v2 | 0 status/boost-no-inspect | 0 status/boost_check_library.py | 0 status/expected_results.xml | 0 status/explicit-failures-markup.xml | 18 + status/explicit-failures.xsd | 0 tools/Jamfile.v2 | 0 tools/index.html | 0 tools/make-cputime-page.pl | 0 6519 files changed, 326909 insertions(+), 19291 deletions(-) create mode 100644 CMakeLists.txt mode change 100755 => 100644 INSTALL mode change 100755 => 100644 Jamroot mode change 100755 => 100644 LICENSE_1_0.txt mode change 100755 => 100644 README.md create mode 100644 appveyor.yml mode change 100755 => 100644 boost-build.jam mode change 100755 => 100644 boost.css mode change 100755 => 100644 boost.png mode change 100755 => 100644 boost/asio.hpp mode change 100755 => 100644 boost/asio/associated_allocator.hpp mode change 100755 => 100644 boost/asio/associated_executor.hpp mode change 100755 => 100644 boost/asio/async_result.hpp mode change 100755 => 100644 boost/asio/awaitable.hpp mode change 100755 => 100644 boost/asio/basic_datagram_socket.hpp mode change 100755 => 100644 boost/asio/basic_deadline_timer.hpp mode change 100755 => 100644 boost/asio/basic_io_object.hpp mode change 100755 => 100644 boost/asio/basic_raw_socket.hpp mode change 100755 => 100644 boost/asio/basic_seq_packet_socket.hpp mode change 100755 => 100644 boost/asio/basic_serial_port.hpp mode change 100755 => 100644 boost/asio/basic_signal_set.hpp mode change 100755 => 100644 boost/asio/basic_socket.hpp mode change 100755 => 100644 boost/asio/basic_socket_acceptor.hpp mode change 100755 => 100644 boost/asio/basic_socket_iostream.hpp mode change 100755 => 100644 boost/asio/basic_socket_streambuf.hpp mode change 100755 => 100644 boost/asio/basic_stream_socket.hpp mode change 100755 => 100644 boost/asio/basic_streambuf.hpp mode change 100755 => 100644 boost/asio/basic_streambuf_fwd.hpp mode change 100755 => 100644 boost/asio/basic_waitable_timer.hpp mode change 100755 => 100644 boost/asio/bind_executor.hpp mode change 100755 => 100644 boost/asio/buffer.hpp mode change 100755 => 100644 boost/asio/buffered_read_stream.hpp mode change 100755 => 100644 boost/asio/buffered_read_stream_fwd.hpp mode change 100755 => 100644 boost/asio/buffered_stream.hpp mode change 100755 => 100644 boost/asio/buffered_stream_fwd.hpp mode change 100755 => 100644 boost/asio/buffered_write_stream.hpp mode change 100755 => 100644 boost/asio/buffered_write_stream_fwd.hpp mode change 100755 => 100644 boost/asio/buffers_iterator.hpp mode change 100755 => 100644 boost/asio/co_spawn.hpp mode change 100755 => 100644 boost/asio/completion_condition.hpp mode change 100755 => 100644 boost/asio/compose.hpp mode change 100755 => 100644 boost/asio/connect.hpp mode change 100755 => 100644 boost/asio/coroutine.hpp mode change 100755 => 100644 boost/asio/deadline_timer.hpp mode change 100755 => 100644 boost/asio/defer.hpp mode change 100755 => 100644 boost/asio/detached.hpp mode change 100755 => 100644 boost/asio/detail/array.hpp mode change 100755 => 100644 boost/asio/detail/array_fwd.hpp mode change 100755 => 100644 boost/asio/detail/assert.hpp mode change 100755 => 100644 boost/asio/detail/atomic_count.hpp mode change 100755 => 100644 boost/asio/detail/base_from_completion_cond.hpp mode change 100755 => 100644 boost/asio/detail/bind_handler.hpp mode change 100755 => 100644 boost/asio/detail/buffer_resize_guard.hpp mode change 100755 => 100644 boost/asio/detail/buffer_sequence_adapter.hpp mode change 100755 => 100644 boost/asio/detail/buffered_stream_storage.hpp mode change 100755 => 100644 boost/asio/detail/call_stack.hpp mode change 100755 => 100644 boost/asio/detail/chrono.hpp mode change 100755 => 100644 boost/asio/detail/chrono_time_traits.hpp mode change 100755 => 100644 boost/asio/detail/completion_handler.hpp mode change 100755 => 100644 boost/asio/detail/concurrency_hint.hpp mode change 100755 => 100644 boost/asio/detail/conditionally_enabled_event.hpp mode change 100755 => 100644 boost/asio/detail/conditionally_enabled_mutex.hpp mode change 100755 => 100644 boost/asio/detail/config.hpp mode change 100755 => 100644 boost/asio/detail/consuming_buffers.hpp mode change 100755 => 100644 boost/asio/detail/cstddef.hpp mode change 100755 => 100644 boost/asio/detail/cstdint.hpp mode change 100755 => 100644 boost/asio/detail/date_time_fwd.hpp mode change 100755 => 100644 boost/asio/detail/deadline_timer_service.hpp mode change 100755 => 100644 boost/asio/detail/dependent_type.hpp mode change 100755 => 100644 boost/asio/detail/descriptor_ops.hpp mode change 100755 => 100644 boost/asio/detail/descriptor_read_op.hpp mode change 100755 => 100644 boost/asio/detail/descriptor_write_op.hpp mode change 100755 => 100644 boost/asio/detail/dev_poll_reactor.hpp mode change 100755 => 100644 boost/asio/detail/epoll_reactor.hpp mode change 100755 => 100644 boost/asio/detail/event.hpp mode change 100755 => 100644 boost/asio/detail/eventfd_select_interrupter.hpp mode change 100755 => 100644 boost/asio/detail/executor_function.hpp mode change 100755 => 100644 boost/asio/detail/executor_op.hpp mode change 100755 => 100644 boost/asio/detail/fd_set_adapter.hpp mode change 100755 => 100644 boost/asio/detail/fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/functional.hpp mode change 100755 => 100644 boost/asio/detail/future.hpp mode change 100755 => 100644 boost/asio/detail/gcc_arm_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/gcc_hppa_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/gcc_sync_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/gcc_x86_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/global.hpp mode change 100755 => 100644 boost/asio/detail/handler_alloc_helpers.hpp mode change 100755 => 100644 boost/asio/detail/handler_cont_helpers.hpp mode change 100755 => 100644 boost/asio/detail/handler_invoke_helpers.hpp mode change 100755 => 100644 boost/asio/detail/handler_tracking.hpp mode change 100755 => 100644 boost/asio/detail/handler_type_requirements.hpp mode change 100755 => 100644 boost/asio/detail/handler_work.hpp mode change 100755 => 100644 boost/asio/detail/hash_map.hpp mode change 100755 => 100644 boost/asio/detail/impl/buffer_sequence_adapter.ipp mode change 100755 => 100644 boost/asio/detail/impl/descriptor_ops.ipp mode change 100755 => 100644 boost/asio/detail/impl/dev_poll_reactor.hpp mode change 100755 => 100644 boost/asio/detail/impl/dev_poll_reactor.ipp mode change 100755 => 100644 boost/asio/detail/impl/epoll_reactor.hpp mode change 100755 => 100644 boost/asio/detail/impl/epoll_reactor.ipp mode change 100755 => 100644 boost/asio/detail/impl/eventfd_select_interrupter.ipp mode change 100755 => 100644 boost/asio/detail/impl/handler_tracking.ipp mode change 100755 => 100644 boost/asio/detail/impl/kqueue_reactor.hpp mode change 100755 => 100644 boost/asio/detail/impl/kqueue_reactor.ipp mode change 100755 => 100644 boost/asio/detail/impl/null_event.ipp mode change 100755 => 100644 boost/asio/detail/impl/pipe_select_interrupter.ipp mode change 100755 => 100644 boost/asio/detail/impl/posix_event.ipp mode change 100755 => 100644 boost/asio/detail/impl/posix_mutex.ipp mode change 100755 => 100644 boost/asio/detail/impl/posix_thread.ipp mode change 100755 => 100644 boost/asio/detail/impl/posix_tss_ptr.ipp mode change 100755 => 100644 boost/asio/detail/impl/reactive_descriptor_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/reactive_serial_port_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/reactive_socket_service_base.ipp mode change 100755 => 100644 boost/asio/detail/impl/resolver_service_base.ipp mode change 100755 => 100644 boost/asio/detail/impl/scheduler.ipp mode change 100755 => 100644 boost/asio/detail/impl/select_reactor.hpp mode change 100755 => 100644 boost/asio/detail/impl/select_reactor.ipp mode change 100755 => 100644 boost/asio/detail/impl/service_registry.hpp mode change 100755 => 100644 boost/asio/detail/impl/service_registry.ipp mode change 100755 => 100644 boost/asio/detail/impl/signal_set_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/socket_ops.ipp mode change 100755 => 100644 boost/asio/detail/impl/socket_select_interrupter.ipp mode change 100755 => 100644 boost/asio/detail/impl/strand_executor_service.hpp mode change 100755 => 100644 boost/asio/detail/impl/strand_executor_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/strand_service.hpp mode change 100755 => 100644 boost/asio/detail/impl/strand_service.ipp create mode 100644 boost/asio/detail/impl/thread_context.ipp mode change 100755 => 100644 boost/asio/detail/impl/throw_error.ipp mode change 100755 => 100644 boost/asio/detail/impl/timer_queue_ptime.ipp mode change 100755 => 100644 boost/asio/detail/impl/timer_queue_set.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_event.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_iocp_handle_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_iocp_io_context.hpp mode change 100755 => 100644 boost/asio/detail/impl/win_iocp_io_context.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_iocp_serial_port_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_iocp_socket_service_base.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_mutex.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_object_handle_service.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_static_mutex.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_thread.ipp mode change 100755 => 100644 boost/asio/detail/impl/win_tss_ptr.ipp mode change 100755 => 100644 boost/asio/detail/impl/winrt_ssocket_service_base.ipp mode change 100755 => 100644 boost/asio/detail/impl/winrt_timer_scheduler.hpp mode change 100755 => 100644 boost/asio/detail/impl/winrt_timer_scheduler.ipp mode change 100755 => 100644 boost/asio/detail/impl/winsock_init.ipp mode change 100755 => 100644 boost/asio/detail/io_control.hpp mode change 100755 => 100644 boost/asio/detail/io_object_impl.hpp mode change 100755 => 100644 boost/asio/detail/is_buffer_sequence.hpp mode change 100755 => 100644 boost/asio/detail/is_executor.hpp mode change 100755 => 100644 boost/asio/detail/keyword_tss_ptr.hpp mode change 100755 => 100644 boost/asio/detail/kqueue_reactor.hpp mode change 100755 => 100644 boost/asio/detail/limits.hpp mode change 100755 => 100644 boost/asio/detail/local_free_on_block_exit.hpp mode change 100755 => 100644 boost/asio/detail/macos_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/memory.hpp mode change 100755 => 100644 boost/asio/detail/mutex.hpp mode change 100755 => 100644 boost/asio/detail/non_const_lvalue.hpp mode change 100755 => 100644 boost/asio/detail/noncopyable.hpp mode change 100755 => 100644 boost/asio/detail/null_event.hpp mode change 100755 => 100644 boost/asio/detail/null_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/null_global.hpp mode change 100755 => 100644 boost/asio/detail/null_mutex.hpp mode change 100755 => 100644 boost/asio/detail/null_reactor.hpp mode change 100755 => 100644 boost/asio/detail/null_signal_blocker.hpp mode change 100755 => 100644 boost/asio/detail/null_socket_service.hpp mode change 100755 => 100644 boost/asio/detail/null_static_mutex.hpp mode change 100755 => 100644 boost/asio/detail/null_thread.hpp mode change 100755 => 100644 boost/asio/detail/null_tss_ptr.hpp mode change 100755 => 100644 boost/asio/detail/object_pool.hpp mode change 100755 => 100644 boost/asio/detail/old_win_sdk_compat.hpp mode change 100755 => 100644 boost/asio/detail/op_queue.hpp mode change 100755 => 100644 boost/asio/detail/operation.hpp mode change 100755 => 100644 boost/asio/detail/pipe_select_interrupter.hpp mode change 100755 => 100644 boost/asio/detail/pop_options.hpp mode change 100755 => 100644 boost/asio/detail/posix_event.hpp mode change 100755 => 100644 boost/asio/detail/posix_fd_set_adapter.hpp mode change 100755 => 100644 boost/asio/detail/posix_global.hpp mode change 100755 => 100644 boost/asio/detail/posix_mutex.hpp mode change 100755 => 100644 boost/asio/detail/posix_signal_blocker.hpp mode change 100755 => 100644 boost/asio/detail/posix_static_mutex.hpp mode change 100755 => 100644 boost/asio/detail/posix_thread.hpp mode change 100755 => 100644 boost/asio/detail/posix_tss_ptr.hpp mode change 100755 => 100644 boost/asio/detail/push_options.hpp mode change 100755 => 100644 boost/asio/detail/reactive_descriptor_service.hpp mode change 100755 => 100644 boost/asio/detail/reactive_null_buffers_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_serial_port_service.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_accept_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_connect_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_recv_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_recvfrom_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_recvmsg_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_send_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_sendto_op.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_service.hpp mode change 100755 => 100644 boost/asio/detail/reactive_socket_service_base.hpp mode change 100755 => 100644 boost/asio/detail/reactive_wait_op.hpp mode change 100755 => 100644 boost/asio/detail/reactor.hpp mode change 100755 => 100644 boost/asio/detail/reactor_fwd.hpp mode change 100755 => 100644 boost/asio/detail/reactor_op.hpp mode change 100755 => 100644 boost/asio/detail/reactor_op_queue.hpp mode change 100755 => 100644 boost/asio/detail/recycling_allocator.hpp mode change 100755 => 100644 boost/asio/detail/regex_fwd.hpp mode change 100755 => 100644 boost/asio/detail/resolve_endpoint_op.hpp mode change 100755 => 100644 boost/asio/detail/resolve_op.hpp mode change 100755 => 100644 boost/asio/detail/resolve_query_op.hpp mode change 100755 => 100644 boost/asio/detail/resolver_service.hpp mode change 100755 => 100644 boost/asio/detail/resolver_service_base.hpp mode change 100755 => 100644 boost/asio/detail/scheduler.hpp mode change 100755 => 100644 boost/asio/detail/scheduler_operation.hpp mode change 100755 => 100644 boost/asio/detail/scheduler_thread_info.hpp mode change 100755 => 100644 boost/asio/detail/scoped_lock.hpp mode change 100755 => 100644 boost/asio/detail/scoped_ptr.hpp mode change 100755 => 100644 boost/asio/detail/select_interrupter.hpp mode change 100755 => 100644 boost/asio/detail/select_reactor.hpp mode change 100755 => 100644 boost/asio/detail/service_registry.hpp mode change 100755 => 100644 boost/asio/detail/signal_blocker.hpp mode change 100755 => 100644 boost/asio/detail/signal_handler.hpp mode change 100755 => 100644 boost/asio/detail/signal_init.hpp mode change 100755 => 100644 boost/asio/detail/signal_op.hpp mode change 100755 => 100644 boost/asio/detail/signal_set_service.hpp mode change 100755 => 100644 boost/asio/detail/socket_holder.hpp mode change 100755 => 100644 boost/asio/detail/socket_ops.hpp mode change 100755 => 100644 boost/asio/detail/socket_option.hpp mode change 100755 => 100644 boost/asio/detail/socket_select_interrupter.hpp mode change 100755 => 100644 boost/asio/detail/socket_types.hpp mode change 100755 => 100644 boost/asio/detail/solaris_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/static_mutex.hpp mode change 100755 => 100644 boost/asio/detail/std_event.hpp mode change 100755 => 100644 boost/asio/detail/std_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/std_global.hpp mode change 100755 => 100644 boost/asio/detail/std_mutex.hpp mode change 100755 => 100644 boost/asio/detail/std_static_mutex.hpp mode change 100755 => 100644 boost/asio/detail/std_thread.hpp mode change 100755 => 100644 boost/asio/detail/strand_executor_service.hpp mode change 100755 => 100644 boost/asio/detail/strand_service.hpp mode change 100755 => 100644 boost/asio/detail/string_view.hpp mode change 100755 => 100644 boost/asio/detail/thread.hpp mode change 100755 => 100644 boost/asio/detail/thread_context.hpp mode change 100755 => 100644 boost/asio/detail/thread_group.hpp mode change 100755 => 100644 boost/asio/detail/thread_info_base.hpp mode change 100755 => 100644 boost/asio/detail/throw_error.hpp mode change 100755 => 100644 boost/asio/detail/throw_exception.hpp mode change 100755 => 100644 boost/asio/detail/timer_queue.hpp mode change 100755 => 100644 boost/asio/detail/timer_queue_base.hpp mode change 100755 => 100644 boost/asio/detail/timer_queue_ptime.hpp mode change 100755 => 100644 boost/asio/detail/timer_queue_set.hpp mode change 100755 => 100644 boost/asio/detail/timer_scheduler.hpp mode change 100755 => 100644 boost/asio/detail/timer_scheduler_fwd.hpp mode change 100755 => 100644 boost/asio/detail/tss_ptr.hpp mode change 100755 => 100644 boost/asio/detail/type_traits.hpp mode change 100755 => 100644 boost/asio/detail/variadic_templates.hpp mode change 100755 => 100644 boost/asio/detail/wait_handler.hpp mode change 100755 => 100644 boost/asio/detail/wait_op.hpp mode change 100755 => 100644 boost/asio/detail/win_event.hpp mode change 100755 => 100644 boost/asio/detail/win_fd_set_adapter.hpp mode change 100755 => 100644 boost/asio/detail/win_fenced_block.hpp mode change 100755 => 100644 boost/asio/detail/win_global.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_handle_read_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_handle_service.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_handle_write_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_io_context.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_null_buffers_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_operation.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_overlapped_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_overlapped_ptr.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_serial_port_service.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_accept_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_connect_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_recv_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_recvfrom_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_recvmsg_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_send_op.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_service.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_socket_service_base.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_thread_info.hpp mode change 100755 => 100644 boost/asio/detail/win_iocp_wait_op.hpp mode change 100755 => 100644 boost/asio/detail/win_mutex.hpp mode change 100755 => 100644 boost/asio/detail/win_object_handle_service.hpp mode change 100755 => 100644 boost/asio/detail/win_static_mutex.hpp mode change 100755 => 100644 boost/asio/detail/win_thread.hpp mode change 100755 => 100644 boost/asio/detail/win_tss_ptr.hpp mode change 100755 => 100644 boost/asio/detail/winapp_thread.hpp mode change 100755 => 100644 boost/asio/detail/wince_thread.hpp mode change 100755 => 100644 boost/asio/detail/winrt_async_manager.hpp mode change 100755 => 100644 boost/asio/detail/winrt_async_op.hpp mode change 100755 => 100644 boost/asio/detail/winrt_resolve_op.hpp mode change 100755 => 100644 boost/asio/detail/winrt_resolver_service.hpp mode change 100755 => 100644 boost/asio/detail/winrt_socket_connect_op.hpp mode change 100755 => 100644 boost/asio/detail/winrt_socket_recv_op.hpp mode change 100755 => 100644 boost/asio/detail/winrt_socket_send_op.hpp mode change 100755 => 100644 boost/asio/detail/winrt_ssocket_service.hpp mode change 100755 => 100644 boost/asio/detail/winrt_ssocket_service_base.hpp mode change 100755 => 100644 boost/asio/detail/winrt_timer_scheduler.hpp mode change 100755 => 100644 boost/asio/detail/winrt_utils.hpp mode change 100755 => 100644 boost/asio/detail/winsock_init.hpp mode change 100755 => 100644 boost/asio/detail/work_dispatcher.hpp mode change 100755 => 100644 boost/asio/detail/wrapped_handler.hpp mode change 100755 => 100644 boost/asio/dispatch.hpp mode change 100755 => 100644 boost/asio/error.hpp mode change 100755 => 100644 boost/asio/execution_context.hpp mode change 100755 => 100644 boost/asio/executor.hpp mode change 100755 => 100644 boost/asio/executor_work_guard.hpp create mode 100644 boost/asio/experimental/as_single.hpp create mode 100644 boost/asio/experimental/impl/as_single.hpp mode change 100755 => 100644 boost/asio/generic/basic_endpoint.hpp mode change 100755 => 100644 boost/asio/generic/datagram_protocol.hpp mode change 100755 => 100644 boost/asio/generic/detail/endpoint.hpp mode change 100755 => 100644 boost/asio/generic/detail/impl/endpoint.ipp mode change 100755 => 100644 boost/asio/generic/raw_protocol.hpp mode change 100755 => 100644 boost/asio/generic/seq_packet_protocol.hpp mode change 100755 => 100644 boost/asio/generic/stream_protocol.hpp mode change 100755 => 100644 boost/asio/handler_alloc_hook.hpp mode change 100755 => 100644 boost/asio/handler_continuation_hook.hpp mode change 100755 => 100644 boost/asio/handler_invoke_hook.hpp mode change 100755 => 100644 boost/asio/high_resolution_timer.hpp mode change 100755 => 100644 boost/asio/impl/awaitable.hpp mode change 100755 => 100644 boost/asio/impl/buffered_read_stream.hpp mode change 100755 => 100644 boost/asio/impl/buffered_write_stream.hpp mode change 100755 => 100644 boost/asio/impl/co_spawn.hpp mode change 100755 => 100644 boost/asio/impl/compose.hpp mode change 100755 => 100644 boost/asio/impl/connect.hpp mode change 100755 => 100644 boost/asio/impl/defer.hpp mode change 100755 => 100644 boost/asio/impl/detached.hpp mode change 100755 => 100644 boost/asio/impl/dispatch.hpp mode change 100755 => 100644 boost/asio/impl/error.ipp mode change 100755 => 100644 boost/asio/impl/execution_context.hpp mode change 100755 => 100644 boost/asio/impl/execution_context.ipp mode change 100755 => 100644 boost/asio/impl/executor.hpp mode change 100755 => 100644 boost/asio/impl/executor.ipp mode change 100755 => 100644 boost/asio/impl/handler_alloc_hook.ipp mode change 100755 => 100644 boost/asio/impl/io_context.hpp mode change 100755 => 100644 boost/asio/impl/io_context.ipp mode change 100755 => 100644 boost/asio/impl/post.hpp mode change 100755 => 100644 boost/asio/impl/read.hpp mode change 100755 => 100644 boost/asio/impl/read_at.hpp mode change 100755 => 100644 boost/asio/impl/read_until.hpp mode change 100755 => 100644 boost/asio/impl/redirect_error.hpp mode change 100755 => 100644 boost/asio/impl/serial_port_base.hpp mode change 100755 => 100644 boost/asio/impl/serial_port_base.ipp mode change 100755 => 100644 boost/asio/impl/spawn.hpp mode change 100755 => 100644 boost/asio/impl/src.hpp mode change 100755 => 100644 boost/asio/impl/system_context.hpp mode change 100755 => 100644 boost/asio/impl/system_context.ipp mode change 100755 => 100644 boost/asio/impl/system_executor.hpp mode change 100755 => 100644 boost/asio/impl/thread_pool.hpp mode change 100755 => 100644 boost/asio/impl/thread_pool.ipp mode change 100755 => 100644 boost/asio/impl/use_awaitable.hpp mode change 100755 => 100644 boost/asio/impl/use_future.hpp mode change 100755 => 100644 boost/asio/impl/write.hpp mode change 100755 => 100644 boost/asio/impl/write_at.hpp mode change 100755 => 100644 boost/asio/io_context.hpp mode change 100755 => 100644 boost/asio/io_context_strand.hpp mode change 100755 => 100644 boost/asio/io_service.hpp mode change 100755 => 100644 boost/asio/io_service_strand.hpp mode change 100755 => 100644 boost/asio/ip/address.hpp mode change 100755 => 100644 boost/asio/ip/address_v4.hpp mode change 100755 => 100644 boost/asio/ip/address_v4_iterator.hpp mode change 100755 => 100644 boost/asio/ip/address_v4_range.hpp mode change 100755 => 100644 boost/asio/ip/address_v6.hpp mode change 100755 => 100644 boost/asio/ip/address_v6_iterator.hpp mode change 100755 => 100644 boost/asio/ip/address_v6_range.hpp mode change 100755 => 100644 boost/asio/ip/bad_address_cast.hpp mode change 100755 => 100644 boost/asio/ip/basic_endpoint.hpp mode change 100755 => 100644 boost/asio/ip/basic_resolver.hpp mode change 100755 => 100644 boost/asio/ip/basic_resolver_entry.hpp mode change 100755 => 100644 boost/asio/ip/basic_resolver_iterator.hpp mode change 100755 => 100644 boost/asio/ip/basic_resolver_query.hpp mode change 100755 => 100644 boost/asio/ip/basic_resolver_results.hpp mode change 100755 => 100644 boost/asio/ip/detail/endpoint.hpp mode change 100755 => 100644 boost/asio/ip/detail/impl/endpoint.ipp mode change 100755 => 100644 boost/asio/ip/detail/socket_option.hpp mode change 100755 => 100644 boost/asio/ip/host_name.hpp mode change 100755 => 100644 boost/asio/ip/icmp.hpp mode change 100755 => 100644 boost/asio/ip/impl/address.hpp mode change 100755 => 100644 boost/asio/ip/impl/address.ipp mode change 100755 => 100644 boost/asio/ip/impl/address_v4.hpp mode change 100755 => 100644 boost/asio/ip/impl/address_v4.ipp mode change 100755 => 100644 boost/asio/ip/impl/address_v6.hpp mode change 100755 => 100644 boost/asio/ip/impl/address_v6.ipp mode change 100755 => 100644 boost/asio/ip/impl/basic_endpoint.hpp mode change 100755 => 100644 boost/asio/ip/impl/host_name.ipp mode change 100755 => 100644 boost/asio/ip/impl/network_v4.hpp mode change 100755 => 100644 boost/asio/ip/impl/network_v4.ipp mode change 100755 => 100644 boost/asio/ip/impl/network_v6.hpp mode change 100755 => 100644 boost/asio/ip/impl/network_v6.ipp mode change 100755 => 100644 boost/asio/ip/multicast.hpp mode change 100755 => 100644 boost/asio/ip/network_v4.hpp mode change 100755 => 100644 boost/asio/ip/network_v6.hpp mode change 100755 => 100644 boost/asio/ip/resolver_base.hpp mode change 100755 => 100644 boost/asio/ip/resolver_query_base.hpp mode change 100755 => 100644 boost/asio/ip/tcp.hpp mode change 100755 => 100644 boost/asio/ip/udp.hpp mode change 100755 => 100644 boost/asio/ip/unicast.hpp mode change 100755 => 100644 boost/asio/ip/v6_only.hpp mode change 100755 => 100644 boost/asio/is_executor.hpp mode change 100755 => 100644 boost/asio/is_read_buffered.hpp mode change 100755 => 100644 boost/asio/is_write_buffered.hpp mode change 100755 => 100644 boost/asio/local/basic_endpoint.hpp mode change 100755 => 100644 boost/asio/local/connect_pair.hpp mode change 100755 => 100644 boost/asio/local/datagram_protocol.hpp mode change 100755 => 100644 boost/asio/local/detail/endpoint.hpp mode change 100755 => 100644 boost/asio/local/detail/impl/endpoint.ipp mode change 100755 => 100644 boost/asio/local/stream_protocol.hpp mode change 100755 => 100644 boost/asio/packaged_task.hpp mode change 100755 => 100644 boost/asio/placeholders.hpp mode change 100755 => 100644 boost/asio/posix/basic_descriptor.hpp mode change 100755 => 100644 boost/asio/posix/basic_stream_descriptor.hpp mode change 100755 => 100644 boost/asio/posix/descriptor.hpp mode change 100755 => 100644 boost/asio/posix/descriptor_base.hpp mode change 100755 => 100644 boost/asio/posix/stream_descriptor.hpp mode change 100755 => 100644 boost/asio/post.hpp mode change 100755 => 100644 boost/asio/read.hpp mode change 100755 => 100644 boost/asio/read_at.hpp mode change 100755 => 100644 boost/asio/read_until.hpp mode change 100755 => 100644 boost/asio/redirect_error.hpp mode change 100755 => 100644 boost/asio/serial_port.hpp mode change 100755 => 100644 boost/asio/serial_port_base.hpp mode change 100755 => 100644 boost/asio/signal_set.hpp mode change 100755 => 100644 boost/asio/socket_base.hpp mode change 100755 => 100644 boost/asio/spawn.hpp mode change 100755 => 100644 boost/asio/ssl.hpp mode change 100755 => 100644 boost/asio/ssl/context.hpp mode change 100755 => 100644 boost/asio/ssl/context_base.hpp mode change 100755 => 100644 boost/asio/ssl/detail/buffered_handshake_op.hpp mode change 100755 => 100644 boost/asio/ssl/detail/engine.hpp mode change 100755 => 100644 boost/asio/ssl/detail/handshake_op.hpp mode change 100755 => 100644 boost/asio/ssl/detail/impl/engine.ipp mode change 100755 => 100644 boost/asio/ssl/detail/impl/openssl_init.ipp mode change 100755 => 100644 boost/asio/ssl/detail/io.hpp mode change 100755 => 100644 boost/asio/ssl/detail/openssl_init.hpp mode change 100755 => 100644 boost/asio/ssl/detail/openssl_types.hpp mode change 100755 => 100644 boost/asio/ssl/detail/password_callback.hpp mode change 100755 => 100644 boost/asio/ssl/detail/read_op.hpp mode change 100755 => 100644 boost/asio/ssl/detail/shutdown_op.hpp mode change 100755 => 100644 boost/asio/ssl/detail/stream_core.hpp mode change 100755 => 100644 boost/asio/ssl/detail/verify_callback.hpp mode change 100755 => 100644 boost/asio/ssl/detail/write_op.hpp mode change 100755 => 100644 boost/asio/ssl/error.hpp mode change 100755 => 100644 boost/asio/ssl/impl/context.hpp mode change 100755 => 100644 boost/asio/ssl/impl/context.ipp mode change 100755 => 100644 boost/asio/ssl/impl/error.ipp mode change 100755 => 100644 boost/asio/ssl/impl/rfc2818_verification.ipp mode change 100755 => 100644 boost/asio/ssl/impl/src.hpp mode change 100755 => 100644 boost/asio/ssl/rfc2818_verification.hpp mode change 100755 => 100644 boost/asio/ssl/stream.hpp mode change 100755 => 100644 boost/asio/ssl/stream_base.hpp mode change 100755 => 100644 boost/asio/ssl/verify_context.hpp mode change 100755 => 100644 boost/asio/ssl/verify_mode.hpp mode change 100755 => 100644 boost/asio/steady_timer.hpp mode change 100755 => 100644 boost/asio/strand.hpp mode change 100755 => 100644 boost/asio/streambuf.hpp mode change 100755 => 100644 boost/asio/system_context.hpp mode change 100755 => 100644 boost/asio/system_executor.hpp mode change 100755 => 100644 boost/asio/system_timer.hpp mode change 100755 => 100644 boost/asio/this_coro.hpp mode change 100755 => 100644 boost/asio/thread_pool.hpp mode change 100755 => 100644 boost/asio/time_traits.hpp mode change 100755 => 100644 boost/asio/ts/buffer.hpp mode change 100755 => 100644 boost/asio/ts/executor.hpp mode change 100755 => 100644 boost/asio/ts/internet.hpp mode change 100755 => 100644 boost/asio/ts/io_context.hpp mode change 100755 => 100644 boost/asio/ts/net.hpp mode change 100755 => 100644 boost/asio/ts/netfwd.hpp mode change 100755 => 100644 boost/asio/ts/socket.hpp mode change 100755 => 100644 boost/asio/ts/timer.hpp mode change 100755 => 100644 boost/asio/unyield.hpp mode change 100755 => 100644 boost/asio/use_awaitable.hpp mode change 100755 => 100644 boost/asio/use_future.hpp mode change 100755 => 100644 boost/asio/uses_executor.hpp mode change 100755 => 100644 boost/asio/version.hpp mode change 100755 => 100644 boost/asio/wait_traits.hpp mode change 100755 => 100644 boost/asio/windows/basic_object_handle.hpp mode change 100755 => 100644 boost/asio/windows/basic_overlapped_handle.hpp mode change 100755 => 100644 boost/asio/windows/basic_random_access_handle.hpp mode change 100755 => 100644 boost/asio/windows/basic_stream_handle.hpp mode change 100755 => 100644 boost/asio/windows/object_handle.hpp mode change 100755 => 100644 boost/asio/windows/overlapped_handle.hpp mode change 100755 => 100644 boost/asio/windows/overlapped_ptr.hpp mode change 100755 => 100644 boost/asio/windows/random_access_handle.hpp mode change 100755 => 100644 boost/asio/windows/stream_handle.hpp mode change 100755 => 100644 boost/asio/write.hpp mode change 100755 => 100644 boost/asio/write_at.hpp mode change 100755 => 100644 boost/asio/yield.hpp mode change 100755 => 100644 boost/beast.hpp mode change 100755 => 100644 boost/beast/_experimental/http/icy_stream.hpp mode change 100755 => 100644 boost/beast/_experimental/http/impl/icy_stream.hpp create mode 100644 boost/beast/_experimental/test/detail/stream_state.hpp create mode 100644 boost/beast/_experimental/test/detail/stream_state.ipp mode change 100755 => 100644 boost/beast/_experimental/test/error.hpp mode change 100755 => 100644 boost/beast/_experimental/test/fail_count.hpp mode change 100755 => 100644 boost/beast/_experimental/test/handler.hpp mode change 100755 => 100644 boost/beast/_experimental/test/impl/error.hpp mode change 100755 => 100644 boost/beast/_experimental/test/impl/error.ipp mode change 100755 => 100644 boost/beast/_experimental/test/impl/fail_count.ipp mode change 100755 => 100644 boost/beast/_experimental/test/impl/stream.hpp mode change 100755 => 100644 boost/beast/_experimental/test/impl/stream.ipp mode change 100755 => 100644 boost/beast/_experimental/test/stream.hpp mode change 100755 => 100644 boost/beast/_experimental/test/tcp.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/amount.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/detail/const_container.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/dstream.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/global_suites.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/main.ipp mode change 100755 => 100644 boost/beast/_experimental/unit_test/match.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/recorder.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/reporter.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/results.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/runner.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/suite.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/suite_info.hpp mode change 100755 => 100644 boost/beast/_experimental/unit_test/suite_list.hpp mode change 100755 => 100644 boost/beast/core.hpp mode change 100755 => 100644 boost/beast/core/async_base.hpp mode change 100755 => 100644 boost/beast/core/basic_stream.hpp mode change 100755 => 100644 boost/beast/core/bind_handler.hpp mode change 100755 => 100644 boost/beast/core/buffer_traits.hpp mode change 100755 => 100644 boost/beast/core/buffered_read_stream.hpp mode change 100755 => 100644 boost/beast/core/buffers_adaptor.hpp mode change 100755 => 100644 boost/beast/core/buffers_cat.hpp mode change 100755 => 100644 boost/beast/core/buffers_prefix.hpp mode change 100755 => 100644 boost/beast/core/buffers_range.hpp mode change 100755 => 100644 boost/beast/core/buffers_suffix.hpp mode change 100755 => 100644 boost/beast/core/buffers_to_string.hpp mode change 100755 => 100644 boost/beast/core/detail/allocator.hpp mode change 100755 => 100644 boost/beast/core/detail/async_base.hpp mode change 100755 => 100644 boost/beast/core/detail/base64.hpp mode change 100755 => 100644 boost/beast/core/detail/base64.ipp mode change 100755 => 100644 boost/beast/core/detail/bind_continuation.hpp mode change 100755 => 100644 boost/beast/core/detail/bind_default_executor.hpp mode change 100755 => 100644 boost/beast/core/detail/bind_handler.hpp mode change 100755 => 100644 boost/beast/core/detail/buffer.hpp mode change 100755 => 100644 boost/beast/core/detail/buffer_traits.hpp mode change 100755 => 100644 boost/beast/core/detail/buffers_pair.hpp mode change 100755 => 100644 boost/beast/core/detail/buffers_range_adaptor.hpp mode change 100755 => 100644 boost/beast/core/detail/buffers_ref.hpp mode change 100755 => 100644 boost/beast/core/detail/chacha.hpp mode change 100755 => 100644 boost/beast/core/detail/char_buffer.hpp mode change 100755 => 100644 boost/beast/core/detail/clamp.hpp mode change 100755 => 100644 boost/beast/core/detail/config.hpp mode change 100755 => 100644 boost/beast/core/detail/cpu_info.hpp mode change 100755 => 100644 boost/beast/core/detail/flat_stream.hpp mode change 100755 => 100644 boost/beast/core/detail/get_io_context.hpp mode change 100755 => 100644 boost/beast/core/detail/impl/read.hpp mode change 100755 => 100644 boost/beast/core/detail/impl/temporary_buffer.ipp mode change 100755 => 100644 boost/beast/core/detail/is_invocable.hpp mode change 100755 => 100644 boost/beast/core/detail/ostream.hpp mode change 100755 => 100644 boost/beast/core/detail/pcg.hpp mode change 100755 => 100644 boost/beast/core/detail/read.hpp mode change 100755 => 100644 boost/beast/core/detail/remap_post_to_defer.hpp mode change 100755 => 100644 boost/beast/core/detail/service_base.hpp mode change 100755 => 100644 boost/beast/core/detail/sha1.hpp mode change 100755 => 100644 boost/beast/core/detail/sha1.ipp mode change 100755 => 100644 boost/beast/core/detail/static_const.hpp mode change 100755 => 100644 boost/beast/core/detail/static_ostream.hpp mode change 100755 => 100644 boost/beast/core/detail/static_string.hpp mode change 100755 => 100644 boost/beast/core/detail/stream_base.hpp mode change 100755 => 100644 boost/beast/core/detail/stream_traits.hpp mode change 100755 => 100644 boost/beast/core/detail/string.hpp mode change 100755 => 100644 boost/beast/core/detail/temporary_buffer.hpp mode change 100755 => 100644 boost/beast/core/detail/tuple.hpp mode change 100755 => 100644 boost/beast/core/detail/type_traits.hpp mode change 100755 => 100644 boost/beast/core/detail/variant.hpp mode change 100755 => 100644 boost/beast/core/detail/varint.hpp mode change 100755 => 100644 boost/beast/core/detect_ssl.hpp mode change 100755 => 100644 boost/beast/core/error.hpp mode change 100755 => 100644 boost/beast/core/file.hpp mode change 100755 => 100644 boost/beast/core/file_base.hpp mode change 100755 => 100644 boost/beast/core/file_posix.hpp mode change 100755 => 100644 boost/beast/core/file_stdio.hpp mode change 100755 => 100644 boost/beast/core/file_win32.hpp mode change 100755 => 100644 boost/beast/core/flat_buffer.hpp mode change 100755 => 100644 boost/beast/core/flat_static_buffer.hpp mode change 100755 => 100644 boost/beast/core/flat_stream.hpp mode change 100755 => 100644 boost/beast/core/impl/async_base.hpp mode change 100755 => 100644 boost/beast/core/impl/basic_stream.hpp mode change 100755 => 100644 boost/beast/core/impl/buffered_read_stream.hpp mode change 100755 => 100644 boost/beast/core/impl/buffers_adaptor.hpp mode change 100755 => 100644 boost/beast/core/impl/buffers_cat.hpp mode change 100755 => 100644 boost/beast/core/impl/buffers_prefix.hpp mode change 100755 => 100644 boost/beast/core/impl/buffers_suffix.hpp mode change 100755 => 100644 boost/beast/core/impl/error.hpp mode change 100755 => 100644 boost/beast/core/impl/error.ipp mode change 100755 => 100644 boost/beast/core/impl/file_posix.ipp mode change 100755 => 100644 boost/beast/core/impl/file_stdio.ipp mode change 100755 => 100644 boost/beast/core/impl/file_win32.ipp mode change 100755 => 100644 boost/beast/core/impl/flat_buffer.hpp mode change 100755 => 100644 boost/beast/core/impl/flat_static_buffer.hpp mode change 100755 => 100644 boost/beast/core/impl/flat_static_buffer.ipp mode change 100755 => 100644 boost/beast/core/impl/flat_stream.hpp mode change 100755 => 100644 boost/beast/core/impl/multi_buffer.hpp mode change 100755 => 100644 boost/beast/core/impl/read_size.hpp mode change 100755 => 100644 boost/beast/core/impl/saved_handler.hpp mode change 100755 => 100644 boost/beast/core/impl/saved_handler.ipp mode change 100755 => 100644 boost/beast/core/impl/static_buffer.hpp mode change 100755 => 100644 boost/beast/core/impl/static_buffer.ipp mode change 100755 => 100644 boost/beast/core/impl/static_string.hpp mode change 100755 => 100644 boost/beast/core/impl/string.ipp mode change 100755 => 100644 boost/beast/core/impl/string_param.hpp mode change 100755 => 100644 boost/beast/core/make_printable.hpp mode change 100755 => 100644 boost/beast/core/multi_buffer.hpp mode change 100755 => 100644 boost/beast/core/ostream.hpp mode change 100755 => 100644 boost/beast/core/rate_policy.hpp mode change 100755 => 100644 boost/beast/core/read_size.hpp mode change 100755 => 100644 boost/beast/core/role.hpp mode change 100755 => 100644 boost/beast/core/saved_handler.hpp mode change 100755 => 100644 boost/beast/core/span.hpp mode change 100755 => 100644 boost/beast/core/static_buffer.hpp mode change 100755 => 100644 boost/beast/core/static_string.hpp mode change 100755 => 100644 boost/beast/core/stream_traits.hpp mode change 100755 => 100644 boost/beast/core/string.hpp mode change 100755 => 100644 boost/beast/core/string_param.hpp mode change 100755 => 100644 boost/beast/core/string_type.hpp mode change 100755 => 100644 boost/beast/core/tcp_stream.hpp mode change 100755 => 100644 boost/beast/http.hpp mode change 100755 => 100644 boost/beast/http/basic_dynamic_body.hpp mode change 100755 => 100644 boost/beast/http/basic_file_body.hpp mode change 100755 => 100644 boost/beast/http/basic_parser.hpp mode change 100755 => 100644 boost/beast/http/buffer_body.hpp mode change 100755 => 100644 boost/beast/http/chunk_encode.hpp mode change 100755 => 100644 boost/beast/http/detail/basic_parsed_list.hpp mode change 100755 => 100644 boost/beast/http/detail/basic_parser.hpp mode change 100755 => 100644 boost/beast/http/detail/basic_parser.ipp mode change 100755 => 100644 boost/beast/http/detail/chunk_encode.hpp mode change 100755 => 100644 boost/beast/http/detail/rfc7230.hpp mode change 100755 => 100644 boost/beast/http/detail/rfc7230.ipp mode change 100755 => 100644 boost/beast/http/detail/type_traits.hpp mode change 100755 => 100644 boost/beast/http/dynamic_body.hpp mode change 100755 => 100644 boost/beast/http/empty_body.hpp mode change 100755 => 100644 boost/beast/http/error.hpp mode change 100755 => 100644 boost/beast/http/field.hpp mode change 100755 => 100644 boost/beast/http/fields.hpp mode change 100755 => 100644 boost/beast/http/file_body.hpp mode change 100755 => 100644 boost/beast/http/impl/basic_parser.hpp mode change 100755 => 100644 boost/beast/http/impl/basic_parser.ipp mode change 100755 => 100644 boost/beast/http/impl/chunk_encode.hpp mode change 100755 => 100644 boost/beast/http/impl/error.hpp mode change 100755 => 100644 boost/beast/http/impl/error.ipp mode change 100755 => 100644 boost/beast/http/impl/field.ipp mode change 100755 => 100644 boost/beast/http/impl/fields.hpp mode change 100755 => 100644 boost/beast/http/impl/fields.ipp mode change 100755 => 100644 boost/beast/http/impl/file_body_win32.hpp mode change 100755 => 100644 boost/beast/http/impl/message.hpp mode change 100755 => 100644 boost/beast/http/impl/parser.hpp mode change 100755 => 100644 boost/beast/http/impl/read.hpp mode change 100755 => 100644 boost/beast/http/impl/rfc7230.hpp mode change 100755 => 100644 boost/beast/http/impl/rfc7230.ipp mode change 100755 => 100644 boost/beast/http/impl/serializer.hpp mode change 100755 => 100644 boost/beast/http/impl/status.ipp mode change 100755 => 100644 boost/beast/http/impl/verb.ipp mode change 100755 => 100644 boost/beast/http/impl/write.hpp mode change 100755 => 100644 boost/beast/http/message.hpp mode change 100755 => 100644 boost/beast/http/parser.hpp mode change 100755 => 100644 boost/beast/http/read.hpp mode change 100755 => 100644 boost/beast/http/rfc7230.hpp mode change 100755 => 100644 boost/beast/http/serializer.hpp mode change 100755 => 100644 boost/beast/http/span_body.hpp mode change 100755 => 100644 boost/beast/http/status.hpp mode change 100755 => 100644 boost/beast/http/string_body.hpp mode change 100755 => 100644 boost/beast/http/type_traits.hpp mode change 100755 => 100644 boost/beast/http/vector_body.hpp mode change 100755 => 100644 boost/beast/http/verb.hpp mode change 100755 => 100644 boost/beast/http/write.hpp mode change 100755 => 100644 boost/beast/src.hpp mode change 100755 => 100644 boost/beast/ssl.hpp mode change 100755 => 100644 boost/beast/ssl/ssl_stream.hpp mode change 100755 => 100644 boost/beast/version.hpp mode change 100755 => 100644 boost/beast/websocket.hpp mode change 100755 => 100644 boost/beast/websocket/detail/decorator.hpp mode change 100755 => 100644 boost/beast/websocket/detail/frame.hpp mode change 100755 => 100644 boost/beast/websocket/detail/hybi13.hpp mode change 100755 => 100644 boost/beast/websocket/detail/hybi13.ipp mode change 100755 => 100644 boost/beast/websocket/detail/impl_base.hpp mode change 100755 => 100644 boost/beast/websocket/detail/mask.hpp mode change 100755 => 100644 boost/beast/websocket/detail/mask.ipp mode change 100755 => 100644 boost/beast/websocket/detail/pmd_extension.hpp mode change 100755 => 100644 boost/beast/websocket/detail/pmd_extension.ipp mode change 100755 => 100644 boost/beast/websocket/detail/prng.hpp mode change 100755 => 100644 boost/beast/websocket/detail/prng.ipp mode change 100755 => 100644 boost/beast/websocket/detail/service.hpp mode change 100755 => 100644 boost/beast/websocket/detail/service.ipp mode change 100755 => 100644 boost/beast/websocket/detail/soft_mutex.hpp mode change 100755 => 100644 boost/beast/websocket/detail/type_traits.hpp mode change 100755 => 100644 boost/beast/websocket/detail/utf8_checker.hpp mode change 100755 => 100644 boost/beast/websocket/detail/utf8_checker.ipp mode change 100755 => 100644 boost/beast/websocket/error.hpp mode change 100755 => 100644 boost/beast/websocket/impl/accept.hpp mode change 100755 => 100644 boost/beast/websocket/impl/close.hpp mode change 100755 => 100644 boost/beast/websocket/impl/error.hpp mode change 100755 => 100644 boost/beast/websocket/impl/error.ipp mode change 100755 => 100644 boost/beast/websocket/impl/handshake.hpp mode change 100755 => 100644 boost/beast/websocket/impl/ping.hpp mode change 100755 => 100644 boost/beast/websocket/impl/read.hpp mode change 100755 => 100644 boost/beast/websocket/impl/rfc6455.hpp mode change 100755 => 100644 boost/beast/websocket/impl/ssl.hpp mode change 100755 => 100644 boost/beast/websocket/impl/stream.hpp mode change 100755 => 100644 boost/beast/websocket/impl/stream_impl.hpp mode change 100755 => 100644 boost/beast/websocket/impl/teardown.hpp mode change 100755 => 100644 boost/beast/websocket/impl/write.hpp mode change 100755 => 100644 boost/beast/websocket/option.hpp mode change 100755 => 100644 boost/beast/websocket/rfc6455.hpp mode change 100755 => 100644 boost/beast/websocket/ssl.hpp mode change 100755 => 100644 boost/beast/websocket/stream.hpp mode change 100755 => 100644 boost/beast/websocket/stream_base.hpp mode change 100755 => 100644 boost/beast/websocket/stream_fwd.hpp mode change 100755 => 100644 boost/beast/websocket/teardown.hpp mode change 100755 => 100644 boost/beast/zlib.hpp mode change 100755 => 100644 boost/beast/zlib/deflate_stream.hpp mode change 100755 => 100644 boost/beast/zlib/detail/bitstream.hpp mode change 100755 => 100644 boost/beast/zlib/detail/deflate_stream.hpp mode change 100755 => 100644 boost/beast/zlib/detail/deflate_stream.ipp mode change 100755 => 100644 boost/beast/zlib/detail/inflate_stream.hpp mode change 100755 => 100644 boost/beast/zlib/detail/inflate_stream.ipp mode change 100755 => 100644 boost/beast/zlib/detail/ranges.hpp mode change 100755 => 100644 boost/beast/zlib/detail/window.hpp mode change 100755 => 100644 boost/beast/zlib/error.hpp mode change 100755 => 100644 boost/beast/zlib/impl/error.hpp mode change 100755 => 100644 boost/beast/zlib/impl/error.ipp mode change 100755 => 100644 boost/beast/zlib/inflate_stream.hpp mode change 100755 => 100644 boost/beast/zlib/zlib.hpp mode change 100755 => 100644 boost/compute.hpp mode change 100755 => 100644 boost/compute/algorithm.hpp mode change 100755 => 100644 boost/compute/algorithm/accumulate.hpp mode change 100755 => 100644 boost/compute/algorithm/adjacent_difference.hpp mode change 100755 => 100644 boost/compute/algorithm/adjacent_find.hpp mode change 100755 => 100644 boost/compute/algorithm/all_of.hpp mode change 100755 => 100644 boost/compute/algorithm/any_of.hpp mode change 100755 => 100644 boost/compute/algorithm/binary_search.hpp mode change 100755 => 100644 boost/compute/algorithm/copy.hpp mode change 100755 => 100644 boost/compute/algorithm/copy_if.hpp mode change 100755 => 100644 boost/compute/algorithm/copy_n.hpp mode change 100755 => 100644 boost/compute/algorithm/count.hpp mode change 100755 => 100644 boost/compute/algorithm/count_if.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/balanced_path.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/binary_find.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/compact.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/copy_on_device.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/copy_to_device.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/copy_to_host.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/count_if_with_ballot.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/count_if_with_reduce.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/count_if_with_threads.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/find_extrema.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/find_extrema_on_cpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/find_extrema_with_atomics.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/find_extrema_with_reduce.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/find_if_with_atomics.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/inplace_reduce.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/insertion_sort.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/merge_path.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/merge_sort_on_cpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/merge_sort_on_gpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/merge_with_merge_path.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/radix_sort.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/random_fill.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/reduce_by_key.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/reduce_on_cpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/reduce_on_gpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/scan.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/scan_on_cpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/scan_on_gpu.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/search_all.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_accumulate.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_count_if.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_find_extrema.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_merge.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_reduce.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_reduce_by_key.hpp mode change 100755 => 100644 boost/compute/algorithm/detail/serial_scan.hpp mode change 100755 => 100644 boost/compute/algorithm/equal.hpp mode change 100755 => 100644 boost/compute/algorithm/equal_range.hpp mode change 100755 => 100644 boost/compute/algorithm/exclusive_scan.hpp mode change 100755 => 100644 boost/compute/algorithm/fill.hpp mode change 100755 => 100644 boost/compute/algorithm/fill_n.hpp mode change 100755 => 100644 boost/compute/algorithm/find.hpp mode change 100755 => 100644 boost/compute/algorithm/find_end.hpp mode change 100755 => 100644 boost/compute/algorithm/find_if.hpp mode change 100755 => 100644 boost/compute/algorithm/find_if_not.hpp mode change 100755 => 100644 boost/compute/algorithm/for_each.hpp mode change 100755 => 100644 boost/compute/algorithm/for_each_n.hpp mode change 100755 => 100644 boost/compute/algorithm/gather.hpp mode change 100755 => 100644 boost/compute/algorithm/generate.hpp mode change 100755 => 100644 boost/compute/algorithm/generate_n.hpp mode change 100755 => 100644 boost/compute/algorithm/includes.hpp mode change 100755 => 100644 boost/compute/algorithm/inclusive_scan.hpp mode change 100755 => 100644 boost/compute/algorithm/inner_product.hpp mode change 100755 => 100644 boost/compute/algorithm/inplace_merge.hpp mode change 100755 => 100644 boost/compute/algorithm/iota.hpp mode change 100755 => 100644 boost/compute/algorithm/is_partitioned.hpp mode change 100755 => 100644 boost/compute/algorithm/is_permutation.hpp mode change 100755 => 100644 boost/compute/algorithm/is_sorted.hpp mode change 100755 => 100644 boost/compute/algorithm/lexicographical_compare.hpp mode change 100755 => 100644 boost/compute/algorithm/lower_bound.hpp mode change 100755 => 100644 boost/compute/algorithm/max_element.hpp mode change 100755 => 100644 boost/compute/algorithm/merge.hpp mode change 100755 => 100644 boost/compute/algorithm/min_element.hpp mode change 100755 => 100644 boost/compute/algorithm/minmax_element.hpp mode change 100755 => 100644 boost/compute/algorithm/mismatch.hpp mode change 100755 => 100644 boost/compute/algorithm/next_permutation.hpp mode change 100755 => 100644 boost/compute/algorithm/none_of.hpp mode change 100755 => 100644 boost/compute/algorithm/nth_element.hpp mode change 100755 => 100644 boost/compute/algorithm/partial_sum.hpp mode change 100755 => 100644 boost/compute/algorithm/partition.hpp mode change 100755 => 100644 boost/compute/algorithm/partition_copy.hpp mode change 100755 => 100644 boost/compute/algorithm/partition_point.hpp mode change 100755 => 100644 boost/compute/algorithm/prev_permutation.hpp mode change 100755 => 100644 boost/compute/algorithm/random_shuffle.hpp mode change 100755 => 100644 boost/compute/algorithm/reduce.hpp mode change 100755 => 100644 boost/compute/algorithm/reduce_by_key.hpp mode change 100755 => 100644 boost/compute/algorithm/remove.hpp mode change 100755 => 100644 boost/compute/algorithm/remove_if.hpp mode change 100755 => 100644 boost/compute/algorithm/replace.hpp mode change 100755 => 100644 boost/compute/algorithm/replace_copy.hpp mode change 100755 => 100644 boost/compute/algorithm/reverse.hpp mode change 100755 => 100644 boost/compute/algorithm/reverse_copy.hpp mode change 100755 => 100644 boost/compute/algorithm/rotate.hpp mode change 100755 => 100644 boost/compute/algorithm/rotate_copy.hpp mode change 100755 => 100644 boost/compute/algorithm/scatter.hpp mode change 100755 => 100644 boost/compute/algorithm/scatter_if.hpp mode change 100755 => 100644 boost/compute/algorithm/search.hpp mode change 100755 => 100644 boost/compute/algorithm/search_n.hpp mode change 100755 => 100644 boost/compute/algorithm/set_difference.hpp mode change 100755 => 100644 boost/compute/algorithm/set_intersection.hpp mode change 100755 => 100644 boost/compute/algorithm/set_symmetric_difference.hpp mode change 100755 => 100644 boost/compute/algorithm/set_union.hpp mode change 100755 => 100644 boost/compute/algorithm/sort.hpp mode change 100755 => 100644 boost/compute/algorithm/sort_by_key.hpp mode change 100755 => 100644 boost/compute/algorithm/stable_partition.hpp mode change 100755 => 100644 boost/compute/algorithm/stable_sort.hpp mode change 100755 => 100644 boost/compute/algorithm/stable_sort_by_key.hpp mode change 100755 => 100644 boost/compute/algorithm/swap_ranges.hpp mode change 100755 => 100644 boost/compute/algorithm/transform.hpp mode change 100755 => 100644 boost/compute/algorithm/transform_if.hpp mode change 100755 => 100644 boost/compute/algorithm/transform_reduce.hpp mode change 100755 => 100644 boost/compute/algorithm/unique.hpp mode change 100755 => 100644 boost/compute/algorithm/unique_copy.hpp mode change 100755 => 100644 boost/compute/algorithm/upper_bound.hpp mode change 100755 => 100644 boost/compute/allocator.hpp mode change 100755 => 100644 boost/compute/allocator/buffer_allocator.hpp mode change 100755 => 100644 boost/compute/allocator/pinned_allocator.hpp mode change 100755 => 100644 boost/compute/async.hpp mode change 100755 => 100644 boost/compute/async/future.hpp mode change 100755 => 100644 boost/compute/async/wait.hpp mode change 100755 => 100644 boost/compute/async/wait_guard.hpp mode change 100755 => 100644 boost/compute/buffer.hpp mode change 100755 => 100644 boost/compute/cl.hpp mode change 100755 => 100644 boost/compute/cl_ext.hpp mode change 100755 => 100644 boost/compute/closure.hpp mode change 100755 => 100644 boost/compute/command_queue.hpp mode change 100755 => 100644 boost/compute/config.hpp mode change 100755 => 100644 boost/compute/container.hpp mode change 100755 => 100644 boost/compute/container/array.hpp mode change 100755 => 100644 boost/compute/container/basic_string.hpp mode change 100755 => 100644 boost/compute/container/detail/scalar.hpp mode change 100755 => 100644 boost/compute/container/dynamic_bitset.hpp mode change 100755 => 100644 boost/compute/container/flat_map.hpp mode change 100755 => 100644 boost/compute/container/flat_set.hpp mode change 100755 => 100644 boost/compute/container/mapped_view.hpp mode change 100755 => 100644 boost/compute/container/stack.hpp mode change 100755 => 100644 boost/compute/container/string.hpp mode change 100755 => 100644 boost/compute/container/valarray.hpp mode change 100755 => 100644 boost/compute/container/vector.hpp mode change 100755 => 100644 boost/compute/context.hpp mode change 100755 => 100644 boost/compute/core.hpp mode change 100755 => 100644 boost/compute/detail/assert_cl_success.hpp mode change 100755 => 100644 boost/compute/detail/buffer_value.hpp mode change 100755 => 100644 boost/compute/detail/cl_versions.hpp mode change 100755 => 100644 boost/compute/detail/device_ptr.hpp mode change 100755 => 100644 boost/compute/detail/diagnostic.hpp mode change 100755 => 100644 boost/compute/detail/duration.hpp mode change 100755 => 100644 boost/compute/detail/get_object_info.hpp mode change 100755 => 100644 boost/compute/detail/getenv.hpp mode change 100755 => 100644 boost/compute/detail/global_static.hpp mode change 100755 => 100644 boost/compute/detail/is_buffer_iterator.hpp mode change 100755 => 100644 boost/compute/detail/is_contiguous_iterator.hpp mode change 100755 => 100644 boost/compute/detail/iterator_plus_distance.hpp mode change 100755 => 100644 boost/compute/detail/iterator_range_size.hpp mode change 100755 => 100644 boost/compute/detail/iterator_traits.hpp mode change 100755 => 100644 boost/compute/detail/literal.hpp mode change 100755 => 100644 boost/compute/detail/lru_cache.hpp mode change 100755 => 100644 boost/compute/detail/meta_kernel.hpp mode change 100755 => 100644 boost/compute/detail/mpl_vector_to_tuple.hpp mode change 100755 => 100644 boost/compute/detail/nvidia_compute_capability.hpp mode change 100755 => 100644 boost/compute/detail/parameter_cache.hpp mode change 100755 => 100644 boost/compute/detail/path.hpp mode change 100755 => 100644 boost/compute/detail/print_range.hpp mode change 100755 => 100644 boost/compute/detail/read_write_single_value.hpp mode change 100755 => 100644 boost/compute/detail/sha1.hpp mode change 100755 => 100644 boost/compute/detail/variadic_macros.hpp mode change 100755 => 100644 boost/compute/detail/vendor.hpp mode change 100755 => 100644 boost/compute/detail/work_size.hpp mode change 100755 => 100644 boost/compute/device.hpp mode change 100755 => 100644 boost/compute/event.hpp mode change 100755 => 100644 boost/compute/exception.hpp mode change 100755 => 100644 boost/compute/exception/context_error.hpp mode change 100755 => 100644 boost/compute/exception/no_device_found.hpp mode change 100755 => 100644 boost/compute/exception/opencl_error.hpp mode change 100755 => 100644 boost/compute/exception/program_build_failure.hpp mode change 100755 => 100644 boost/compute/exception/unsupported_extension_error.hpp mode change 100755 => 100644 boost/compute/experimental/clamp_range.hpp mode change 100755 => 100644 boost/compute/experimental/malloc.hpp mode change 100755 => 100644 boost/compute/experimental/sort_by_transform.hpp mode change 100755 => 100644 boost/compute/experimental/tabulate.hpp mode change 100755 => 100644 boost/compute/function.hpp mode change 100755 => 100644 boost/compute/functional.hpp mode change 100755 => 100644 boost/compute/functional/as.hpp mode change 100755 => 100644 boost/compute/functional/atomic.hpp mode change 100755 => 100644 boost/compute/functional/bind.hpp mode change 100755 => 100644 boost/compute/functional/common.hpp mode change 100755 => 100644 boost/compute/functional/convert.hpp mode change 100755 => 100644 boost/compute/functional/detail/macros.hpp mode change 100755 => 100644 boost/compute/functional/detail/nvidia_ballot.hpp mode change 100755 => 100644 boost/compute/functional/detail/nvidia_popcount.hpp mode change 100755 => 100644 boost/compute/functional/detail/unpack.hpp mode change 100755 => 100644 boost/compute/functional/field.hpp mode change 100755 => 100644 boost/compute/functional/geometry.hpp mode change 100755 => 100644 boost/compute/functional/get.hpp mode change 100755 => 100644 boost/compute/functional/hash.hpp mode change 100755 => 100644 boost/compute/functional/identity.hpp mode change 100755 => 100644 boost/compute/functional/integer.hpp mode change 100755 => 100644 boost/compute/functional/logical.hpp mode change 100755 => 100644 boost/compute/functional/math.hpp mode change 100755 => 100644 boost/compute/functional/operator.hpp mode change 100755 => 100644 boost/compute/functional/popcount.hpp mode change 100755 => 100644 boost/compute/functional/relational.hpp mode change 100755 => 100644 boost/compute/image.hpp mode change 100755 => 100644 boost/compute/image/image1d.hpp mode change 100755 => 100644 boost/compute/image/image2d.hpp mode change 100755 => 100644 boost/compute/image/image3d.hpp mode change 100755 => 100644 boost/compute/image/image_format.hpp mode change 100755 => 100644 boost/compute/image/image_object.hpp mode change 100755 => 100644 boost/compute/image/image_sampler.hpp mode change 100755 => 100644 boost/compute/image2d.hpp mode change 100755 => 100644 boost/compute/image3d.hpp mode change 100755 => 100644 boost/compute/image_format.hpp mode change 100755 => 100644 boost/compute/image_sampler.hpp mode change 100755 => 100644 boost/compute/interop/eigen.hpp mode change 100755 => 100644 boost/compute/interop/eigen/core.hpp mode change 100755 => 100644 boost/compute/interop/opencv.hpp mode change 100755 => 100644 boost/compute/interop/opencv/core.hpp mode change 100755 => 100644 boost/compute/interop/opencv/highgui.hpp mode change 100755 => 100644 boost/compute/interop/opencv/ocl.hpp mode change 100755 => 100644 boost/compute/interop/opengl.hpp mode change 100755 => 100644 boost/compute/interop/opengl/acquire.hpp mode change 100755 => 100644 boost/compute/interop/opengl/cl_gl.hpp mode change 100755 => 100644 boost/compute/interop/opengl/cl_gl_ext.hpp mode change 100755 => 100644 boost/compute/interop/opengl/context.hpp mode change 100755 => 100644 boost/compute/interop/opengl/gl.hpp mode change 100755 => 100644 boost/compute/interop/opengl/opengl_buffer.hpp mode change 100755 => 100644 boost/compute/interop/opengl/opengl_renderbuffer.hpp mode change 100755 => 100644 boost/compute/interop/opengl/opengl_texture.hpp mode change 100755 => 100644 boost/compute/interop/qt.hpp mode change 100755 => 100644 boost/compute/interop/qt/qimage.hpp mode change 100755 => 100644 boost/compute/interop/qt/qpoint.hpp mode change 100755 => 100644 boost/compute/interop/qt/qpointf.hpp mode change 100755 => 100644 boost/compute/interop/qt/qtcore.hpp mode change 100755 => 100644 boost/compute/interop/qt/qtgui.hpp mode change 100755 => 100644 boost/compute/interop/qt/qvector.hpp mode change 100755 => 100644 boost/compute/interop/vtk.hpp mode change 100755 => 100644 boost/compute/interop/vtk/bounds.hpp mode change 100755 => 100644 boost/compute/interop/vtk/data_array.hpp mode change 100755 => 100644 boost/compute/interop/vtk/matrix4x4.hpp mode change 100755 => 100644 boost/compute/interop/vtk/points.hpp mode change 100755 => 100644 boost/compute/iterator.hpp mode change 100755 => 100644 boost/compute/iterator/buffer_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/constant_buffer_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/constant_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/counting_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/detail/get_base_iterator_buffer.hpp mode change 100755 => 100644 boost/compute/iterator/detail/swizzle_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/discard_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/function_input_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/permutation_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/strided_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/transform_iterator.hpp mode change 100755 => 100644 boost/compute/iterator/zip_iterator.hpp mode change 100755 => 100644 boost/compute/kernel.hpp mode change 100755 => 100644 boost/compute/lambda.hpp mode change 100755 => 100644 boost/compute/lambda/context.hpp mode change 100755 => 100644 boost/compute/lambda/functional.hpp mode change 100755 => 100644 boost/compute/lambda/get.hpp mode change 100755 => 100644 boost/compute/lambda/make_pair.hpp mode change 100755 => 100644 boost/compute/lambda/make_tuple.hpp mode change 100755 => 100644 boost/compute/lambda/placeholder.hpp mode change 100755 => 100644 boost/compute/lambda/placeholders.hpp mode change 100755 => 100644 boost/compute/lambda/result_of.hpp mode change 100755 => 100644 boost/compute/memory.hpp mode change 100755 => 100644 boost/compute/memory/local_buffer.hpp mode change 100755 => 100644 boost/compute/memory/svm_ptr.hpp mode change 100755 => 100644 boost/compute/memory_object.hpp mode change 100755 => 100644 boost/compute/pipe.hpp mode change 100755 => 100644 boost/compute/platform.hpp mode change 100755 => 100644 boost/compute/program.hpp mode change 100755 => 100644 boost/compute/random.hpp mode change 100755 => 100644 boost/compute/random/bernoulli_distribution.hpp mode change 100755 => 100644 boost/compute/random/default_random_engine.hpp mode change 100755 => 100644 boost/compute/random/discrete_distribution.hpp mode change 100755 => 100644 boost/compute/random/linear_congruential_engine.hpp mode change 100755 => 100644 boost/compute/random/mersenne_twister_engine.hpp mode change 100755 => 100644 boost/compute/random/normal_distribution.hpp mode change 100755 => 100644 boost/compute/random/threefry_engine.hpp mode change 100755 => 100644 boost/compute/random/uniform_int_distribution.hpp mode change 100755 => 100644 boost/compute/random/uniform_real_distribution.hpp mode change 100755 => 100644 boost/compute/source.hpp mode change 100755 => 100644 boost/compute/svm.hpp mode change 100755 => 100644 boost/compute/system.hpp mode change 100755 => 100644 boost/compute/type_traits.hpp mode change 100755 => 100644 boost/compute/type_traits/common_type.hpp mode change 100755 => 100644 boost/compute/type_traits/detail/capture_traits.hpp mode change 100755 => 100644 boost/compute/type_traits/is_device_iterator.hpp mode change 100755 => 100644 boost/compute/type_traits/is_fundamental.hpp mode change 100755 => 100644 boost/compute/type_traits/is_vector_type.hpp mode change 100755 => 100644 boost/compute/type_traits/make_vector_type.hpp mode change 100755 => 100644 boost/compute/type_traits/result_of.hpp mode change 100755 => 100644 boost/compute/type_traits/scalar_type.hpp mode change 100755 => 100644 boost/compute/type_traits/type_definition.hpp mode change 100755 => 100644 boost/compute/type_traits/type_name.hpp mode change 100755 => 100644 boost/compute/type_traits/vector_size.hpp mode change 100755 => 100644 boost/compute/types.hpp mode change 100755 => 100644 boost/compute/types/builtin.hpp mode change 100755 => 100644 boost/compute/types/complex.hpp mode change 100755 => 100644 boost/compute/types/fundamental.hpp mode change 100755 => 100644 boost/compute/types/pair.hpp mode change 100755 => 100644 boost/compute/types/size_t.hpp mode change 100755 => 100644 boost/compute/types/struct.hpp mode change 100755 => 100644 boost/compute/types/tuple.hpp mode change 100755 => 100644 boost/compute/user_event.hpp mode change 100755 => 100644 boost/compute/utility.hpp mode change 100755 => 100644 boost/compute/utility/dim.hpp mode change 100755 => 100644 boost/compute/utility/extents.hpp mode change 100755 => 100644 boost/compute/utility/invoke.hpp mode change 100755 => 100644 boost/compute/utility/program_cache.hpp mode change 100755 => 100644 boost/compute/utility/source.hpp mode change 100755 => 100644 boost/compute/utility/wait_list.hpp mode change 100755 => 100644 boost/compute/version.hpp mode change 100755 => 100644 boost/compute/wait_list.hpp mode change 100755 => 100644 boost/hana.hpp mode change 100755 => 100644 boost/hana/accessors.hpp mode change 100755 => 100644 boost/hana/adapt_adt.hpp mode change 100755 => 100644 boost/hana/adapt_struct.hpp mode change 100755 => 100644 boost/hana/adjust.hpp mode change 100755 => 100644 boost/hana/adjust_if.hpp mode change 100755 => 100644 boost/hana/all.hpp mode change 100755 => 100644 boost/hana/all_of.hpp mode change 100755 => 100644 boost/hana/and.hpp mode change 100755 => 100644 boost/hana/any.hpp mode change 100755 => 100644 boost/hana/any_of.hpp mode change 100755 => 100644 boost/hana/ap.hpp mode change 100755 => 100644 boost/hana/append.hpp mode change 100755 => 100644 boost/hana/assert.hpp mode change 100755 => 100644 boost/hana/at.hpp mode change 100755 => 100644 boost/hana/at_key.hpp mode change 100755 => 100644 boost/hana/back.hpp mode change 100755 => 100644 boost/hana/basic_tuple.hpp mode change 100755 => 100644 boost/hana/bool.hpp mode change 100755 => 100644 boost/hana/cartesian_product.hpp mode change 100755 => 100644 boost/hana/chain.hpp mode change 100755 => 100644 boost/hana/comparing.hpp mode change 100755 => 100644 boost/hana/concat.hpp mode change 100755 => 100644 boost/hana/concept.hpp mode change 100755 => 100644 boost/hana/concept/applicative.hpp mode change 100755 => 100644 boost/hana/concept/comonad.hpp mode change 100755 => 100644 boost/hana/concept/comparable.hpp mode change 100755 => 100644 boost/hana/concept/constant.hpp mode change 100755 => 100644 boost/hana/concept/euclidean_ring.hpp mode change 100755 => 100644 boost/hana/concept/foldable.hpp mode change 100755 => 100644 boost/hana/concept/functor.hpp mode change 100755 => 100644 boost/hana/concept/group.hpp mode change 100755 => 100644 boost/hana/concept/hashable.hpp mode change 100755 => 100644 boost/hana/concept/integral_constant.hpp mode change 100755 => 100644 boost/hana/concept/iterable.hpp mode change 100755 => 100644 boost/hana/concept/logical.hpp mode change 100755 => 100644 boost/hana/concept/metafunction.hpp mode change 100755 => 100644 boost/hana/concept/monad.hpp mode change 100755 => 100644 boost/hana/concept/monad_plus.hpp mode change 100755 => 100644 boost/hana/concept/monoid.hpp mode change 100755 => 100644 boost/hana/concept/orderable.hpp mode change 100755 => 100644 boost/hana/concept/product.hpp mode change 100755 => 100644 boost/hana/concept/ring.hpp mode change 100755 => 100644 boost/hana/concept/searchable.hpp mode change 100755 => 100644 boost/hana/concept/sequence.hpp mode change 100755 => 100644 boost/hana/concept/struct.hpp mode change 100755 => 100644 boost/hana/config.hpp mode change 100755 => 100644 boost/hana/contains.hpp mode change 100755 => 100644 boost/hana/core.hpp mode change 100755 => 100644 boost/hana/core/common.hpp mode change 100755 => 100644 boost/hana/core/default.hpp mode change 100755 => 100644 boost/hana/core/dispatch.hpp mode change 100755 => 100644 boost/hana/core/is_a.hpp mode change 100755 => 100644 boost/hana/core/make.hpp mode change 100755 => 100644 boost/hana/core/tag_of.hpp mode change 100755 => 100644 boost/hana/core/to.hpp mode change 100755 => 100644 boost/hana/core/when.hpp mode change 100755 => 100644 boost/hana/count.hpp mode change 100755 => 100644 boost/hana/count_if.hpp mode change 100755 => 100644 boost/hana/cycle.hpp mode change 100755 => 100644 boost/hana/define_struct.hpp mode change 100755 => 100644 boost/hana/detail/algorithm.hpp mode change 100755 => 100644 boost/hana/detail/any_of.hpp mode change 100755 => 100644 boost/hana/detail/array.hpp mode change 100755 => 100644 boost/hana/detail/canonical_constant.hpp mode change 100755 => 100644 boost/hana/detail/concepts.hpp mode change 100755 => 100644 boost/hana/detail/create.hpp mode change 100755 => 100644 boost/hana/detail/decay.hpp mode change 100755 => 100644 boost/hana/detail/dispatch_if.hpp mode change 100755 => 100644 boost/hana/detail/ebo.hpp mode change 100755 => 100644 boost/hana/detail/fast_and.hpp mode change 100755 => 100644 boost/hana/detail/first_unsatisfied_index.hpp mode change 100755 => 100644 boost/hana/detail/has_common_embedding.hpp mode change 100755 => 100644 boost/hana/detail/has_duplicates.hpp mode change 100755 => 100644 boost/hana/detail/hash_table.hpp mode change 100755 => 100644 boost/hana/detail/index_if.hpp mode change 100755 => 100644 boost/hana/detail/integral_constant.hpp mode change 100755 => 100644 boost/hana/detail/intrinsics.hpp mode change 100755 => 100644 boost/hana/detail/nested_by.hpp mode change 100755 => 100644 boost/hana/detail/nested_by_fwd.hpp mode change 100755 => 100644 boost/hana/detail/nested_than.hpp mode change 100755 => 100644 boost/hana/detail/nested_than_fwd.hpp mode change 100755 => 100644 boost/hana/detail/nested_to.hpp mode change 100755 => 100644 boost/hana/detail/nested_to_fwd.hpp mode change 100755 => 100644 boost/hana/detail/operators/adl.hpp mode change 100755 => 100644 boost/hana/detail/operators/arithmetic.hpp mode change 100755 => 100644 boost/hana/detail/operators/comparable.hpp mode change 100755 => 100644 boost/hana/detail/operators/iterable.hpp mode change 100755 => 100644 boost/hana/detail/operators/logical.hpp mode change 100755 => 100644 boost/hana/detail/operators/monad.hpp mode change 100755 => 100644 boost/hana/detail/operators/orderable.hpp mode change 100755 => 100644 boost/hana/detail/operators/searchable.hpp mode change 100755 => 100644 boost/hana/detail/preprocessor.hpp mode change 100755 => 100644 boost/hana/detail/std_common_type.hpp mode change 100755 => 100644 boost/hana/detail/struct_macros.hpp mode change 100755 => 100644 boost/hana/detail/struct_macros.hpp.erb mode change 100755 => 100644 boost/hana/detail/type_at.hpp mode change 100755 => 100644 boost/hana/detail/type_foldl1.hpp mode change 100755 => 100644 boost/hana/detail/type_foldr1.hpp mode change 100755 => 100644 boost/hana/detail/unpack_flatten.hpp mode change 100755 => 100644 boost/hana/detail/variadic/at.hpp mode change 100755 => 100644 boost/hana/detail/variadic/drop_into.hpp mode change 100755 => 100644 boost/hana/detail/variadic/foldl1.hpp mode change 100755 => 100644 boost/hana/detail/variadic/foldr1.hpp mode change 100755 => 100644 boost/hana/detail/variadic/reverse_apply.hpp mode change 100755 => 100644 boost/hana/detail/variadic/reverse_apply/flat.hpp mode change 100755 => 100644 boost/hana/detail/variadic/reverse_apply/unrolled.hpp mode change 100755 => 100644 boost/hana/detail/variadic/split_at.hpp mode change 100755 => 100644 boost/hana/detail/variadic/take.hpp mode change 100755 => 100644 boost/hana/detail/void_t.hpp mode change 100755 => 100644 boost/hana/detail/wrong.hpp mode change 100755 => 100644 boost/hana/difference.hpp mode change 100755 => 100644 boost/hana/div.hpp mode change 100755 => 100644 boost/hana/drop_back.hpp mode change 100755 => 100644 boost/hana/drop_front.hpp mode change 100755 => 100644 boost/hana/drop_front_exactly.hpp mode change 100755 => 100644 boost/hana/drop_while.hpp mode change 100755 => 100644 boost/hana/duplicate.hpp mode change 100755 => 100644 boost/hana/empty.hpp mode change 100755 => 100644 boost/hana/equal.hpp mode change 100755 => 100644 boost/hana/erase_key.hpp mode change 100755 => 100644 boost/hana/eval.hpp mode change 100755 => 100644 boost/hana/eval_if.hpp mode change 100755 => 100644 boost/hana/experimental/printable.hpp mode change 100755 => 100644 boost/hana/experimental/type_name.hpp mode change 100755 => 100644 boost/hana/experimental/types.hpp mode change 100755 => 100644 boost/hana/experimental/view.hpp mode change 100755 => 100644 boost/hana/ext/boost.hpp mode change 100755 => 100644 boost/hana/ext/boost/fusion.hpp mode change 100755 => 100644 boost/hana/ext/boost/fusion/deque.hpp mode change 100755 => 100644 boost/hana/ext/boost/fusion/detail/common.hpp mode change 100755 => 100644 boost/hana/ext/boost/fusion/list.hpp mode change 100755 => 100644 boost/hana/ext/boost/fusion/tuple.hpp mode change 100755 => 100644 boost/hana/ext/boost/fusion/vector.hpp mode change 100755 => 100644 boost/hana/ext/boost/mpl.hpp mode change 100755 => 100644 boost/hana/ext/boost/mpl/integral_c.hpp mode change 100755 => 100644 boost/hana/ext/boost/mpl/list.hpp mode change 100755 => 100644 boost/hana/ext/boost/mpl/vector.hpp mode change 100755 => 100644 boost/hana/ext/boost/tuple.hpp mode change 100755 => 100644 boost/hana/ext/std.hpp mode change 100755 => 100644 boost/hana/ext/std/array.hpp mode change 100755 => 100644 boost/hana/ext/std/integer_sequence.hpp mode change 100755 => 100644 boost/hana/ext/std/integral_constant.hpp mode change 100755 => 100644 boost/hana/ext/std/pair.hpp mode change 100755 => 100644 boost/hana/ext/std/ratio.hpp mode change 100755 => 100644 boost/hana/ext/std/tuple.hpp mode change 100755 => 100644 boost/hana/ext/std/vector.hpp mode change 100755 => 100644 boost/hana/extend.hpp mode change 100755 => 100644 boost/hana/extract.hpp mode change 100755 => 100644 boost/hana/fill.hpp mode change 100755 => 100644 boost/hana/filter.hpp mode change 100755 => 100644 boost/hana/find.hpp mode change 100755 => 100644 boost/hana/find_if.hpp mode change 100755 => 100644 boost/hana/first.hpp mode change 100755 => 100644 boost/hana/flatten.hpp mode change 100755 => 100644 boost/hana/fold.hpp mode change 100755 => 100644 boost/hana/fold_left.hpp mode change 100755 => 100644 boost/hana/fold_right.hpp mode change 100755 => 100644 boost/hana/for_each.hpp mode change 100755 => 100644 boost/hana/front.hpp mode change 100755 => 100644 boost/hana/functional.hpp mode change 100755 => 100644 boost/hana/functional/always.hpp mode change 100755 => 100644 boost/hana/functional/apply.hpp mode change 100755 => 100644 boost/hana/functional/arg.hpp mode change 100755 => 100644 boost/hana/functional/capture.hpp mode change 100755 => 100644 boost/hana/functional/compose.hpp mode change 100755 => 100644 boost/hana/functional/curry.hpp mode change 100755 => 100644 boost/hana/functional/demux.hpp mode change 100755 => 100644 boost/hana/functional/fix.hpp mode change 100755 => 100644 boost/hana/functional/flip.hpp mode change 100755 => 100644 boost/hana/functional/id.hpp mode change 100755 => 100644 boost/hana/functional/infix.hpp mode change 100755 => 100644 boost/hana/functional/iterate.hpp mode change 100755 => 100644 boost/hana/functional/lockstep.hpp mode change 100755 => 100644 boost/hana/functional/on.hpp mode change 100755 => 100644 boost/hana/functional/overload.hpp mode change 100755 => 100644 boost/hana/functional/overload_linearly.hpp mode change 100755 => 100644 boost/hana/functional/partial.hpp mode change 100755 => 100644 boost/hana/functional/placeholder.hpp mode change 100755 => 100644 boost/hana/functional/reverse_partial.hpp mode change 100755 => 100644 boost/hana/fuse.hpp mode change 100755 => 100644 boost/hana/fwd/accessors.hpp mode change 100755 => 100644 boost/hana/fwd/adapt_adt.hpp mode change 100755 => 100644 boost/hana/fwd/adapt_struct.hpp mode change 100755 => 100644 boost/hana/fwd/adjust.hpp mode change 100755 => 100644 boost/hana/fwd/adjust_if.hpp mode change 100755 => 100644 boost/hana/fwd/all.hpp mode change 100755 => 100644 boost/hana/fwd/all_of.hpp mode change 100755 => 100644 boost/hana/fwd/and.hpp mode change 100755 => 100644 boost/hana/fwd/any.hpp mode change 100755 => 100644 boost/hana/fwd/any_of.hpp mode change 100755 => 100644 boost/hana/fwd/ap.hpp mode change 100755 => 100644 boost/hana/fwd/append.hpp mode change 100755 => 100644 boost/hana/fwd/at.hpp mode change 100755 => 100644 boost/hana/fwd/at_key.hpp mode change 100755 => 100644 boost/hana/fwd/back.hpp mode change 100755 => 100644 boost/hana/fwd/basic_tuple.hpp mode change 100755 => 100644 boost/hana/fwd/bool.hpp mode change 100755 => 100644 boost/hana/fwd/cartesian_product.hpp mode change 100755 => 100644 boost/hana/fwd/chain.hpp mode change 100755 => 100644 boost/hana/fwd/comparing.hpp mode change 100755 => 100644 boost/hana/fwd/concat.hpp mode change 100755 => 100644 boost/hana/fwd/concept/applicative.hpp mode change 100755 => 100644 boost/hana/fwd/concept/comonad.hpp mode change 100755 => 100644 boost/hana/fwd/concept/comparable.hpp mode change 100755 => 100644 boost/hana/fwd/concept/constant.hpp mode change 100755 => 100644 boost/hana/fwd/concept/euclidean_ring.hpp mode change 100755 => 100644 boost/hana/fwd/concept/foldable.hpp mode change 100755 => 100644 boost/hana/fwd/concept/functor.hpp mode change 100755 => 100644 boost/hana/fwd/concept/group.hpp mode change 100755 => 100644 boost/hana/fwd/concept/hashable.hpp mode change 100755 => 100644 boost/hana/fwd/concept/integral_constant.hpp mode change 100755 => 100644 boost/hana/fwd/concept/iterable.hpp mode change 100755 => 100644 boost/hana/fwd/concept/logical.hpp mode change 100755 => 100644 boost/hana/fwd/concept/metafunction.hpp mode change 100755 => 100644 boost/hana/fwd/concept/monad.hpp mode change 100755 => 100644 boost/hana/fwd/concept/monad_plus.hpp mode change 100755 => 100644 boost/hana/fwd/concept/monoid.hpp mode change 100755 => 100644 boost/hana/fwd/concept/orderable.hpp mode change 100755 => 100644 boost/hana/fwd/concept/product.hpp mode change 100755 => 100644 boost/hana/fwd/concept/ring.hpp mode change 100755 => 100644 boost/hana/fwd/concept/searchable.hpp mode change 100755 => 100644 boost/hana/fwd/concept/sequence.hpp mode change 100755 => 100644 boost/hana/fwd/concept/struct.hpp mode change 100755 => 100644 boost/hana/fwd/contains.hpp mode change 100755 => 100644 boost/hana/fwd/core.hpp mode change 100755 => 100644 boost/hana/fwd/core/common.hpp mode change 100755 => 100644 boost/hana/fwd/core/default.hpp mode change 100755 => 100644 boost/hana/fwd/core/is_a.hpp mode change 100755 => 100644 boost/hana/fwd/core/make.hpp mode change 100755 => 100644 boost/hana/fwd/core/tag_of.hpp mode change 100755 => 100644 boost/hana/fwd/core/to.hpp mode change 100755 => 100644 boost/hana/fwd/core/when.hpp mode change 100755 => 100644 boost/hana/fwd/count.hpp mode change 100755 => 100644 boost/hana/fwd/count_if.hpp mode change 100755 => 100644 boost/hana/fwd/cycle.hpp mode change 100755 => 100644 boost/hana/fwd/define_struct.hpp mode change 100755 => 100644 boost/hana/fwd/difference.hpp mode change 100755 => 100644 boost/hana/fwd/div.hpp mode change 100755 => 100644 boost/hana/fwd/drop_back.hpp mode change 100755 => 100644 boost/hana/fwd/drop_front.hpp mode change 100755 => 100644 boost/hana/fwd/drop_front_exactly.hpp mode change 100755 => 100644 boost/hana/fwd/drop_while.hpp mode change 100755 => 100644 boost/hana/fwd/duplicate.hpp mode change 100755 => 100644 boost/hana/fwd/empty.hpp mode change 100755 => 100644 boost/hana/fwd/equal.hpp mode change 100755 => 100644 boost/hana/fwd/erase_key.hpp mode change 100755 => 100644 boost/hana/fwd/eval.hpp mode change 100755 => 100644 boost/hana/fwd/eval_if.hpp mode change 100755 => 100644 boost/hana/fwd/extend.hpp mode change 100755 => 100644 boost/hana/fwd/extract.hpp mode change 100755 => 100644 boost/hana/fwd/fill.hpp mode change 100755 => 100644 boost/hana/fwd/filter.hpp mode change 100755 => 100644 boost/hana/fwd/find.hpp mode change 100755 => 100644 boost/hana/fwd/find_if.hpp mode change 100755 => 100644 boost/hana/fwd/first.hpp mode change 100755 => 100644 boost/hana/fwd/flatten.hpp mode change 100755 => 100644 boost/hana/fwd/fold.hpp mode change 100755 => 100644 boost/hana/fwd/fold_left.hpp mode change 100755 => 100644 boost/hana/fwd/fold_right.hpp mode change 100755 => 100644 boost/hana/fwd/for_each.hpp mode change 100755 => 100644 boost/hana/fwd/front.hpp mode change 100755 => 100644 boost/hana/fwd/fuse.hpp mode change 100755 => 100644 boost/hana/fwd/greater.hpp mode change 100755 => 100644 boost/hana/fwd/greater_equal.hpp mode change 100755 => 100644 boost/hana/fwd/group.hpp mode change 100755 => 100644 boost/hana/fwd/hash.hpp mode change 100755 => 100644 boost/hana/fwd/if.hpp mode change 100755 => 100644 boost/hana/fwd/index_if.hpp mode change 100755 => 100644 boost/hana/fwd/insert.hpp mode change 100755 => 100644 boost/hana/fwd/insert_range.hpp mode change 100755 => 100644 boost/hana/fwd/integral_constant.hpp mode change 100755 => 100644 boost/hana/fwd/intersection.hpp mode change 100755 => 100644 boost/hana/fwd/intersperse.hpp mode change 100755 => 100644 boost/hana/fwd/is_disjoint.hpp mode change 100755 => 100644 boost/hana/fwd/is_empty.hpp mode change 100755 => 100644 boost/hana/fwd/is_subset.hpp mode change 100755 => 100644 boost/hana/fwd/keys.hpp mode change 100755 => 100644 boost/hana/fwd/lazy.hpp mode change 100755 => 100644 boost/hana/fwd/length.hpp mode change 100755 => 100644 boost/hana/fwd/less.hpp mode change 100755 => 100644 boost/hana/fwd/less_equal.hpp mode change 100755 => 100644 boost/hana/fwd/lexicographical_compare.hpp mode change 100755 => 100644 boost/hana/fwd/lift.hpp mode change 100755 => 100644 boost/hana/fwd/map.hpp mode change 100755 => 100644 boost/hana/fwd/max.hpp mode change 100755 => 100644 boost/hana/fwd/maximum.hpp mode change 100755 => 100644 boost/hana/fwd/members.hpp mode change 100755 => 100644 boost/hana/fwd/min.hpp mode change 100755 => 100644 boost/hana/fwd/minimum.hpp mode change 100755 => 100644 boost/hana/fwd/minus.hpp mode change 100755 => 100644 boost/hana/fwd/mod.hpp mode change 100755 => 100644 boost/hana/fwd/monadic_compose.hpp mode change 100755 => 100644 boost/hana/fwd/monadic_fold_left.hpp mode change 100755 => 100644 boost/hana/fwd/monadic_fold_right.hpp mode change 100755 => 100644 boost/hana/fwd/mult.hpp mode change 100755 => 100644 boost/hana/fwd/negate.hpp mode change 100755 => 100644 boost/hana/fwd/none.hpp mode change 100755 => 100644 boost/hana/fwd/none_of.hpp mode change 100755 => 100644 boost/hana/fwd/not.hpp mode change 100755 => 100644 boost/hana/fwd/not_equal.hpp mode change 100755 => 100644 boost/hana/fwd/one.hpp mode change 100755 => 100644 boost/hana/fwd/optional.hpp mode change 100755 => 100644 boost/hana/fwd/or.hpp mode change 100755 => 100644 boost/hana/fwd/ordering.hpp mode change 100755 => 100644 boost/hana/fwd/pair.hpp mode change 100755 => 100644 boost/hana/fwd/partition.hpp mode change 100755 => 100644 boost/hana/fwd/permutations.hpp mode change 100755 => 100644 boost/hana/fwd/plus.hpp mode change 100755 => 100644 boost/hana/fwd/power.hpp mode change 100755 => 100644 boost/hana/fwd/prefix.hpp mode change 100755 => 100644 boost/hana/fwd/prepend.hpp mode change 100755 => 100644 boost/hana/fwd/product.hpp mode change 100755 => 100644 boost/hana/fwd/range.hpp mode change 100755 => 100644 boost/hana/fwd/remove.hpp mode change 100755 => 100644 boost/hana/fwd/remove_at.hpp mode change 100755 => 100644 boost/hana/fwd/remove_if.hpp mode change 100755 => 100644 boost/hana/fwd/remove_range.hpp mode change 100755 => 100644 boost/hana/fwd/repeat.hpp mode change 100755 => 100644 boost/hana/fwd/replace.hpp mode change 100755 => 100644 boost/hana/fwd/replace_if.hpp mode change 100755 => 100644 boost/hana/fwd/replicate.hpp mode change 100755 => 100644 boost/hana/fwd/reverse.hpp mode change 100755 => 100644 boost/hana/fwd/reverse_fold.hpp mode change 100755 => 100644 boost/hana/fwd/scan_left.hpp mode change 100755 => 100644 boost/hana/fwd/scan_right.hpp mode change 100755 => 100644 boost/hana/fwd/second.hpp mode change 100755 => 100644 boost/hana/fwd/set.hpp mode change 100755 => 100644 boost/hana/fwd/size.hpp mode change 100755 => 100644 boost/hana/fwd/slice.hpp mode change 100755 => 100644 boost/hana/fwd/sort.hpp mode change 100755 => 100644 boost/hana/fwd/span.hpp mode change 100755 => 100644 boost/hana/fwd/string.hpp mode change 100755 => 100644 boost/hana/fwd/suffix.hpp mode change 100755 => 100644 boost/hana/fwd/sum.hpp mode change 100755 => 100644 boost/hana/fwd/symmetric_difference.hpp mode change 100755 => 100644 boost/hana/fwd/take_back.hpp mode change 100755 => 100644 boost/hana/fwd/take_front.hpp mode change 100755 => 100644 boost/hana/fwd/take_while.hpp mode change 100755 => 100644 boost/hana/fwd/tap.hpp mode change 100755 => 100644 boost/hana/fwd/then.hpp mode change 100755 => 100644 boost/hana/fwd/transform.hpp mode change 100755 => 100644 boost/hana/fwd/tuple.hpp mode change 100755 => 100644 boost/hana/fwd/type.hpp mode change 100755 => 100644 boost/hana/fwd/unfold_left.hpp mode change 100755 => 100644 boost/hana/fwd/unfold_right.hpp mode change 100755 => 100644 boost/hana/fwd/union.hpp mode change 100755 => 100644 boost/hana/fwd/unique.hpp mode change 100755 => 100644 boost/hana/fwd/unpack.hpp mode change 100755 => 100644 boost/hana/fwd/value.hpp mode change 100755 => 100644 boost/hana/fwd/while.hpp mode change 100755 => 100644 boost/hana/fwd/zero.hpp mode change 100755 => 100644 boost/hana/fwd/zip.hpp mode change 100755 => 100644 boost/hana/fwd/zip_shortest.hpp mode change 100755 => 100644 boost/hana/fwd/zip_shortest_with.hpp mode change 100755 => 100644 boost/hana/fwd/zip_with.hpp mode change 100755 => 100644 boost/hana/greater.hpp mode change 100755 => 100644 boost/hana/greater_equal.hpp mode change 100755 => 100644 boost/hana/group.hpp mode change 100755 => 100644 boost/hana/hash.hpp mode change 100755 => 100644 boost/hana/if.hpp mode change 100755 => 100644 boost/hana/index_if.hpp mode change 100755 => 100644 boost/hana/insert.hpp mode change 100755 => 100644 boost/hana/insert_range.hpp mode change 100755 => 100644 boost/hana/integral_constant.hpp mode change 100755 => 100644 boost/hana/intersection.hpp mode change 100755 => 100644 boost/hana/intersperse.hpp mode change 100755 => 100644 boost/hana/is_disjoint.hpp mode change 100755 => 100644 boost/hana/is_empty.hpp mode change 100755 => 100644 boost/hana/is_subset.hpp mode change 100755 => 100644 boost/hana/keys.hpp mode change 100755 => 100644 boost/hana/lazy.hpp mode change 100755 => 100644 boost/hana/length.hpp mode change 100755 => 100644 boost/hana/less.hpp mode change 100755 => 100644 boost/hana/less_equal.hpp mode change 100755 => 100644 boost/hana/lexicographical_compare.hpp mode change 100755 => 100644 boost/hana/lift.hpp mode change 100755 => 100644 boost/hana/map.hpp mode change 100755 => 100644 boost/hana/max.hpp mode change 100755 => 100644 boost/hana/maximum.hpp mode change 100755 => 100644 boost/hana/members.hpp mode change 100755 => 100644 boost/hana/min.hpp mode change 100755 => 100644 boost/hana/minimum.hpp mode change 100755 => 100644 boost/hana/minus.hpp mode change 100755 => 100644 boost/hana/mod.hpp mode change 100755 => 100644 boost/hana/monadic_compose.hpp mode change 100755 => 100644 boost/hana/monadic_fold_left.hpp mode change 100755 => 100644 boost/hana/monadic_fold_right.hpp mode change 100755 => 100644 boost/hana/mult.hpp mode change 100755 => 100644 boost/hana/negate.hpp mode change 100755 => 100644 boost/hana/none.hpp mode change 100755 => 100644 boost/hana/none_of.hpp mode change 100755 => 100644 boost/hana/not.hpp mode change 100755 => 100644 boost/hana/not_equal.hpp mode change 100755 => 100644 boost/hana/one.hpp mode change 100755 => 100644 boost/hana/optional.hpp mode change 100755 => 100644 boost/hana/or.hpp mode change 100755 => 100644 boost/hana/ordering.hpp mode change 100755 => 100644 boost/hana/pair.hpp mode change 100755 => 100644 boost/hana/partition.hpp mode change 100755 => 100644 boost/hana/permutations.hpp mode change 100755 => 100644 boost/hana/plus.hpp mode change 100755 => 100644 boost/hana/power.hpp mode change 100755 => 100644 boost/hana/prefix.hpp mode change 100755 => 100644 boost/hana/prepend.hpp mode change 100755 => 100644 boost/hana/product.hpp mode change 100755 => 100644 boost/hana/range.hpp mode change 100755 => 100644 boost/hana/remove.hpp mode change 100755 => 100644 boost/hana/remove_at.hpp mode change 100755 => 100644 boost/hana/remove_if.hpp mode change 100755 => 100644 boost/hana/remove_range.hpp mode change 100755 => 100644 boost/hana/repeat.hpp mode change 100755 => 100644 boost/hana/replace.hpp mode change 100755 => 100644 boost/hana/replace_if.hpp mode change 100755 => 100644 boost/hana/replicate.hpp mode change 100755 => 100644 boost/hana/reverse.hpp mode change 100755 => 100644 boost/hana/reverse_fold.hpp mode change 100755 => 100644 boost/hana/scan_left.hpp mode change 100755 => 100644 boost/hana/scan_right.hpp mode change 100755 => 100644 boost/hana/second.hpp mode change 100755 => 100644 boost/hana/set.hpp mode change 100755 => 100644 boost/hana/size.hpp mode change 100755 => 100644 boost/hana/slice.hpp mode change 100755 => 100644 boost/hana/sort.hpp mode change 100755 => 100644 boost/hana/span.hpp mode change 100755 => 100644 boost/hana/string.hpp mode change 100755 => 100644 boost/hana/suffix.hpp mode change 100755 => 100644 boost/hana/sum.hpp mode change 100755 => 100644 boost/hana/symmetric_difference.hpp mode change 100755 => 100644 boost/hana/take_back.hpp mode change 100755 => 100644 boost/hana/take_front.hpp mode change 100755 => 100644 boost/hana/take_while.hpp mode change 100755 => 100644 boost/hana/tap.hpp mode change 100755 => 100644 boost/hana/then.hpp mode change 100755 => 100644 boost/hana/traits.hpp mode change 100755 => 100644 boost/hana/transform.hpp mode change 100755 => 100644 boost/hana/tuple.hpp mode change 100755 => 100644 boost/hana/type.hpp mode change 100755 => 100644 boost/hana/unfold_left.hpp mode change 100755 => 100644 boost/hana/unfold_right.hpp mode change 100755 => 100644 boost/hana/union.hpp mode change 100755 => 100644 boost/hana/unique.hpp mode change 100755 => 100644 boost/hana/unpack.hpp mode change 100755 => 100644 boost/hana/value.hpp mode change 100755 => 100644 boost/hana/version.hpp mode change 100755 => 100644 boost/hana/while.hpp mode change 100755 => 100644 boost/hana/zero.hpp mode change 100755 => 100644 boost/hana/zip.hpp mode change 100755 => 100644 boost/hana/zip_shortest.hpp mode change 100755 => 100644 boost/hana/zip_shortest_with.hpp mode change 100755 => 100644 boost/hana/zip_with.hpp create mode 100644 boost/pfr.hpp create mode 100644 boost/pfr/core.hpp create mode 100644 boost/pfr/detail/cast_to_layout_compatible.hpp create mode 100644 boost/pfr/detail/config.hpp create mode 100644 boost/pfr/detail/core.hpp create mode 100644 boost/pfr/detail/core14_classic.hpp create mode 100644 boost/pfr/detail/core14_loophole.hpp create mode 100644 boost/pfr/detail/core17.hpp create mode 100644 boost/pfr/detail/core17_generated.hpp create mode 100644 boost/pfr/detail/detectors.hpp create mode 100644 boost/pfr/detail/fields_count.hpp create mode 100644 boost/pfr/detail/for_each_field_impl.hpp create mode 100644 boost/pfr/detail/functional.hpp create mode 100644 boost/pfr/detail/io.hpp create mode 100644 boost/pfr/detail/make_flat_tuple_of_references.hpp create mode 100644 boost/pfr/detail/make_integer_sequence.hpp create mode 100644 boost/pfr/detail/offset_based_getter.hpp create mode 100644 boost/pfr/detail/rvalue_t.hpp create mode 100644 boost/pfr/detail/sequence_tuple.hpp create mode 100644 boost/pfr/detail/size_array.hpp create mode 100644 boost/pfr/detail/size_t_.hpp create mode 100644 boost/pfr/detail/stdtuple.hpp create mode 100644 boost/pfr/detail/tie_from_structure_tuple.hpp create mode 100644 boost/pfr/detail/unsafe_declval.hpp create mode 100644 boost/pfr/functions_for.hpp create mode 100644 boost/pfr/functors.hpp create mode 100644 boost/pfr/io.hpp create mode 100644 boost/pfr/io_fields.hpp create mode 100644 boost/pfr/ops.hpp create mode 100644 boost/pfr/ops_fields.hpp create mode 100644 boost/pfr/tuple_size.hpp mode change 100755 => 100644 boostcpp.jam mode change 100755 => 100644 bootstrap.bat mode change 100755 => 100644 doc/Jamfile.v2 mode change 100755 => 100644 doc/html/Assignable.html mode change 100755 => 100644 doc/html/CopyConstructible.html mode change 100755 => 100644 doc/html/accumulators.html mode change 100755 => 100644 doc/html/any.html mode change 100755 => 100644 doc/html/array.html mode change 100755 => 100644 doc/html/atomic.html mode change 100755 => 100644 doc/html/bbv2.html mode change 100755 => 100644 doc/html/bbv2/installation.html mode change 100755 => 100644 doc/html/boost_asio.html mode change 100755 => 100644 doc/html/boost_lexical_cast.html mode change 100755 => 100644 doc/html/boost_random.html mode change 100755 => 100644 doc/html/boost_staticassert.html mode change 100755 => 100644 doc/html/boost_typeerasure.html mode change 100755 => 100644 doc/html/boostbook.html mode change 100755 => 100644 doc/html/chrono.html mode change 100755 => 100644 doc/html/circular_buffer.html mode change 100755 => 100644 doc/html/container.html mode change 100755 => 100644 doc/html/date_time.html mode change 100755 => 100644 doc/html/date_time/date_time_io.html mode change 100755 => 100644 doc/html/date_time/details.html mode change 100755 => 100644 doc/html/date_time/local_time.html mode change 100755 => 100644 doc/html/foreach.html mode change 100755 => 100644 doc/html/function.html mode change 100755 => 100644 doc/html/hash.html mode change 100755 => 100644 doc/html/hash/custom.html mode change 100755 => 100644 doc/html/heap.html mode change 100755 => 100644 doc/html/images/blank.png mode change 100755 => 100644 doc/html/images/caution.png mode change 100755 => 100644 doc/html/images/draft.png mode change 100755 => 100644 doc/html/images/home.png mode change 100755 => 100644 doc/html/images/important.png mode change 100755 => 100644 doc/html/images/next.png mode change 100755 => 100644 doc/html/images/note.png mode change 100755 => 100644 doc/html/images/prev.png mode change 100755 => 100644 doc/html/images/tip.png mode change 100755 => 100644 doc/html/images/toc-blank.png mode change 100755 => 100644 doc/html/images/toc-minus.png mode change 100755 => 100644 doc/html/images/toc-plus.png mode change 100755 => 100644 doc/html/images/up.png mode change 100755 => 100644 doc/html/images/warning.png mode change 100755 => 100644 doc/html/interprocess.html mode change 100755 => 100644 doc/html/intrusive.html mode change 100755 => 100644 doc/html/lambda.html mode change 100755 => 100644 doc/html/lockfree.html mode change 100755 => 100644 doc/html/move.html mode change 100755 => 100644 doc/html/mpi.html mode change 100755 => 100644 doc/html/program_options.html mode change 100755 => 100644 doc/html/property_tree.html mode change 100755 => 100644 doc/html/proto.html mode change 100755 => 100644 doc/html/quickbook.html mode change 100755 => 100644 doc/html/ratio.html mode change 100755 => 100644 doc/html/ref.html mode change 100755 => 100644 doc/html/signals.html mode change 100755 => 100644 doc/html/signals2.html mode change 100755 => 100644 doc/html/string_algo.html mode change 100755 => 100644 doc/html/thread.html mode change 100755 => 100644 doc/html/tribool.html mode change 100755 => 100644 doc/html/typeof.html mode change 100755 => 100644 doc/html/unordered.html mode change 100755 => 100644 doc/html/variant.html mode change 100755 => 100644 doc/html/xpressive.html mode change 100755 => 100644 doc/images/valid-html401.png mode change 100755 => 100644 doc/pdf/Jamfile.v2 mode change 100755 => 100644 doc/pdf/build mode change 100755 => 100644 doc/src/boost.xml mode change 100755 => 100644 doc/src/boostbook.css mode change 100755 => 100644 doc/src/docutils.css mode change 100755 => 100644 doc/src/images/alert.png mode change 100755 => 100644 doc/src/images/blank.png mode change 100755 => 100644 doc/src/images/callouts/1.png mode change 100755 => 100644 doc/src/images/callouts/1.svg mode change 100755 => 100644 doc/src/images/callouts/10.png mode change 100755 => 100644 doc/src/images/callouts/10.svg mode change 100755 => 100644 doc/src/images/callouts/11.png mode change 100755 => 100644 doc/src/images/callouts/11.svg mode change 100755 => 100644 doc/src/images/callouts/12.png mode change 100755 => 100644 doc/src/images/callouts/12.svg mode change 100755 => 100644 doc/src/images/callouts/13.png mode change 100755 => 100644 doc/src/images/callouts/13.svg mode change 100755 => 100644 doc/src/images/callouts/14.png mode change 100755 => 100644 doc/src/images/callouts/14.svg mode change 100755 => 100644 doc/src/images/callouts/15.png mode change 100755 => 100644 doc/src/images/callouts/15.svg mode change 100755 => 100644 doc/src/images/callouts/16.svg mode change 100755 => 100644 doc/src/images/callouts/17.svg mode change 100755 => 100644 doc/src/images/callouts/18.svg mode change 100755 => 100644 doc/src/images/callouts/19.svg mode change 100755 => 100644 doc/src/images/callouts/2.png mode change 100755 => 100644 doc/src/images/callouts/2.svg mode change 100755 => 100644 doc/src/images/callouts/20.svg mode change 100755 => 100644 doc/src/images/callouts/21.svg mode change 100755 => 100644 doc/src/images/callouts/22.svg mode change 100755 => 100644 doc/src/images/callouts/23.svg mode change 100755 => 100644 doc/src/images/callouts/24.svg mode change 100755 => 100644 doc/src/images/callouts/25.svg mode change 100755 => 100644 doc/src/images/callouts/26.svg mode change 100755 => 100644 doc/src/images/callouts/27.svg mode change 100755 => 100644 doc/src/images/callouts/28.svg mode change 100755 => 100644 doc/src/images/callouts/29.svg mode change 100755 => 100644 doc/src/images/callouts/3.png mode change 100755 => 100644 doc/src/images/callouts/3.svg mode change 100755 => 100644 doc/src/images/callouts/30.svg mode change 100755 => 100644 doc/src/images/callouts/4.png mode change 100755 => 100644 doc/src/images/callouts/4.svg mode change 100755 => 100644 doc/src/images/callouts/5.png mode change 100755 => 100644 doc/src/images/callouts/5.svg mode change 100755 => 100644 doc/src/images/callouts/6.png mode change 100755 => 100644 doc/src/images/callouts/6.svg mode change 100755 => 100644 doc/src/images/callouts/7.png mode change 100755 => 100644 doc/src/images/callouts/7.svg mode change 100755 => 100644 doc/src/images/callouts/8.png mode change 100755 => 100644 doc/src/images/callouts/8.svg mode change 100755 => 100644 doc/src/images/callouts/9.png mode change 100755 => 100644 doc/src/images/callouts/9.svg mode change 100755 => 100644 doc/src/images/caution.png mode change 100755 => 100644 doc/src/images/caution.svg mode change 100755 => 100644 doc/src/images/draft.png mode change 100755 => 100644 doc/src/images/home.png mode change 100755 => 100644 doc/src/images/home.svg mode change 100755 => 100644 doc/src/images/important.png mode change 100755 => 100644 doc/src/images/important.svg mode change 100755 => 100644 doc/src/images/next.png mode change 100755 => 100644 doc/src/images/next.svg mode change 100755 => 100644 doc/src/images/next_disabled.png mode change 100755 => 100644 doc/src/images/note.png mode change 100755 => 100644 doc/src/images/note.svg mode change 100755 => 100644 doc/src/images/prev.png mode change 100755 => 100644 doc/src/images/prev.svg mode change 100755 => 100644 doc/src/images/prev_disabled.png mode change 100755 => 100644 doc/src/images/smiley.png mode change 100755 => 100644 doc/src/images/tip.png mode change 100755 => 100644 doc/src/images/tip.svg mode change 100755 => 100644 doc/src/images/toc-blank.png mode change 100755 => 100644 doc/src/images/toc-minus.png mode change 100755 => 100644 doc/src/images/toc-plus.png mode change 100755 => 100644 doc/src/images/up.png mode change 100755 => 100644 doc/src/images/up.svg mode change 100755 => 100644 doc/src/images/up_disabled.png mode change 100755 => 100644 doc/src/images/warning.png mode change 100755 => 100644 doc/src/images/warning.svg mode change 100755 => 100644 doc/src/minimal.css mode change 100755 => 100644 doc/src/reference.css mode change 100755 => 100644 doc/test/HTML4_symbols.qbk mode change 100755 => 100644 doc/test/Jamfile.v2 mode change 100755 => 100644 doc/test/array.xml mode change 100755 => 100644 doc/test/array1.xml mode change 100755 => 100644 doc/test/array2.xml mode change 100755 => 100644 doc/test/array3.xml mode change 100755 => 100644 doc/test/array4.xml mode change 100755 => 100644 doc/test/gold/boost/accumulators/extract/weighted_tail_quantile.html mode change 100755 => 100644 doc/test/gold/boost/accumulators/impl/weighted_tail_quantile__id330053.html mode change 100755 => 100644 doc/test/gold/boost/accumulators/tag/weighted_tail_quantile.html mode change 100755 => 100644 doc/test/gold/boost/array.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/accumulators.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/array.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/basic_formatting.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/blurbs.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/code_blocks.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/images.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/lists_and_tables.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/remez.html mode change 100755 => 100644 doc/test/gold/document_to_test_formatting/test.html mode change 100755 => 100644 doc/test/gold/images/accumulators/doxygen.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_0.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_1.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_2.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_3.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_4.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_5.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_6.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_7.png mode change 100755 => 100644 doc/test/gold/images/accumulators/form_8.png mode change 100755 => 100644 doc/test/gold/images/beta_dist_kurtosis.png mode change 100755 => 100644 doc/test/gold/images/digamma3.png mode change 100755 => 100644 doc/test/gold/images/doctest.png mode change 100755 => 100644 doc/test/gold/images/open_clipart_library_logo.svg mode change 100755 => 100644 doc/test/gold/images/remez-2.png mode change 100755 => 100644 doc/test/gold/images/remez-3.png mode change 100755 => 100644 doc/test/gold/images/remez-4.png mode change 100755 => 100644 doc/test/gold/images/remez-5.png mode change 100755 => 100644 doc/test/gold/index.html mode change 100755 => 100644 doc/test/html/images/beta_dist_kurtosis.png mode change 100755 => 100644 doc/test/html/images/digamma3.png mode change 100755 => 100644 doc/test/html/images/doctest.png mode change 100755 => 100644 doc/test/html/images/open_clipart_library_logo.svg mode change 100755 => 100644 doc/test/html/images/remez-2.png mode change 100755 => 100644 doc/test/html/images/remez-3.png mode change 100755 => 100644 doc/test/html/images/remez-4.png mode change 100755 => 100644 doc/test/html/images/remez-5.png mode change 100755 => 100644 doc/test/remez.qbk mode change 100755 => 100644 doc/test/stub.cpp mode change 100755 => 100644 doc/test/test.mml mode change 100755 => 100644 doc/test/test.png mode change 100755 => 100644 doc/test/test.qbk mode change 100755 => 100644 doc/test/test.svg mode change 100755 => 100644 doc/test/test_HTML4_symbols.qbk mode change 100755 => 100644 doc/test/weighted_tail_quantile.hpp mode change 100755 => 100644 index.htm mode change 100755 => 100644 index.html mode change 100755 => 100644 libs/Jamfile.v2 create mode 100644 libs/asio/doc/.gitignore mode change 100755 => 100644 libs/asio/doc/Jamfile.v2 mode change 100755 => 100644 libs/asio/doc/asio.qbk mode change 100755 => 100644 libs/asio/doc/doxy2qbk.pl mode change 100755 => 100644 libs/asio/doc/examples.qbk mode change 100755 => 100644 libs/asio/doc/history.qbk mode change 100755 => 100644 libs/asio/doc/index.xml mode change 100755 => 100644 libs/asio/doc/net_ts.qbk mode change 100755 => 100644 libs/asio/doc/noncopyable_dox.txt mode change 100755 => 100644 libs/asio/doc/overview.qbk mode change 100755 => 100644 libs/asio/doc/overview/allocation.qbk mode change 100755 => 100644 libs/asio/doc/overview/async.qbk mode change 100755 => 100644 libs/asio/doc/overview/async_op1.dot mode change 100755 => 100644 libs/asio/doc/overview/async_op1.png mode change 100755 => 100644 libs/asio/doc/overview/async_op2.dot mode change 100755 => 100644 libs/asio/doc/overview/async_op2.png mode change 100755 => 100644 libs/asio/doc/overview/basics.qbk mode change 100755 => 100644 libs/asio/doc/overview/bsd_sockets.qbk mode change 100755 => 100644 libs/asio/doc/overview/buffers.qbk mode change 100755 => 100644 libs/asio/doc/overview/concurrency_hint.qbk mode change 100755 => 100644 libs/asio/doc/overview/coroutine.qbk mode change 100755 => 100644 libs/asio/doc/overview/coroutines_ts.qbk mode change 100755 => 100644 libs/asio/doc/overview/cpp2011.qbk mode change 100755 => 100644 libs/asio/doc/overview/handler_tracking.qbk mode change 100755 => 100644 libs/asio/doc/overview/implementation.qbk mode change 100755 => 100644 libs/asio/doc/overview/iostreams.qbk mode change 100755 => 100644 libs/asio/doc/overview/line_based.qbk mode change 100755 => 100644 libs/asio/doc/overview/other_protocols.qbk mode change 100755 => 100644 libs/asio/doc/overview/posix.qbk mode change 100755 => 100644 libs/asio/doc/overview/proactor.dot mode change 100755 => 100644 libs/asio/doc/overview/proactor.png mode change 100755 => 100644 libs/asio/doc/overview/protocols.qbk mode change 100755 => 100644 libs/asio/doc/overview/rationale.qbk mode change 100755 => 100644 libs/asio/doc/overview/reactor.qbk mode change 100755 => 100644 libs/asio/doc/overview/serial_ports.qbk mode change 100755 => 100644 libs/asio/doc/overview/signals.qbk mode change 100755 => 100644 libs/asio/doc/overview/spawn.qbk mode change 100755 => 100644 libs/asio/doc/overview/ssl.qbk mode change 100755 => 100644 libs/asio/doc/overview/strands.qbk mode change 100755 => 100644 libs/asio/doc/overview/streams.qbk mode change 100755 => 100644 libs/asio/doc/overview/sync_op.dot mode change 100755 => 100644 libs/asio/doc/overview/sync_op.png mode change 100755 => 100644 libs/asio/doc/overview/threads.qbk mode change 100755 => 100644 libs/asio/doc/overview/timers.qbk mode change 100755 => 100644 libs/asio/doc/overview/windows.qbk create mode 100644 libs/asio/doc/platform_macros.pl create mode 100644 libs/asio/doc/platform_macros.qbk mode change 100755 => 100644 libs/asio/doc/quickref.xml mode change 100755 => 100644 libs/asio/doc/reference.dox mode change 100755 => 100644 libs/asio/doc/reference.qbk mode change 100755 => 100644 libs/asio/doc/reference.xsl mode change 100755 => 100644 libs/asio/doc/requirements.qbk mode change 100755 => 100644 libs/asio/doc/requirements/AcceptHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/AcceptableProtocol.qbk mode change 100755 => 100644 libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk mode change 100755 => 100644 libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk mode change 100755 => 100644 libs/asio/doc/requirements/AsyncReadStream.qbk mode change 100755 => 100644 libs/asio/doc/requirements/AsyncWriteStream.qbk mode change 100755 => 100644 libs/asio/doc/requirements/BufferedHandshakeHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/CompletionCondition.qbk mode change 100755 => 100644 libs/asio/doc/requirements/CompletionHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ConnectCondition.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ConnectHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ConstBufferSequence.qbk mode change 100755 => 100644 libs/asio/doc/requirements/DynamicBuffer.qbk mode change 100755 => 100644 libs/asio/doc/requirements/DynamicBuffer_v1.qbk mode change 100755 => 100644 libs/asio/doc/requirements/DynamicBuffer_v2.qbk mode change 100755 => 100644 libs/asio/doc/requirements/Endpoint.qbk mode change 100755 => 100644 libs/asio/doc/requirements/EndpointSequence.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ExecutionContext.qbk mode change 100755 => 100644 libs/asio/doc/requirements/Executor.qbk mode change 100755 => 100644 libs/asio/doc/requirements/GettableSerialPortOption.qbk mode change 100755 => 100644 libs/asio/doc/requirements/GettableSocketOption.qbk mode change 100755 => 100644 libs/asio/doc/requirements/Handler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/HandshakeHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/InternetProtocol.qbk mode change 100755 => 100644 libs/asio/doc/requirements/IoControlCommand.qbk mode change 100755 => 100644 libs/asio/doc/requirements/IoObjectService.qbk mode change 100755 => 100644 libs/asio/doc/requirements/IteratorConnectHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/LegacyCompletionHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/MoveAcceptHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/MutableBufferSequence.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ProtoAllocator.qbk mode change 100755 => 100644 libs/asio/doc/requirements/Protocol.qbk mode change 100755 => 100644 libs/asio/doc/requirements/RangeConnectHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ReadHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ResolveHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/Service.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SettableSerialPortOption.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SettableSocketOption.qbk mode change 100755 => 100644 libs/asio/doc/requirements/ShutdownHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SignalHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SyncReadStream.qbk mode change 100755 => 100644 libs/asio/doc/requirements/SyncWriteStream.qbk mode change 100755 => 100644 libs/asio/doc/requirements/TimeTraits.qbk mode change 100755 => 100644 libs/asio/doc/requirements/WaitHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/WaitTraits.qbk mode change 100755 => 100644 libs/asio/doc/requirements/WriteHandler.qbk mode change 100755 => 100644 libs/asio/doc/requirements/asynchronous_operations.qbk mode change 100755 => 100644 libs/asio/doc/requirements/asynchronous_socket_operations.qbk mode change 100755 => 100644 libs/asio/doc/requirements/read_write_operations.qbk mode change 100755 => 100644 libs/asio/doc/requirements/synchronous_socket_operations.qbk mode change 100755 => 100644 libs/asio/doc/std_exception_dox.txt mode change 100755 => 100644 libs/asio/doc/tutorial.dox mode change 100755 => 100644 libs/asio/doc/tutorial.qbk mode change 100755 => 100644 libs/asio/doc/tutorial.xsl mode change 100755 => 100644 libs/asio/doc/using.qbk mode change 100755 => 100644 libs/asio/example/cpp03/allocation/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/allocation/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/buffers/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/buffers/reference_counted.cpp mode change 100755 => 100644 libs/asio/example/cpp03/chat/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/chat/chat_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/chat/chat_message.hpp mode change 100755 => 100644 libs/asio/example/cpp03/chat/chat_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/chat/posix_chat_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/echo/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/echo/async_tcp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/echo/async_udp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/echo/blocking_tcp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/echo/blocking_udp_echo_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/echo/blocking_udp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/fork/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/fork/daemon.cpp mode change 100755 => 100644 libs/asio/example/cpp03/fork/process_per_connection.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/client/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/http/client/async_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/client/sync_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/doc_root/data_1K.html mode change 100755 => 100644 libs/asio/example/cpp03/http/doc_root/data_2K.html mode change 100755 => 100644 libs/asio/example/cpp03/http/doc_root/data_4K.html mode change 100755 => 100644 libs/asio/example/cpp03/http/doc_root/data_8K.html mode change 100755 => 100644 libs/asio/example/cpp03/http/server/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/http/server/connection.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/connection.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/connection_manager.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/connection_manager.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/header.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/main.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/mime_types.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/mime_types.hpp create mode 100644 libs/asio/example/cpp03/http/server/reply.cpp create mode 100644 libs/asio/example/cpp03/http/server/reply.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/request.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/request_handler.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/request_handler.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/request_parser.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/request_parser.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server/server.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/connection.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/connection.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/header.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/io_context_pool.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/io_context_pool.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/main.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/mime_types.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/mime_types.hpp create mode 100644 libs/asio/example/cpp03/http/server2/reply.cpp create mode 100644 libs/asio/example/cpp03/http/server2/reply.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/request.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/request_handler.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/request_handler.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/request_parser.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/request_parser.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server2/server.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/connection.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/connection.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/header.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/main.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/mime_types.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/mime_types.hpp create mode 100644 libs/asio/example/cpp03/http/server3/reply.cpp create mode 100644 libs/asio/example/cpp03/http/server3/reply.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/request.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/request_handler.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/request_handler.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/request_parser.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/request_parser.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server3/server.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/file_handler.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/file_handler.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/header.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/main.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/mime_types.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/mime_types.hpp create mode 100644 libs/asio/example/cpp03/http/server4/reply.cpp create mode 100644 libs/asio/example/cpp03/http/server4/reply.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/request.hpp create mode 100644 libs/asio/example/cpp03/http/server4/request_parser.cpp create mode 100644 libs/asio/example/cpp03/http/server4/request_parser.hpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/http/server4/server.hpp mode change 100755 => 100644 libs/asio/example/cpp03/icmp/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/icmp/icmp_header.hpp mode change 100755 => 100644 libs/asio/example/cpp03/icmp/ipv4_header.hpp mode change 100755 => 100644 libs/asio/example/cpp03/icmp/ping.cpp mode change 100755 => 100644 libs/asio/example/cpp03/invocation/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/invocation/prioritised_handlers.cpp mode change 100755 => 100644 libs/asio/example/cpp03/iostreams/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/iostreams/daytime_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/iostreams/daytime_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/iostreams/http_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/local/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/local/connect_pair.cpp mode change 100755 => 100644 libs/asio/example/cpp03/local/iostream_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/local/stream_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/local/stream_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/multicast/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/multicast/receiver.cpp mode change 100755 => 100644 libs/asio/example/cpp03/multicast/sender.cpp mode change 100755 => 100644 libs/asio/example/cpp03/nonblocking/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/nonblocking/third_party_lib.cpp mode change 100755 => 100644 libs/asio/example/cpp03/porthopper/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/porthopper/client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/porthopper/protocol.hpp mode change 100755 => 100644 libs/asio/example/cpp03/porthopper/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/serialization/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/serialization/client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/serialization/connection.hpp mode change 100755 => 100644 libs/asio/example/cpp03/serialization/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/serialization/stock.hpp mode change 100755 => 100644 libs/asio/example/cpp03/services/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/services/basic_logger.hpp mode change 100755 => 100644 libs/asio/example/cpp03/services/daytime_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/services/logger.hpp mode change 100755 => 100644 libs/asio/example/cpp03/services/logger_service.cpp mode change 100755 => 100644 libs/asio/example/cpp03/services/logger_service.hpp mode change 100755 => 100644 libs/asio/example/cpp03/socks4/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/socks4/socks4.hpp mode change 100755 => 100644 libs/asio/example/cpp03/socks4/sync_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/spawn/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/spawn/echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/spawn/parallel_grep.cpp mode change 100755 => 100644 libs/asio/example/cpp03/ssl/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/ssl/README mode change 100755 => 100644 libs/asio/example/cpp03/ssl/ca.pem mode change 100755 => 100644 libs/asio/example/cpp03/ssl/client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/ssl/dh2048.pem mode change 100755 => 100644 libs/asio/example/cpp03/ssl/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/ssl/server.pem mode change 100755 => 100644 libs/asio/example/cpp03/timeouts/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/timeouts/async_tcp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/timeouts/blocking_tcp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/timeouts/blocking_udp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/timeouts/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/timers/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/timers/time_t_timer.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime1/client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime2/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime3/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime4/client.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime5/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime6/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime7/server.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/daytime_dox.txt mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/index_dox.txt mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/timer1/timer.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/timer2/timer.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/timer3/timer.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/timer4/timer.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/timer5/timer.cpp mode change 100755 => 100644 libs/asio/example/cpp03/tutorial/timer_dox.txt mode change 100755 => 100644 libs/asio/example/cpp03/windows/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp03/windows/transmit_file.cpp mode change 100755 => 100644 libs/asio/example/cpp11/allocation/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/allocation/server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/buffers/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/buffers/reference_counted.cpp mode change 100755 => 100644 libs/asio/example/cpp11/chat/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/chat/chat_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/chat/chat_message.hpp mode change 100755 => 100644 libs/asio/example/cpp11/chat/chat_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/echo/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/echo/async_tcp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/echo/async_udp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/echo/blocking_tcp_echo_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/echo/blocking_tcp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/echo/blocking_udp_echo_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/echo/blocking_udp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/executors/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/executors/actor.cpp mode change 100755 => 100644 libs/asio/example/cpp11/executors/bank_account_1.cpp mode change 100755 => 100644 libs/asio/example/cpp11/executors/bank_account_2.cpp mode change 100755 => 100644 libs/asio/example/cpp11/executors/fork_join.cpp mode change 100755 => 100644 libs/asio/example/cpp11/executors/pipeline.cpp mode change 100755 => 100644 libs/asio/example/cpp11/executors/priority_scheduler.cpp mode change 100755 => 100644 libs/asio/example/cpp11/fork/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/fork/daemon.cpp mode change 100755 => 100644 libs/asio/example/cpp11/fork/process_per_connection.cpp mode change 100755 => 100644 libs/asio/example/cpp11/futures/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/futures/daytime_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/handler_tracking/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/handler_tracking/async_tcp_echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/handler_tracking/custom_tracking.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/http/server/connection.cpp create mode 100644 libs/asio/example/cpp11/http/server/connection.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/connection_manager.cpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/connection_manager.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/header.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/main.cpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/mime_types.cpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/mime_types.hpp create mode 100644 libs/asio/example/cpp11/http/server/reply.cpp create mode 100644 libs/asio/example/cpp11/http/server/reply.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/request.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/request_handler.cpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/request_handler.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/request_parser.cpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/request_parser.hpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/http/server/server.hpp mode change 100755 => 100644 libs/asio/example/cpp11/invocation/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/invocation/prioritised_handlers.cpp mode change 100755 => 100644 libs/asio/example/cpp11/iostreams/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/iostreams/http_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/local/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/local/connect_pair.cpp mode change 100755 => 100644 libs/asio/example/cpp11/local/iostream_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/local/stream_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/local/stream_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/multicast/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/multicast/receiver.cpp mode change 100755 => 100644 libs/asio/example/cpp11/multicast/sender.cpp mode change 100755 => 100644 libs/asio/example/cpp11/nonblocking/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/nonblocking/third_party_lib.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_1.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_2.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_3.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_4.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_5.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_6.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_7.cpp mode change 100755 => 100644 libs/asio/example/cpp11/operations/composed_8.cpp mode change 100755 => 100644 libs/asio/example/cpp11/socks4/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/socks4/socks4.hpp mode change 100755 => 100644 libs/asio/example/cpp11/socks4/sync_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/spawn/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/spawn/echo_server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/spawn/parallel_grep.cpp mode change 100755 => 100644 libs/asio/example/cpp11/ssl/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/ssl/README mode change 100755 => 100644 libs/asio/example/cpp11/ssl/ca.pem mode change 100755 => 100644 libs/asio/example/cpp11/ssl/client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/ssl/dh2048.pem mode change 100755 => 100644 libs/asio/example/cpp11/ssl/server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/ssl/server.pem mode change 100755 => 100644 libs/asio/example/cpp11/timeouts/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/timeouts/async_tcp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/timeouts/blocking_tcp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/timeouts/blocking_token_tcp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/timeouts/blocking_udp_client.cpp mode change 100755 => 100644 libs/asio/example/cpp11/timeouts/server.cpp mode change 100755 => 100644 libs/asio/example/cpp11/timers/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp11/timers/time_t_timer.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/Jamfile.v2 mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_1.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_2.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_3.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_4.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_5.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_6.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_7.cpp mode change 100755 => 100644 libs/asio/example/cpp14/operations/composed_8.cpp mode change 100755 => 100644 libs/asio/example/cpp17/coroutines_ts/chat_server.cpp mode change 100755 => 100644 libs/asio/example/cpp17/coroutines_ts/echo_server.cpp create mode 100644 libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp mode change 100755 => 100644 libs/asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp mode change 100755 => 100644 libs/asio/example/cpp17/coroutines_ts/range_based_for.cpp mode change 100755 => 100644 libs/asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp create mode 100644 libs/asio/include/boost/asio.hpp create mode 100644 libs/asio/include/boost/asio/any_io_executor.hpp create mode 100644 libs/asio/include/boost/asio/associated_allocator.hpp create mode 100644 libs/asio/include/boost/asio/associated_executor.hpp create mode 100644 libs/asio/include/boost/asio/async_result.hpp create mode 100644 libs/asio/include/boost/asio/awaitable.hpp create mode 100644 libs/asio/include/boost/asio/basic_datagram_socket.hpp create mode 100644 libs/asio/include/boost/asio/basic_deadline_timer.hpp create mode 100644 libs/asio/include/boost/asio/basic_io_object.hpp create mode 100644 libs/asio/include/boost/asio/basic_raw_socket.hpp create mode 100644 libs/asio/include/boost/asio/basic_seq_packet_socket.hpp create mode 100644 libs/asio/include/boost/asio/basic_serial_port.hpp create mode 100644 libs/asio/include/boost/asio/basic_signal_set.hpp create mode 100644 libs/asio/include/boost/asio/basic_socket.hpp create mode 100644 libs/asio/include/boost/asio/basic_socket_acceptor.hpp create mode 100644 libs/asio/include/boost/asio/basic_socket_iostream.hpp create mode 100644 libs/asio/include/boost/asio/basic_socket_streambuf.hpp create mode 100644 libs/asio/include/boost/asio/basic_stream_socket.hpp create mode 100644 libs/asio/include/boost/asio/basic_streambuf.hpp create mode 100644 libs/asio/include/boost/asio/basic_streambuf_fwd.hpp create mode 100644 libs/asio/include/boost/asio/basic_waitable_timer.hpp create mode 100644 libs/asio/include/boost/asio/bind_executor.hpp create mode 100644 libs/asio/include/boost/asio/buffer.hpp create mode 100644 libs/asio/include/boost/asio/buffered_read_stream.hpp create mode 100644 libs/asio/include/boost/asio/buffered_read_stream_fwd.hpp create mode 100644 libs/asio/include/boost/asio/buffered_stream.hpp create mode 100644 libs/asio/include/boost/asio/buffered_stream_fwd.hpp create mode 100644 libs/asio/include/boost/asio/buffered_write_stream.hpp create mode 100644 libs/asio/include/boost/asio/buffered_write_stream_fwd.hpp create mode 100644 libs/asio/include/boost/asio/buffers_iterator.hpp create mode 100644 libs/asio/include/boost/asio/co_spawn.hpp create mode 100644 libs/asio/include/boost/asio/completion_condition.hpp create mode 100644 libs/asio/include/boost/asio/compose.hpp create mode 100644 libs/asio/include/boost/asio/connect.hpp create mode 100644 libs/asio/include/boost/asio/coroutine.hpp create mode 100644 libs/asio/include/boost/asio/deadline_timer.hpp create mode 100644 libs/asio/include/boost/asio/defer.hpp create mode 100644 libs/asio/include/boost/asio/detached.hpp create mode 100644 libs/asio/include/boost/asio/detail/array.hpp create mode 100644 libs/asio/include/boost/asio/detail/array_fwd.hpp create mode 100644 libs/asio/include/boost/asio/detail/assert.hpp create mode 100644 libs/asio/include/boost/asio/detail/atomic_count.hpp create mode 100644 libs/asio/include/boost/asio/detail/base_from_completion_cond.hpp create mode 100644 libs/asio/include/boost/asio/detail/bind_handler.hpp create mode 100644 libs/asio/include/boost/asio/detail/blocking_executor_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/buffer_resize_guard.hpp create mode 100644 libs/asio/include/boost/asio/detail/buffer_sequence_adapter.hpp create mode 100644 libs/asio/include/boost/asio/detail/buffered_stream_storage.hpp create mode 100644 libs/asio/include/boost/asio/detail/bulk_executor_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/call_stack.hpp create mode 100644 libs/asio/include/boost/asio/detail/chrono.hpp create mode 100644 libs/asio/include/boost/asio/detail/chrono_time_traits.hpp create mode 100644 libs/asio/include/boost/asio/detail/completion_handler.hpp create mode 100644 libs/asio/include/boost/asio/detail/concurrency_hint.hpp create mode 100644 libs/asio/include/boost/asio/detail/conditionally_enabled_event.hpp create mode 100644 libs/asio/include/boost/asio/detail/conditionally_enabled_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/config.hpp create mode 100644 libs/asio/include/boost/asio/detail/consuming_buffers.hpp create mode 100644 libs/asio/include/boost/asio/detail/cstddef.hpp create mode 100644 libs/asio/include/boost/asio/detail/cstdint.hpp create mode 100644 libs/asio/include/boost/asio/detail/date_time_fwd.hpp create mode 100644 libs/asio/include/boost/asio/detail/deadline_timer_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/dependent_type.hpp create mode 100644 libs/asio/include/boost/asio/detail/descriptor_ops.hpp create mode 100644 libs/asio/include/boost/asio/detail/descriptor_read_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/descriptor_write_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/dev_poll_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/epoll_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/event.hpp create mode 100644 libs/asio/include/boost/asio/detail/eventfd_select_interrupter.hpp create mode 100644 libs/asio/include/boost/asio/detail/executor_function.hpp create mode 100644 libs/asio/include/boost/asio/detail/executor_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/fd_set_adapter.hpp create mode 100644 libs/asio/include/boost/asio/detail/fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/functional.hpp create mode 100644 libs/asio/include/boost/asio/detail/future.hpp create mode 100644 libs/asio/include/boost/asio/detail/gcc_arm_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/gcc_hppa_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/gcc_sync_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/gcc_x86_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/global.hpp create mode 100644 libs/asio/include/boost/asio/detail/handler_alloc_helpers.hpp create mode 100644 libs/asio/include/boost/asio/detail/handler_cont_helpers.hpp create mode 100644 libs/asio/include/boost/asio/detail/handler_invoke_helpers.hpp create mode 100644 libs/asio/include/boost/asio/detail/handler_tracking.hpp create mode 100644 libs/asio/include/boost/asio/detail/handler_type_requirements.hpp create mode 100644 libs/asio/include/boost/asio/detail/handler_work.hpp create mode 100644 libs/asio/include/boost/asio/detail/hash_map.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/buffer_sequence_adapter.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/descriptor_ops.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/dev_poll_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/dev_poll_reactor.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/epoll_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/epoll_reactor.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/eventfd_select_interrupter.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/handler_tracking.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/kqueue_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/kqueue_reactor.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/null_event.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/pipe_select_interrupter.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/posix_event.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/posix_mutex.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/posix_thread.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/posix_tss_ptr.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/reactive_descriptor_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/reactive_serial_port_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/reactive_socket_service_base.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/resolver_service_base.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/scheduler.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/select_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/select_reactor.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/service_registry.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/service_registry.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/signal_set_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/socket_ops.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/socket_select_interrupter.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/strand_executor_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/strand_executor_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/strand_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/strand_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/thread_context.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/throw_error.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/timer_queue_ptime.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/timer_queue_set.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_event.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_iocp_handle_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_iocp_io_context.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_iocp_io_context.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_iocp_serial_port_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_mutex.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_object_handle_service.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_static_mutex.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_thread.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/win_tss_ptr.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/winrt_ssocket_service_base.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/winrt_timer_scheduler.hpp create mode 100644 libs/asio/include/boost/asio/detail/impl/winrt_timer_scheduler.ipp create mode 100644 libs/asio/include/boost/asio/detail/impl/winsock_init.ipp create mode 100644 libs/asio/include/boost/asio/detail/io_control.hpp create mode 100644 libs/asio/include/boost/asio/detail/io_object_impl.hpp create mode 100644 libs/asio/include/boost/asio/detail/is_buffer_sequence.hpp create mode 100644 libs/asio/include/boost/asio/detail/is_executor.hpp create mode 100644 libs/asio/include/boost/asio/detail/keyword_tss_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/kqueue_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/limits.hpp create mode 100644 libs/asio/include/boost/asio/detail/local_free_on_block_exit.hpp create mode 100644 libs/asio/include/boost/asio/detail/macos_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/memory.hpp create mode 100644 libs/asio/include/boost/asio/detail/mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/non_const_lvalue.hpp create mode 100644 libs/asio/include/boost/asio/detail/noncopyable.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_event.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_global.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_signal_blocker.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_socket_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_static_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/null_tss_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/object_pool.hpp create mode 100644 libs/asio/include/boost/asio/detail/old_win_sdk_compat.hpp create mode 100644 libs/asio/include/boost/asio/detail/op_queue.hpp create mode 100644 libs/asio/include/boost/asio/detail/operation.hpp create mode 100644 libs/asio/include/boost/asio/detail/pipe_select_interrupter.hpp create mode 100644 libs/asio/include/boost/asio/detail/pop_options.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_event.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_fd_set_adapter.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_global.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_signal_blocker.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_static_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/posix_tss_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/push_options.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_descriptor_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_null_buffers_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_serial_port_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_accept_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_connect_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_recv_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_recvfrom_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_recvmsg_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_send_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_sendto_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_socket_service_base.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactive_wait_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactor_fwd.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactor_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/reactor_op_queue.hpp create mode 100644 libs/asio/include/boost/asio/detail/recycling_allocator.hpp create mode 100644 libs/asio/include/boost/asio/detail/regex_fwd.hpp create mode 100644 libs/asio/include/boost/asio/detail/resolve_endpoint_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/resolve_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/resolve_query_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/resolver_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/resolver_service_base.hpp create mode 100644 libs/asio/include/boost/asio/detail/scheduler.hpp create mode 100644 libs/asio/include/boost/asio/detail/scheduler_operation.hpp create mode 100644 libs/asio/include/boost/asio/detail/scheduler_thread_info.hpp create mode 100644 libs/asio/include/boost/asio/detail/scoped_lock.hpp create mode 100644 libs/asio/include/boost/asio/detail/scoped_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/select_interrupter.hpp create mode 100644 libs/asio/include/boost/asio/detail/select_reactor.hpp create mode 100644 libs/asio/include/boost/asio/detail/service_registry.hpp create mode 100644 libs/asio/include/boost/asio/detail/signal_blocker.hpp create mode 100644 libs/asio/include/boost/asio/detail/signal_handler.hpp create mode 100644 libs/asio/include/boost/asio/detail/signal_init.hpp create mode 100644 libs/asio/include/boost/asio/detail/signal_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/signal_set_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/socket_holder.hpp create mode 100644 libs/asio/include/boost/asio/detail/socket_ops.hpp create mode 100644 libs/asio/include/boost/asio/detail/socket_option.hpp create mode 100644 libs/asio/include/boost/asio/detail/socket_select_interrupter.hpp create mode 100644 libs/asio/include/boost/asio/detail/socket_types.hpp create mode 100644 libs/asio/include/boost/asio/detail/solaris_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/source_location.hpp create mode 100644 libs/asio/include/boost/asio/detail/static_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/std_event.hpp create mode 100644 libs/asio/include/boost/asio/detail/std_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/std_global.hpp create mode 100644 libs/asio/include/boost/asio/detail/std_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/std_static_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/std_thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/strand_executor_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/strand_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/string_view.hpp create mode 100644 libs/asio/include/boost/asio/detail/thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/thread_context.hpp create mode 100644 libs/asio/include/boost/asio/detail/thread_group.hpp create mode 100644 libs/asio/include/boost/asio/detail/thread_info_base.hpp create mode 100644 libs/asio/include/boost/asio/detail/throw_error.hpp create mode 100644 libs/asio/include/boost/asio/detail/throw_exception.hpp create mode 100644 libs/asio/include/boost/asio/detail/timer_queue.hpp create mode 100644 libs/asio/include/boost/asio/detail/timer_queue_base.hpp create mode 100644 libs/asio/include/boost/asio/detail/timer_queue_ptime.hpp create mode 100644 libs/asio/include/boost/asio/detail/timer_queue_set.hpp create mode 100644 libs/asio/include/boost/asio/detail/timer_scheduler.hpp create mode 100644 libs/asio/include/boost/asio/detail/timer_scheduler_fwd.hpp create mode 100644 libs/asio/include/boost/asio/detail/tss_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/type_traits.hpp create mode 100644 libs/asio/include/boost/asio/detail/variadic_templates.hpp create mode 100644 libs/asio/include/boost/asio/detail/wait_handler.hpp create mode 100644 libs/asio/include/boost/asio/detail/wait_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_event.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_fd_set_adapter.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_fenced_block.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_global.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_handle_read_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_handle_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_handle_write_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_io_context.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_null_buffers_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_operation.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_overlapped_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_overlapped_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_serial_port_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_accept_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_connect_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_recv_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_send_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_socket_service_base.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_thread_info.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_iocp_wait_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_object_handle_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_static_mutex.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/win_tss_ptr.hpp create mode 100644 libs/asio/include/boost/asio/detail/winapp_thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/wince_thread.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_async_manager.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_async_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_resolve_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_resolver_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_socket_connect_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_socket_recv_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_socket_send_op.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_ssocket_service.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_ssocket_service_base.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_timer_scheduler.hpp create mode 100644 libs/asio/include/boost/asio/detail/winrt_utils.hpp create mode 100644 libs/asio/include/boost/asio/detail/winsock_init.hpp create mode 100644 libs/asio/include/boost/asio/detail/work_dispatcher.hpp create mode 100644 libs/asio/include/boost/asio/detail/wrapped_handler.hpp create mode 100644 libs/asio/include/boost/asio/dispatch.hpp create mode 100644 libs/asio/include/boost/asio/error.hpp create mode 100644 libs/asio/include/boost/asio/execution.hpp create mode 100644 libs/asio/include/boost/asio/execution/allocator.hpp create mode 100644 libs/asio/include/boost/asio/execution/any_executor.hpp create mode 100644 libs/asio/include/boost/asio/execution/bad_executor.hpp create mode 100644 libs/asio/include/boost/asio/execution/blocking.hpp create mode 100644 libs/asio/include/boost/asio/execution/blocking_adaptation.hpp create mode 100644 libs/asio/include/boost/asio/execution/bulk_execute.hpp create mode 100644 libs/asio/include/boost/asio/execution/bulk_guarantee.hpp create mode 100644 libs/asio/include/boost/asio/execution/connect.hpp create mode 100644 libs/asio/include/boost/asio/execution/context.hpp create mode 100644 libs/asio/include/boost/asio/execution/context_as.hpp create mode 100644 libs/asio/include/boost/asio/execution/detail/as_invocable.hpp create mode 100644 libs/asio/include/boost/asio/execution/detail/as_operation.hpp create mode 100644 libs/asio/include/boost/asio/execution/detail/as_receiver.hpp create mode 100644 libs/asio/include/boost/asio/execution/detail/bulk_sender.hpp create mode 100644 libs/asio/include/boost/asio/execution/detail/submit_receiver.hpp create mode 100644 libs/asio/include/boost/asio/execution/detail/void_receiver.hpp create mode 100644 libs/asio/include/boost/asio/execution/execute.hpp create mode 100644 libs/asio/include/boost/asio/execution/executor.hpp create mode 100644 libs/asio/include/boost/asio/execution/impl/bad_executor.ipp create mode 100644 libs/asio/include/boost/asio/execution/impl/receiver_invocation_error.ipp create mode 100644 libs/asio/include/boost/asio/execution/invocable_archetype.hpp create mode 100644 libs/asio/include/boost/asio/execution/mapping.hpp create mode 100644 libs/asio/include/boost/asio/execution/occupancy.hpp create mode 100644 libs/asio/include/boost/asio/execution/operation_state.hpp create mode 100644 libs/asio/include/boost/asio/execution/outstanding_work.hpp create mode 100644 libs/asio/include/boost/asio/execution/prefer_only.hpp create mode 100644 libs/asio/include/boost/asio/execution/receiver.hpp create mode 100644 libs/asio/include/boost/asio/execution/receiver_invocation_error.hpp create mode 100644 libs/asio/include/boost/asio/execution/relationship.hpp create mode 100644 libs/asio/include/boost/asio/execution/schedule.hpp create mode 100644 libs/asio/include/boost/asio/execution/scheduler.hpp create mode 100644 libs/asio/include/boost/asio/execution/sender.hpp create mode 100644 libs/asio/include/boost/asio/execution/set_done.hpp create mode 100644 libs/asio/include/boost/asio/execution/set_error.hpp create mode 100644 libs/asio/include/boost/asio/execution/set_value.hpp create mode 100644 libs/asio/include/boost/asio/execution/start.hpp create mode 100644 libs/asio/include/boost/asio/execution/submit.hpp create mode 100644 libs/asio/include/boost/asio/execution_context.hpp create mode 100644 libs/asio/include/boost/asio/executor.hpp create mode 100644 libs/asio/include/boost/asio/executor_work_guard.hpp create mode 100644 libs/asio/include/boost/asio/experimental/as_single.hpp create mode 100644 libs/asio/include/boost/asio/experimental/impl/as_single.hpp create mode 100644 libs/asio/include/boost/asio/generic/basic_endpoint.hpp create mode 100644 libs/asio/include/boost/asio/generic/datagram_protocol.hpp create mode 100644 libs/asio/include/boost/asio/generic/detail/endpoint.hpp create mode 100644 libs/asio/include/boost/asio/generic/detail/impl/endpoint.ipp create mode 100644 libs/asio/include/boost/asio/generic/raw_protocol.hpp create mode 100644 libs/asio/include/boost/asio/generic/seq_packet_protocol.hpp create mode 100644 libs/asio/include/boost/asio/generic/stream_protocol.hpp create mode 100644 libs/asio/include/boost/asio/handler_alloc_hook.hpp create mode 100644 libs/asio/include/boost/asio/handler_continuation_hook.hpp create mode 100644 libs/asio/include/boost/asio/handler_invoke_hook.hpp create mode 100644 libs/asio/include/boost/asio/high_resolution_timer.hpp create mode 100644 libs/asio/include/boost/asio/impl/awaitable.hpp create mode 100644 libs/asio/include/boost/asio/impl/buffered_read_stream.hpp create mode 100644 libs/asio/include/boost/asio/impl/buffered_write_stream.hpp create mode 100644 libs/asio/include/boost/asio/impl/co_spawn.hpp create mode 100644 libs/asio/include/boost/asio/impl/compose.hpp create mode 100644 libs/asio/include/boost/asio/impl/connect.hpp create mode 100644 libs/asio/include/boost/asio/impl/defer.hpp create mode 100644 libs/asio/include/boost/asio/impl/detached.hpp create mode 100644 libs/asio/include/boost/asio/impl/dispatch.hpp create mode 100644 libs/asio/include/boost/asio/impl/error.ipp create mode 100644 libs/asio/include/boost/asio/impl/execution_context.hpp create mode 100644 libs/asio/include/boost/asio/impl/execution_context.ipp create mode 100644 libs/asio/include/boost/asio/impl/executor.hpp create mode 100644 libs/asio/include/boost/asio/impl/executor.ipp create mode 100644 libs/asio/include/boost/asio/impl/handler_alloc_hook.ipp create mode 100644 libs/asio/include/boost/asio/impl/io_context.hpp create mode 100644 libs/asio/include/boost/asio/impl/io_context.ipp create mode 100644 libs/asio/include/boost/asio/impl/multiple_exceptions.ipp create mode 100644 libs/asio/include/boost/asio/impl/post.hpp create mode 100644 libs/asio/include/boost/asio/impl/read.hpp create mode 100644 libs/asio/include/boost/asio/impl/read_at.hpp create mode 100644 libs/asio/include/boost/asio/impl/read_until.hpp create mode 100644 libs/asio/include/boost/asio/impl/redirect_error.hpp create mode 100644 libs/asio/include/boost/asio/impl/serial_port_base.hpp create mode 100644 libs/asio/include/boost/asio/impl/serial_port_base.ipp create mode 100644 libs/asio/include/boost/asio/impl/spawn.hpp create mode 100644 libs/asio/include/boost/asio/impl/src.hpp create mode 100644 libs/asio/include/boost/asio/impl/system_context.hpp create mode 100644 libs/asio/include/boost/asio/impl/system_context.ipp create mode 100644 libs/asio/include/boost/asio/impl/system_executor.hpp create mode 100644 libs/asio/include/boost/asio/impl/thread_pool.hpp create mode 100644 libs/asio/include/boost/asio/impl/thread_pool.ipp create mode 100644 libs/asio/include/boost/asio/impl/use_awaitable.hpp create mode 100644 libs/asio/include/boost/asio/impl/use_future.hpp create mode 100644 libs/asio/include/boost/asio/impl/write.hpp create mode 100644 libs/asio/include/boost/asio/impl/write_at.hpp create mode 100644 libs/asio/include/boost/asio/io_context.hpp create mode 100644 libs/asio/include/boost/asio/io_context_strand.hpp create mode 100644 libs/asio/include/boost/asio/io_service.hpp create mode 100644 libs/asio/include/boost/asio/io_service_strand.hpp create mode 100644 libs/asio/include/boost/asio/ip/address.hpp create mode 100644 libs/asio/include/boost/asio/ip/address_v4.hpp create mode 100644 libs/asio/include/boost/asio/ip/address_v4_iterator.hpp create mode 100644 libs/asio/include/boost/asio/ip/address_v4_range.hpp create mode 100644 libs/asio/include/boost/asio/ip/address_v6.hpp create mode 100644 libs/asio/include/boost/asio/ip/address_v6_iterator.hpp create mode 100644 libs/asio/include/boost/asio/ip/address_v6_range.hpp create mode 100644 libs/asio/include/boost/asio/ip/bad_address_cast.hpp create mode 100644 libs/asio/include/boost/asio/ip/basic_endpoint.hpp create mode 100644 libs/asio/include/boost/asio/ip/basic_resolver.hpp create mode 100644 libs/asio/include/boost/asio/ip/basic_resolver_entry.hpp create mode 100644 libs/asio/include/boost/asio/ip/basic_resolver_iterator.hpp create mode 100644 libs/asio/include/boost/asio/ip/basic_resolver_query.hpp create mode 100644 libs/asio/include/boost/asio/ip/basic_resolver_results.hpp create mode 100644 libs/asio/include/boost/asio/ip/detail/endpoint.hpp create mode 100644 libs/asio/include/boost/asio/ip/detail/impl/endpoint.ipp create mode 100644 libs/asio/include/boost/asio/ip/detail/socket_option.hpp create mode 100644 libs/asio/include/boost/asio/ip/host_name.hpp create mode 100644 libs/asio/include/boost/asio/ip/icmp.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/address.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/address.ipp create mode 100644 libs/asio/include/boost/asio/ip/impl/address_v4.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/address_v4.ipp create mode 100644 libs/asio/include/boost/asio/ip/impl/address_v6.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/address_v6.ipp create mode 100644 libs/asio/include/boost/asio/ip/impl/basic_endpoint.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/host_name.ipp create mode 100644 libs/asio/include/boost/asio/ip/impl/network_v4.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/network_v4.ipp create mode 100644 libs/asio/include/boost/asio/ip/impl/network_v6.hpp create mode 100644 libs/asio/include/boost/asio/ip/impl/network_v6.ipp create mode 100644 libs/asio/include/boost/asio/ip/multicast.hpp create mode 100644 libs/asio/include/boost/asio/ip/network_v4.hpp create mode 100644 libs/asio/include/boost/asio/ip/network_v6.hpp create mode 100644 libs/asio/include/boost/asio/ip/resolver_base.hpp create mode 100644 libs/asio/include/boost/asio/ip/resolver_query_base.hpp create mode 100644 libs/asio/include/boost/asio/ip/tcp.hpp create mode 100644 libs/asio/include/boost/asio/ip/udp.hpp create mode 100644 libs/asio/include/boost/asio/ip/unicast.hpp create mode 100644 libs/asio/include/boost/asio/ip/v6_only.hpp create mode 100644 libs/asio/include/boost/asio/is_applicable_property.hpp create mode 100644 libs/asio/include/boost/asio/is_executor.hpp create mode 100644 libs/asio/include/boost/asio/is_read_buffered.hpp create mode 100644 libs/asio/include/boost/asio/is_write_buffered.hpp create mode 100644 libs/asio/include/boost/asio/local/basic_endpoint.hpp create mode 100644 libs/asio/include/boost/asio/local/connect_pair.hpp create mode 100644 libs/asio/include/boost/asio/local/datagram_protocol.hpp create mode 100644 libs/asio/include/boost/asio/local/detail/endpoint.hpp create mode 100644 libs/asio/include/boost/asio/local/detail/impl/endpoint.ipp create mode 100644 libs/asio/include/boost/asio/local/stream_protocol.hpp create mode 100644 libs/asio/include/boost/asio/multiple_exceptions.hpp create mode 100644 libs/asio/include/boost/asio/packaged_task.hpp create mode 100644 libs/asio/include/boost/asio/placeholders.hpp create mode 100644 libs/asio/include/boost/asio/posix/basic_descriptor.hpp create mode 100644 libs/asio/include/boost/asio/posix/basic_stream_descriptor.hpp create mode 100644 libs/asio/include/boost/asio/posix/descriptor.hpp create mode 100644 libs/asio/include/boost/asio/posix/descriptor_base.hpp create mode 100644 libs/asio/include/boost/asio/posix/stream_descriptor.hpp create mode 100644 libs/asio/include/boost/asio/post.hpp create mode 100644 libs/asio/include/boost/asio/prefer.hpp create mode 100644 libs/asio/include/boost/asio/query.hpp create mode 100644 libs/asio/include/boost/asio/read.hpp create mode 100644 libs/asio/include/boost/asio/read_at.hpp create mode 100644 libs/asio/include/boost/asio/read_until.hpp create mode 100644 libs/asio/include/boost/asio/redirect_error.hpp create mode 100644 libs/asio/include/boost/asio/require.hpp create mode 100644 libs/asio/include/boost/asio/require_concept.hpp create mode 100644 libs/asio/include/boost/asio/serial_port.hpp create mode 100644 libs/asio/include/boost/asio/serial_port_base.hpp create mode 100644 libs/asio/include/boost/asio/signal_set.hpp create mode 100644 libs/asio/include/boost/asio/socket_base.hpp create mode 100644 libs/asio/include/boost/asio/spawn.hpp create mode 100644 libs/asio/include/boost/asio/ssl.hpp create mode 100644 libs/asio/include/boost/asio/ssl/context.hpp create mode 100644 libs/asio/include/boost/asio/ssl/context_base.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/buffered_handshake_op.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/engine.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/handshake_op.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/impl/engine.ipp create mode 100644 libs/asio/include/boost/asio/ssl/detail/impl/openssl_init.ipp create mode 100644 libs/asio/include/boost/asio/ssl/detail/io.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/openssl_init.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/openssl_types.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/password_callback.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/read_op.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/shutdown_op.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/stream_core.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/verify_callback.hpp create mode 100644 libs/asio/include/boost/asio/ssl/detail/write_op.hpp create mode 100644 libs/asio/include/boost/asio/ssl/error.hpp create mode 100644 libs/asio/include/boost/asio/ssl/host_name_verification.hpp create mode 100644 libs/asio/include/boost/asio/ssl/impl/context.hpp create mode 100644 libs/asio/include/boost/asio/ssl/impl/context.ipp create mode 100644 libs/asio/include/boost/asio/ssl/impl/error.ipp create mode 100644 libs/asio/include/boost/asio/ssl/impl/host_name_verification.ipp create mode 100644 libs/asio/include/boost/asio/ssl/impl/rfc2818_verification.ipp create mode 100644 libs/asio/include/boost/asio/ssl/impl/src.hpp create mode 100644 libs/asio/include/boost/asio/ssl/rfc2818_verification.hpp create mode 100644 libs/asio/include/boost/asio/ssl/stream.hpp create mode 100644 libs/asio/include/boost/asio/ssl/stream_base.hpp create mode 100644 libs/asio/include/boost/asio/ssl/verify_context.hpp create mode 100644 libs/asio/include/boost/asio/ssl/verify_mode.hpp create mode 100644 libs/asio/include/boost/asio/static_thread_pool.hpp create mode 100644 libs/asio/include/boost/asio/steady_timer.hpp create mode 100644 libs/asio/include/boost/asio/strand.hpp create mode 100644 libs/asio/include/boost/asio/streambuf.hpp create mode 100644 libs/asio/include/boost/asio/system_context.hpp create mode 100644 libs/asio/include/boost/asio/system_executor.hpp create mode 100644 libs/asio/include/boost/asio/system_timer.hpp create mode 100644 libs/asio/include/boost/asio/this_coro.hpp create mode 100644 libs/asio/include/boost/asio/thread_pool.hpp create mode 100644 libs/asio/include/boost/asio/time_traits.hpp create mode 100644 libs/asio/include/boost/asio/traits/bulk_execute_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/bulk_execute_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/connect_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/connect_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/equality_comparable.hpp create mode 100644 libs/asio/include/boost/asio/traits/execute_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/execute_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/prefer_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/prefer_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/query_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/query_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/query_static_constexpr_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/require_concept_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/require_concept_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/require_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/require_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/schedule_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/schedule_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/set_done_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/set_done_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/set_error_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/set_error_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/set_value_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/set_value_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/start_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/start_member.hpp create mode 100644 libs/asio/include/boost/asio/traits/static_query.hpp create mode 100644 libs/asio/include/boost/asio/traits/static_require.hpp create mode 100644 libs/asio/include/boost/asio/traits/static_require_concept.hpp create mode 100644 libs/asio/include/boost/asio/traits/submit_free.hpp create mode 100644 libs/asio/include/boost/asio/traits/submit_member.hpp create mode 100644 libs/asio/include/boost/asio/ts/buffer.hpp create mode 100644 libs/asio/include/boost/asio/ts/executor.hpp create mode 100644 libs/asio/include/boost/asio/ts/internet.hpp create mode 100644 libs/asio/include/boost/asio/ts/io_context.hpp create mode 100644 libs/asio/include/boost/asio/ts/net.hpp create mode 100644 libs/asio/include/boost/asio/ts/netfwd.hpp create mode 100644 libs/asio/include/boost/asio/ts/socket.hpp create mode 100644 libs/asio/include/boost/asio/ts/timer.hpp create mode 100644 libs/asio/include/boost/asio/unyield.hpp create mode 100644 libs/asio/include/boost/asio/use_awaitable.hpp create mode 100644 libs/asio/include/boost/asio/use_future.hpp create mode 100644 libs/asio/include/boost/asio/uses_executor.hpp create mode 100644 libs/asio/include/boost/asio/version.hpp create mode 100644 libs/asio/include/boost/asio/wait_traits.hpp create mode 100644 libs/asio/include/boost/asio/windows/basic_object_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/basic_overlapped_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/basic_random_access_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/basic_stream_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/object_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/overlapped_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/overlapped_ptr.hpp create mode 100644 libs/asio/include/boost/asio/windows/random_access_handle.hpp create mode 100644 libs/asio/include/boost/asio/windows/stream_handle.hpp create mode 100644 libs/asio/include/boost/asio/write.hpp create mode 100644 libs/asio/include/boost/asio/write_at.hpp create mode 100644 libs/asio/include/boost/asio/yield.hpp mode change 100755 => 100644 libs/asio/index.html mode change 100755 => 100644 libs/asio/meta/libraries.json mode change 100755 => 100644 libs/asio/test/Jamfile.v2 mode change 100755 => 100644 libs/asio/test/archetypes/async_ops.hpp mode change 100755 => 100644 libs/asio/test/archetypes/async_result.hpp mode change 100755 => 100644 libs/asio/test/archetypes/gettable_socket_option.hpp mode change 100755 => 100644 libs/asio/test/archetypes/io_control_command.hpp mode change 100755 => 100644 libs/asio/test/archetypes/settable_socket_option.hpp mode change 100755 => 100644 libs/asio/test/associated_allocator.cpp mode change 100755 => 100644 libs/asio/test/associated_executor.cpp mode change 100755 => 100644 libs/asio/test/async_result.cpp mode change 100755 => 100644 libs/asio/test/awaitable.cpp mode change 100755 => 100644 libs/asio/test/basic_datagram_socket.cpp mode change 100755 => 100644 libs/asio/test/basic_deadline_timer.cpp mode change 100755 => 100644 libs/asio/test/basic_raw_socket.cpp mode change 100755 => 100644 libs/asio/test/basic_seq_packet_socket.cpp mode change 100755 => 100644 libs/asio/test/basic_serial_port.cpp mode change 100755 => 100644 libs/asio/test/basic_signal_set.cpp mode change 100755 => 100644 libs/asio/test/basic_socket.cpp mode change 100755 => 100644 libs/asio/test/basic_socket_acceptor.cpp mode change 100755 => 100644 libs/asio/test/basic_stream_socket.cpp mode change 100755 => 100644 libs/asio/test/basic_streambuf.cpp mode change 100755 => 100644 libs/asio/test/basic_waitable_timer.cpp mode change 100755 => 100644 libs/asio/test/bind_executor.cpp mode change 100755 => 100644 libs/asio/test/buffer.cpp mode change 100755 => 100644 libs/asio/test/buffered_read_stream.cpp mode change 100755 => 100644 libs/asio/test/buffered_stream.cpp mode change 100755 => 100644 libs/asio/test/buffered_write_stream.cpp mode change 100755 => 100644 libs/asio/test/buffers_iterator.cpp mode change 100755 => 100644 libs/asio/test/co_spawn.cpp mode change 100755 => 100644 libs/asio/test/completion_condition.cpp mode change 100755 => 100644 libs/asio/test/compose.cpp mode change 100755 => 100644 libs/asio/test/connect.cpp mode change 100755 => 100644 libs/asio/test/coroutine.cpp mode change 100755 => 100644 libs/asio/test/deadline_timer.cpp mode change 100755 => 100644 libs/asio/test/defer.cpp mode change 100755 => 100644 libs/asio/test/detached.cpp mode change 100755 => 100644 libs/asio/test/dispatch.cpp mode change 100755 => 100644 libs/asio/test/error.cpp mode change 100755 => 100644 libs/asio/test/execution_context.cpp mode change 100755 => 100644 libs/asio/test/executor.cpp mode change 100755 => 100644 libs/asio/test/executor_work_guard.cpp mode change 100755 => 100644 libs/asio/test/generic/basic_endpoint.cpp mode change 100755 => 100644 libs/asio/test/generic/datagram_protocol.cpp mode change 100755 => 100644 libs/asio/test/generic/raw_protocol.cpp mode change 100755 => 100644 libs/asio/test/generic/seq_packet_protocol.cpp mode change 100755 => 100644 libs/asio/test/generic/stream_protocol.cpp mode change 100755 => 100644 libs/asio/test/high_resolution_timer.cpp mode change 100755 => 100644 libs/asio/test/io_context.cpp mode change 100755 => 100644 libs/asio/test/io_context_strand.cpp mode change 100755 => 100644 libs/asio/test/ip/address.cpp mode change 100755 => 100644 libs/asio/test/ip/address_v4.cpp mode change 100755 => 100644 libs/asio/test/ip/address_v4_iterator.cpp mode change 100755 => 100644 libs/asio/test/ip/address_v4_range.cpp mode change 100755 => 100644 libs/asio/test/ip/address_v6.cpp mode change 100755 => 100644 libs/asio/test/ip/address_v6_iterator.cpp mode change 100755 => 100644 libs/asio/test/ip/address_v6_range.cpp mode change 100755 => 100644 libs/asio/test/ip/basic_endpoint.cpp mode change 100755 => 100644 libs/asio/test/ip/basic_resolver.cpp mode change 100755 => 100644 libs/asio/test/ip/basic_resolver_entry.cpp mode change 100755 => 100644 libs/asio/test/ip/basic_resolver_iterator.cpp mode change 100755 => 100644 libs/asio/test/ip/basic_resolver_query.cpp mode change 100755 => 100644 libs/asio/test/ip/host_name.cpp mode change 100755 => 100644 libs/asio/test/ip/icmp.cpp mode change 100755 => 100644 libs/asio/test/ip/multicast.cpp mode change 100755 => 100644 libs/asio/test/ip/network_v4.cpp mode change 100755 => 100644 libs/asio/test/ip/network_v6.cpp mode change 100755 => 100644 libs/asio/test/ip/resolver_query_base.cpp mode change 100755 => 100644 libs/asio/test/ip/tcp.cpp mode change 100755 => 100644 libs/asio/test/ip/udp.cpp mode change 100755 => 100644 libs/asio/test/ip/unicast.cpp mode change 100755 => 100644 libs/asio/test/ip/v6_only.cpp mode change 100755 => 100644 libs/asio/test/is_read_buffered.cpp mode change 100755 => 100644 libs/asio/test/is_write_buffered.cpp mode change 100755 => 100644 libs/asio/test/latency/Jamfile.v2 mode change 100755 => 100644 libs/asio/test/latency/allocator.hpp mode change 100755 => 100644 libs/asio/test/latency/high_res_clock.hpp mode change 100755 => 100644 libs/asio/test/latency/tcp_client.cpp mode change 100755 => 100644 libs/asio/test/latency/tcp_server.cpp mode change 100755 => 100644 libs/asio/test/latency/udp_client.cpp mode change 100755 => 100644 libs/asio/test/latency/udp_server.cpp mode change 100755 => 100644 libs/asio/test/local/basic_endpoint.cpp mode change 100755 => 100644 libs/asio/test/local/connect_pair.cpp mode change 100755 => 100644 libs/asio/test/local/datagram_protocol.cpp mode change 100755 => 100644 libs/asio/test/local/stream_protocol.cpp mode change 100755 => 100644 libs/asio/test/packaged_task.cpp mode change 100755 => 100644 libs/asio/test/placeholders.cpp mode change 100755 => 100644 libs/asio/test/posix/basic_descriptor.cpp mode change 100755 => 100644 libs/asio/test/posix/basic_stream_descriptor.cpp mode change 100755 => 100644 libs/asio/test/posix/descriptor.cpp mode change 100755 => 100644 libs/asio/test/posix/descriptor_base.cpp mode change 100755 => 100644 libs/asio/test/posix/stream_descriptor.cpp mode change 100755 => 100644 libs/asio/test/post.cpp mode change 100755 => 100644 libs/asio/test/read.cpp mode change 100755 => 100644 libs/asio/test/read_at.cpp mode change 100755 => 100644 libs/asio/test/read_until.cpp mode change 100755 => 100644 libs/asio/test/redirect_error.cpp mode change 100755 => 100644 libs/asio/test/serial_port.cpp mode change 100755 => 100644 libs/asio/test/serial_port_base.cpp mode change 100755 => 100644 libs/asio/test/signal_set.cpp mode change 100755 => 100644 libs/asio/test/socket_base.cpp mode change 100755 => 100644 libs/asio/test/ssl/Jamfile.v2 mode change 100755 => 100644 libs/asio/test/ssl/context.cpp mode change 100755 => 100644 libs/asio/test/ssl/context_base.cpp mode change 100755 => 100644 libs/asio/test/ssl/error.cpp mode change 100755 => 100644 libs/asio/test/ssl/rfc2818_verification.cpp mode change 100755 => 100644 libs/asio/test/ssl/stream.cpp mode change 100755 => 100644 libs/asio/test/ssl/stream_base.cpp mode change 100755 => 100644 libs/asio/test/steady_timer.cpp mode change 100755 => 100644 libs/asio/test/strand.cpp mode change 100755 => 100644 libs/asio/test/streambuf.cpp mode change 100755 => 100644 libs/asio/test/system_context.cpp mode change 100755 => 100644 libs/asio/test/system_executor.cpp mode change 100755 => 100644 libs/asio/test/system_timer.cpp mode change 100755 => 100644 libs/asio/test/this_coro.cpp mode change 100755 => 100644 libs/asio/test/time_traits.cpp mode change 100755 => 100644 libs/asio/test/ts/buffer.cpp mode change 100755 => 100644 libs/asio/test/ts/executor.cpp mode change 100755 => 100644 libs/asio/test/ts/internet.cpp mode change 100755 => 100644 libs/asio/test/ts/io_context.cpp mode change 100755 => 100644 libs/asio/test/ts/net.cpp mode change 100755 => 100644 libs/asio/test/ts/netfwd.cpp mode change 100755 => 100644 libs/asio/test/ts/socket.cpp mode change 100755 => 100644 libs/asio/test/ts/timer.cpp mode change 100755 => 100644 libs/asio/test/unit_test.hpp mode change 100755 => 100644 libs/asio/test/use_awaitable.cpp mode change 100755 => 100644 libs/asio/test/use_future.cpp mode change 100755 => 100644 libs/asio/test/uses_executor.cpp mode change 100755 => 100644 libs/asio/test/wait_traits.cpp mode change 100755 => 100644 libs/asio/test/windows/basic_object_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/basic_overlapped_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/basic_random_access_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/basic_stream_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/object_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/overlapped_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/overlapped_ptr.cpp mode change 100755 => 100644 libs/asio/test/windows/random_access_handle.cpp mode change 100755 => 100644 libs/asio/test/windows/stream_handle.cpp mode change 100755 => 100644 libs/asio/test/write.cpp mode change 100755 => 100644 libs/asio/test/write_at.cpp mode change 100755 => 100644 libs/beast/CHANGELOG.md mode change 100755 => 100644 libs/beast/CMakeLists.txt mode change 100755 => 100644 libs/beast/CONTRIBUTING.md mode change 100755 => 100644 libs/beast/Jamfile mode change 100755 => 100644 libs/beast/LICENSE_1_0.txt mode change 100755 => 100644 libs/beast/README.md create mode 100644 libs/beast/appveyor.yml mode change 100755 => 100644 libs/beast/azure-pipelines.yml create mode 100644 libs/beast/doc/.gitignore mode change 100755 => 100644 libs/beast/doc/Jamfile mode change 100755 => 100644 libs/beast/doc/images/message.png mode change 100755 => 100644 libs/beast/doc/images/readme2.png mode change 100755 => 100644 libs/beast/doc/qbk/01_intro/1_quick_look.qbk mode change 100755 => 100644 libs/beast/doc/qbk/01_intro/1a_bishop_fox.qbk mode change 100755 => 100644 libs/beast/doc/qbk/01_intro/1b_autobahn.qbk mode change 100755 => 100644 libs/beast/doc/qbk/01_intro/_intro.qbk mode change 100755 => 100644 libs/beast/doc/qbk/02_examples/_examples.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/1_refresher.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/2_streams.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/3_timeouts.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/4__layers.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/5_buffers.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/6_files.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/7_composed.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/7a_echo.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/7b_detect_ssl.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/8_conf_macros.qbk mode change 100755 => 100644 libs/beast/doc/qbk/03_core/_core.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/01_primer.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/02_message.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/03_streams.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/04_serializer_streams.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/05_parser_streams.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/06_serializer_buffers.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/07_parser_buffers.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/08_chunked_encoding.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/09_custom_body.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/10_custom_parsers.qbk mode change 100755 => 100644 libs/beast/doc/qbk/04_http/_http.qbk mode change 100755 => 100644 libs/beast/doc/qbk/05_http_examples/_http_examples.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/01_connecting.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/02_handshaking.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/03_decorator.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/04_messages.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/05_control_frames.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/06_timeouts.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/07_teardown.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/08_notes.qbk mode change 100755 => 100644 libs/beast/doc/qbk/06_websocket/_websocket.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/Body.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/BodyReader.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/BodyWriter.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/BufferSequence.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/DynamicBuffer.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/Fields.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/FieldsWriter.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/File.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/RatePolicy.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/Streams.qbk mode change 100755 => 100644 libs/beast/doc/qbk/07_concepts/_concepts.qbk mode change 100755 => 100644 libs/beast/doc/qbk/08_design/1_http_message.qbk mode change 100755 => 100644 libs/beast/doc/qbk/08_design/2_http_comparison.qbk mode change 100755 => 100644 libs/beast/doc/qbk/08_design/3_websocket_zaphoyd.qbk mode change 100755 => 100644 libs/beast/doc/qbk/08_design/4_faq.qbk mode change 100755 => 100644 libs/beast/doc/qbk/08_design/_design.qbk mode change 100755 => 100644 libs/beast/doc/qbk/index.xml mode change 100755 => 100644 libs/beast/doc/qbk/main.qbk mode change 100755 => 100644 libs/beast/doc/qbk/quickref.xml mode change 100755 => 100644 libs/beast/doc/qbk/release_notes.qbk mode change 100755 => 100644 libs/beast/doc/source.dox create mode 100644 libs/beast/doc/xsl/custom-overrides.xsl mode change 100755 => 100644 libs/beast/example/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/Jamfile mode change 100755 => 100644 libs/beast/example/advanced/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/advanced/Jamfile mode change 100755 => 100644 libs/beast/example/advanced/server-flex/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/advanced/server-flex/Jamfile mode change 100755 => 100644 libs/beast/example/advanced/server-flex/advanced_server_flex.cpp mode change 100755 => 100644 libs/beast/example/advanced/server/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/advanced/server/Jamfile mode change 100755 => 100644 libs/beast/example/advanced/server/advanced_server.cpp mode change 100755 => 100644 libs/beast/example/common/root_certificates.hpp mode change 100755 => 100644 libs/beast/example/common/server_certificate.hpp mode change 100755 => 100644 libs/beast/example/doc/http_examples.hpp mode change 100755 => 100644 libs/beast/example/echo-op/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/echo-op/Jamfile mode change 100755 => 100644 libs/beast/example/echo-op/echo_op.cpp mode change 100755 => 100644 libs/beast/example/http/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/async-ssl-system-executor/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/async-ssl-system-executor/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/async-ssl-system-executor/http_client_async_ssl_system_executor.cpp mode change 100755 => 100644 libs/beast/example/http/client/async-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/async-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/async-ssl/http_client_async_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/client/async/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/async/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/async/http_client_async.cpp mode change 100755 => 100644 libs/beast/example/http/client/coro-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/coro-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/coro-ssl/http_client_coro_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/client/coro/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/coro/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/coro/http_client_coro.cpp mode change 100755 => 100644 libs/beast/example/http/client/crawl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/crawl/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/crawl/http_crawl.cpp mode change 100755 => 100644 libs/beast/example/http/client/crawl/urls_large_data.cpp mode change 100755 => 100644 libs/beast/example/http/client/crawl/urls_large_data.hpp mode change 100755 => 100644 libs/beast/example/http/client/sync-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/sync-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/sync-ssl/http_client_sync_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/client/sync/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/client/sync/Jamfile mode change 100755 => 100644 libs/beast/example/http/client/sync/http_client_sync.cpp mode change 100755 => 100644 libs/beast/example/http/server/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/async-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/async-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/async-ssl/http_server_async_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/server/async/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/async/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/async/http_server_async.cpp mode change 100755 => 100644 libs/beast/example/http/server/coro-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/coro-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/coro-ssl/http_server_coro_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/server/coro/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/coro/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/coro/http_server_coro.cpp mode change 100755 => 100644 libs/beast/example/http/server/fast/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/fast/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/fast/fields_alloc.hpp mode change 100755 => 100644 libs/beast/example/http/server/fast/http_server_fast.cpp mode change 100755 => 100644 libs/beast/example/http/server/flex/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/flex/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/flex/http_server_flex.cpp mode change 100755 => 100644 libs/beast/example/http/server/small/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/small/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/small/http_server_small.cpp mode change 100755 => 100644 libs/beast/example/http/server/stackless-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/stackless-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/stackless-ssl/http_server_stackless_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/server/stackless/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/stackless/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/stackless/http_server_stackless.cpp mode change 100755 => 100644 libs/beast/example/http/server/sync-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/sync-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/sync-ssl/http_server_sync_ssl.cpp mode change 100755 => 100644 libs/beast/example/http/server/sync/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/http/server/sync/Jamfile mode change 100755 => 100644 libs/beast/example/http/server/sync/http_server_sync.cpp mode change 100755 => 100644 libs/beast/example/websocket/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/async-ssl-system-executor/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/async-ssl-system-executor/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/async-ssl-system-executor/websocket_client_async_ssl_system_executor.cpp mode change 100755 => 100644 libs/beast/example/websocket/client/async-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/async-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/async-ssl/websocket_client_async_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/client/async/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/async/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/async/websocket_client_async.cpp mode change 100755 => 100644 libs/beast/example/websocket/client/coro-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/coro-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/coro-ssl/websocket_client_coro_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/client/coro/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/coro/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/coro/websocket_client_coro.cpp mode change 100755 => 100644 libs/beast/example/websocket/client/sync-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/sync-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/sync-ssl/websocket_client_sync_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/client/sync/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/client/sync/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/client/sync/websocket_client_sync.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/async-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/async-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/async-ssl/websocket_server_async_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/async/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/async/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/async/websocket_server_async.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/beast.hpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/chat_client.html mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/http_session.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/http_session.hpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/listener.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/listener.hpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/main.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/net.hpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/shared_state.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/shared_state.hpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/websocket_session.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/chat-multi/websocket_session.hpp mode change 100755 => 100644 libs/beast/example/websocket/server/coro-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/coro-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/coro-ssl/websocket_server_coro_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/coro/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/coro/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/coro/websocket_server_coro.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/fast/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/fast/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/fast/websocket_server_fast.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/stackless-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/stackless-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/stackless-ssl/websocket_server_stackless_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/stackless/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/stackless/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/stackless/websocket_server_stackless.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/sync-ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/sync-ssl/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/sync-ssl/websocket_server_sync_ssl.cpp mode change 100755 => 100644 libs/beast/example/websocket/server/sync/CMakeLists.txt mode change 100755 => 100644 libs/beast/example/websocket/server/sync/Jamfile mode change 100755 => 100644 libs/beast/example/websocket/server/sync/websocket_server_sync.cpp create mode 100644 libs/beast/include/boost/beast.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/http/icy_stream.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/http/impl/icy_stream.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/detail/stream_state.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/detail/stream_state.ipp create mode 100644 libs/beast/include/boost/beast/_experimental/test/error.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/fail_count.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/handler.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/impl/error.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/impl/error.ipp create mode 100644 libs/beast/include/boost/beast/_experimental/test/impl/fail_count.ipp create mode 100644 libs/beast/include/boost/beast/_experimental/test/impl/stream.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/impl/stream.ipp create mode 100644 libs/beast/include/boost/beast/_experimental/test/stream.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/test/tcp.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/amount.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/detail/const_container.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/dstream.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/global_suites.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/main.ipp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/match.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/recorder.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/reporter.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/results.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/runner.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/suite.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/suite_info.hpp create mode 100644 libs/beast/include/boost/beast/_experimental/unit_test/suite_list.hpp create mode 100644 libs/beast/include/boost/beast/core.hpp create mode 100644 libs/beast/include/boost/beast/core/async_base.hpp create mode 100644 libs/beast/include/boost/beast/core/basic_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/bind_handler.hpp create mode 100644 libs/beast/include/boost/beast/core/buffer_traits.hpp create mode 100644 libs/beast/include/boost/beast/core/buffered_read_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/buffers_adaptor.hpp create mode 100644 libs/beast/include/boost/beast/core/buffers_cat.hpp create mode 100644 libs/beast/include/boost/beast/core/buffers_prefix.hpp create mode 100644 libs/beast/include/boost/beast/core/buffers_range.hpp create mode 100644 libs/beast/include/boost/beast/core/buffers_suffix.hpp create mode 100644 libs/beast/include/boost/beast/core/buffers_to_string.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/allocator.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/async_base.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/base64.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/base64.ipp create mode 100644 libs/beast/include/boost/beast/core/detail/bind_continuation.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/bind_default_executor.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/bind_handler.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/buffer_traits.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/buffers_pair.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/buffers_range_adaptor.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/buffers_ref.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/chacha.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/char_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/clamp.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/config.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/cpu_info.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/flat_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/get_io_context.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/impl/read.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/impl/temporary_buffer.ipp create mode 100644 libs/beast/include/boost/beast/core/detail/is_invocable.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/ostream.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/pcg.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/read.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/remap_post_to_defer.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/service_base.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/sha1.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/sha1.ipp create mode 100644 libs/beast/include/boost/beast/core/detail/static_const.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/static_ostream.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/static_string.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/stream_base.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/stream_traits.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/string.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/temporary_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/tuple.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/type_traits.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/variant.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/varint.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/win32_unicode_path.hpp create mode 100644 libs/beast/include/boost/beast/core/detail/work_guard.hpp create mode 100644 libs/beast/include/boost/beast/core/detect_ssl.hpp create mode 100644 libs/beast/include/boost/beast/core/error.hpp create mode 100644 libs/beast/include/boost/beast/core/file.hpp create mode 100644 libs/beast/include/boost/beast/core/file_base.hpp create mode 100644 libs/beast/include/boost/beast/core/file_posix.hpp create mode 100644 libs/beast/include/boost/beast/core/file_stdio.hpp create mode 100644 libs/beast/include/boost/beast/core/file_win32.hpp create mode 100644 libs/beast/include/boost/beast/core/flat_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/flat_static_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/flat_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/async_base.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/basic_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/buffered_read_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/buffers_adaptor.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/buffers_cat.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/buffers_prefix.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/buffers_suffix.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/error.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/error.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/file_posix.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/file_stdio.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/file_win32.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/flat_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/flat_static_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/flat_static_buffer.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/flat_stream.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/multi_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/read_size.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/saved_handler.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/saved_handler.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/static_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/static_buffer.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/static_string.hpp create mode 100644 libs/beast/include/boost/beast/core/impl/string.ipp create mode 100644 libs/beast/include/boost/beast/core/impl/string_param.hpp create mode 100644 libs/beast/include/boost/beast/core/make_printable.hpp create mode 100644 libs/beast/include/boost/beast/core/multi_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/ostream.hpp create mode 100644 libs/beast/include/boost/beast/core/rate_policy.hpp create mode 100644 libs/beast/include/boost/beast/core/read_size.hpp create mode 100644 libs/beast/include/boost/beast/core/role.hpp create mode 100644 libs/beast/include/boost/beast/core/saved_handler.hpp create mode 100644 libs/beast/include/boost/beast/core/span.hpp create mode 100644 libs/beast/include/boost/beast/core/static_buffer.hpp create mode 100644 libs/beast/include/boost/beast/core/static_string.hpp create mode 100644 libs/beast/include/boost/beast/core/stream_traits.hpp create mode 100644 libs/beast/include/boost/beast/core/string.hpp create mode 100644 libs/beast/include/boost/beast/core/string_param.hpp create mode 100644 libs/beast/include/boost/beast/core/string_type.hpp create mode 100644 libs/beast/include/boost/beast/core/tcp_stream.hpp create mode 100644 libs/beast/include/boost/beast/http.hpp create mode 100644 libs/beast/include/boost/beast/http/basic_dynamic_body.hpp create mode 100644 libs/beast/include/boost/beast/http/basic_file_body.hpp create mode 100644 libs/beast/include/boost/beast/http/basic_parser.hpp create mode 100644 libs/beast/include/boost/beast/http/buffer_body.hpp create mode 100644 libs/beast/include/boost/beast/http/chunk_encode.hpp create mode 100644 libs/beast/include/boost/beast/http/detail/basic_parsed_list.hpp create mode 100644 libs/beast/include/boost/beast/http/detail/basic_parser.hpp create mode 100644 libs/beast/include/boost/beast/http/detail/basic_parser.ipp create mode 100644 libs/beast/include/boost/beast/http/detail/chunk_encode.hpp create mode 100644 libs/beast/include/boost/beast/http/detail/rfc7230.hpp create mode 100644 libs/beast/include/boost/beast/http/detail/rfc7230.ipp create mode 100644 libs/beast/include/boost/beast/http/detail/type_traits.hpp create mode 100644 libs/beast/include/boost/beast/http/dynamic_body.hpp create mode 100644 libs/beast/include/boost/beast/http/empty_body.hpp create mode 100644 libs/beast/include/boost/beast/http/error.hpp create mode 100644 libs/beast/include/boost/beast/http/field.hpp create mode 100644 libs/beast/include/boost/beast/http/fields.hpp create mode 100644 libs/beast/include/boost/beast/http/file_body.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/basic_parser.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/basic_parser.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/chunk_encode.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/error.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/error.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/field.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/fields.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/fields.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/file_body_win32.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/message.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/parser.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/read.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/rfc7230.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/rfc7230.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/serializer.hpp create mode 100644 libs/beast/include/boost/beast/http/impl/status.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/verb.ipp create mode 100644 libs/beast/include/boost/beast/http/impl/write.hpp create mode 100644 libs/beast/include/boost/beast/http/message.hpp create mode 100644 libs/beast/include/boost/beast/http/parser.hpp create mode 100644 libs/beast/include/boost/beast/http/read.hpp create mode 100644 libs/beast/include/boost/beast/http/rfc7230.hpp create mode 100644 libs/beast/include/boost/beast/http/serializer.hpp create mode 100644 libs/beast/include/boost/beast/http/span_body.hpp create mode 100644 libs/beast/include/boost/beast/http/status.hpp create mode 100644 libs/beast/include/boost/beast/http/string_body.hpp create mode 100644 libs/beast/include/boost/beast/http/type_traits.hpp create mode 100644 libs/beast/include/boost/beast/http/vector_body.hpp create mode 100644 libs/beast/include/boost/beast/http/verb.hpp create mode 100644 libs/beast/include/boost/beast/http/write.hpp create mode 100644 libs/beast/include/boost/beast/src.hpp create mode 100644 libs/beast/include/boost/beast/ssl.hpp create mode 100644 libs/beast/include/boost/beast/ssl/ssl_stream.hpp create mode 100644 libs/beast/include/boost/beast/version.hpp create mode 100644 libs/beast/include/boost/beast/websocket.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/decorator.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/frame.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/hybi13.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/hybi13.ipp create mode 100644 libs/beast/include/boost/beast/websocket/detail/impl_base.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/mask.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/mask.ipp create mode 100644 libs/beast/include/boost/beast/websocket/detail/pmd_extension.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/pmd_extension.ipp create mode 100644 libs/beast/include/boost/beast/websocket/detail/prng.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/prng.ipp create mode 100644 libs/beast/include/boost/beast/websocket/detail/service.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/service.ipp create mode 100644 libs/beast/include/boost/beast/websocket/detail/soft_mutex.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/type_traits.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/utf8_checker.hpp create mode 100644 libs/beast/include/boost/beast/websocket/detail/utf8_checker.ipp create mode 100644 libs/beast/include/boost/beast/websocket/error.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/accept.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/close.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/error.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/error.ipp create mode 100644 libs/beast/include/boost/beast/websocket/impl/handshake.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/ping.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/read.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/rfc6455.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/ssl.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/stream.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/stream_impl.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/teardown.hpp create mode 100644 libs/beast/include/boost/beast/websocket/impl/write.hpp create mode 100644 libs/beast/include/boost/beast/websocket/option.hpp create mode 100644 libs/beast/include/boost/beast/websocket/rfc6455.hpp create mode 100644 libs/beast/include/boost/beast/websocket/ssl.hpp create mode 100644 libs/beast/include/boost/beast/websocket/stream.hpp create mode 100644 libs/beast/include/boost/beast/websocket/stream_base.hpp create mode 100644 libs/beast/include/boost/beast/websocket/stream_fwd.hpp create mode 100644 libs/beast/include/boost/beast/websocket/teardown.hpp create mode 100644 libs/beast/include/boost/beast/zlib.hpp create mode 100644 libs/beast/include/boost/beast/zlib/deflate_stream.hpp create mode 100644 libs/beast/include/boost/beast/zlib/detail/bitstream.hpp create mode 100644 libs/beast/include/boost/beast/zlib/detail/deflate_stream.hpp create mode 100644 libs/beast/include/boost/beast/zlib/detail/deflate_stream.ipp create mode 100644 libs/beast/include/boost/beast/zlib/detail/inflate_stream.hpp create mode 100644 libs/beast/include/boost/beast/zlib/detail/inflate_stream.ipp create mode 100644 libs/beast/include/boost/beast/zlib/detail/ranges.hpp create mode 100644 libs/beast/include/boost/beast/zlib/detail/window.hpp create mode 100644 libs/beast/include/boost/beast/zlib/error.hpp create mode 100644 libs/beast/include/boost/beast/zlib/impl/error.hpp create mode 100644 libs/beast/include/boost/beast/zlib/impl/error.ipp create mode 100644 libs/beast/include/boost/beast/zlib/inflate_stream.hpp create mode 100644 libs/beast/include/boost/beast/zlib/zlib.hpp mode change 100755 => 100644 libs/beast/index.html mode change 100755 => 100644 libs/beast/meta/explicit-failures-markup.xml mode change 100755 => 100644 libs/beast/meta/libraries.json mode change 100755 => 100644 libs/beast/test/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/Jamfile mode change 100755 => 100644 libs/beast/test/beast/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/Jamfile mode change 100755 => 100644 libs/beast/test/beast/_experimental/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/_experimental/Jamfile mode change 100755 => 100644 libs/beast/test/beast/_experimental/error.cpp mode change 100755 => 100644 libs/beast/test/beast/_experimental/icy_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/_experimental/stream.cpp mode change 100755 => 100644 libs/beast/test/beast/core.cpp mode change 100755 => 100644 libs/beast/test/beast/core/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/core/Jamfile mode change 100755 => 100644 libs/beast/test/beast/core/_detail_base64.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_bind_continuation.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_buffer.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_clamp.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_get_io_context.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_is_invocable.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_read.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_sha1.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_static_const.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_tuple.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_variant.cpp mode change 100755 => 100644 libs/beast/test/beast/core/_detail_varint.cpp mode change 100755 => 100644 libs/beast/test/beast/core/async_base.cpp mode change 100755 => 100644 libs/beast/test/beast/core/basic_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/core/bind_handler.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffer_traits.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffered_read_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffers_adaptor.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffers_cat.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffers_prefix.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffers_range.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffers_suffix.cpp mode change 100755 => 100644 libs/beast/test/beast/core/buffers_to_string.cpp mode change 100755 => 100644 libs/beast/test/beast/core/close_socket.cpp mode change 100755 => 100644 libs/beast/test/beast/core/detect_ssl.cpp mode change 100755 => 100644 libs/beast/test/beast/core/error.cpp mode change 100755 => 100644 libs/beast/test/beast/core/file.cpp mode change 100755 => 100644 libs/beast/test/beast/core/file_base.cpp mode change 100755 => 100644 libs/beast/test/beast/core/file_posix.cpp mode change 100755 => 100644 libs/beast/test/beast/core/file_stdio.cpp mode change 100755 => 100644 libs/beast/test/beast/core/file_test.hpp mode change 100755 => 100644 libs/beast/test/beast/core/file_win32.cpp mode change 100755 => 100644 libs/beast/test/beast/core/flat_buffer.cpp mode change 100755 => 100644 libs/beast/test/beast/core/flat_static_buffer.cpp mode change 100755 => 100644 libs/beast/test/beast/core/flat_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/core/make_printable.cpp mode change 100755 => 100644 libs/beast/test/beast/core/make_strand.cpp mode change 100755 => 100644 libs/beast/test/beast/core/multi_buffer.cpp mode change 100755 => 100644 libs/beast/test/beast/core/ostream.cpp mode change 100755 => 100644 libs/beast/test/beast/core/prepare_buffers.cpp mode change 100755 => 100644 libs/beast/test/beast/core/rate_policy.cpp mode change 100755 => 100644 libs/beast/test/beast/core/read_size.cpp mode change 100755 => 100644 libs/beast/test/beast/core/role.cpp mode change 100755 => 100644 libs/beast/test/beast/core/saved_handler.cpp mode change 100755 => 100644 libs/beast/test/beast/core/span.cpp mode change 100755 => 100644 libs/beast/test/beast/core/static_buffer.cpp mode change 100755 => 100644 libs/beast/test/beast/core/static_string.cpp mode change 100755 => 100644 libs/beast/test/beast/core/stream_tests.hpp mode change 100755 => 100644 libs/beast/test/beast/core/stream_traits.cpp mode change 100755 => 100644 libs/beast/test/beast/core/string.cpp mode change 100755 => 100644 libs/beast/test/beast/core/tcp_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/core/test_buffer.hpp mode change 100755 => 100644 libs/beast/test/beast/core/test_executor.hpp mode change 100755 => 100644 libs/beast/test/beast/core/test_handler.hpp mode change 100755 => 100644 libs/beast/test/beast/core/zlib.cpp mode change 100755 => 100644 libs/beast/test/beast/http.cpp mode change 100755 => 100644 libs/beast/test/beast/http/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/http/Jamfile mode change 100755 => 100644 libs/beast/test/beast/http/basic_dynamic_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/basic_file_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/basic_parser.cpp mode change 100755 => 100644 libs/beast/test/beast/http/buffer_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/chunk_encode.cpp mode change 100755 => 100644 libs/beast/test/beast/http/dynamic_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/empty_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/error.cpp mode change 100755 => 100644 libs/beast/test/beast/http/field.cpp mode change 100755 => 100644 libs/beast/test/beast/http/fields.cpp mode change 100755 => 100644 libs/beast/test/beast/http/file_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/message.cpp mode change 100755 => 100644 libs/beast/test/beast/http/message_fuzz.hpp mode change 100755 => 100644 libs/beast/test/beast/http/parser.cpp mode change 100755 => 100644 libs/beast/test/beast/http/read.cpp mode change 100755 => 100644 libs/beast/test/beast/http/rfc7230.cpp mode change 100755 => 100644 libs/beast/test/beast/http/serializer.cpp mode change 100755 => 100644 libs/beast/test/beast/http/span_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/status.cpp mode change 100755 => 100644 libs/beast/test/beast/http/string_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/test_parser.hpp mode change 100755 => 100644 libs/beast/test/beast/http/type_traits.cpp mode change 100755 => 100644 libs/beast/test/beast/http/vector_body.cpp mode change 100755 => 100644 libs/beast/test/beast/http/verb.cpp mode change 100755 => 100644 libs/beast/test/beast/http/write.cpp mode change 100755 => 100644 libs/beast/test/beast/ssl.cpp mode change 100755 => 100644 libs/beast/test/beast/ssl/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/ssl/Jamfile mode change 100755 => 100644 libs/beast/test/beast/ssl/ssl_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/version.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/websocket/Jamfile mode change 100755 => 100644 libs/beast/test/beast/websocket/_detail_decorator.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/_detail_impl_base.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/_detail_prng.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/accept.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/close.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/doc_snippets.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/error.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/frame.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/handshake.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/option.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/ping.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/read1.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/read2.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/read3.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/rfc6455.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/ssl.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/stream.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/stream_base.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/stream_explicit.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/stream_fwd.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/teardown.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/test.hpp mode change 100755 => 100644 libs/beast/test/beast/websocket/timer.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/utf8_checker.cpp mode change 100755 => 100644 libs/beast/test/beast/websocket/write.cpp mode change 100755 => 100644 libs/beast/test/beast/zlib.cpp mode change 100755 => 100644 libs/beast/test/beast/zlib/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/beast/zlib/Jamfile mode change 100755 => 100644 libs/beast/test/beast/zlib/deflate_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/zlib/error.cpp mode change 100755 => 100644 libs/beast/test/beast/zlib/inflate_stream.cpp mode change 100755 => 100644 libs/beast/test/beast/zlib/zlib.cpp mode change 100755 => 100644 libs/beast/test/bench/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/bench/Jamfile mode change 100755 => 100644 libs/beast/test/bench/buffers/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/bench/buffers/Jamfile mode change 100755 => 100644 libs/beast/test/bench/buffers/bench_buffers.cpp mode change 100755 => 100644 libs/beast/test/bench/parser/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/bench/parser/Jamfile mode change 100755 => 100644 libs/beast/test/bench/parser/bench_parser.cpp mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs-parser/AUTHORS mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs-parser/LICENSE-MIT mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs-parser/README.md mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs-parser/http_parser.c mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs-parser/http_parser.h mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs_parser.cpp mode change 100755 => 100644 libs/beast/test/bench/parser/nodejs_parser.hpp mode change 100755 => 100644 libs/beast/test/bench/utf8_checker/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/bench/utf8_checker/Jamfile mode change 100755 => 100644 libs/beast/test/bench/utf8_checker/bench_utf8_checker.cpp mode change 100755 => 100644 libs/beast/test/bench/wsload/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/bench/wsload/Jamfile mode change 100755 => 100644 libs/beast/test/bench/wsload/wsload.cpp mode change 100755 => 100644 libs/beast/test/bench/zlib/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/bench/zlib/Jamfile mode change 100755 => 100644 libs/beast/test/bench/zlib/deflate_stream.cpp mode change 100755 => 100644 libs/beast/test/bench/zlib/inflate_stream.cpp mode change 100755 => 100644 libs/beast/test/doc/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/doc/Jamfile mode change 100755 => 100644 libs/beast/test/doc/core_1_refresher.cpp mode change 100755 => 100644 libs/beast/test/doc/core_3_timeouts.cpp mode change 100755 => 100644 libs/beast/test/doc/core_4_layers.cpp mode change 100755 => 100644 libs/beast/test/doc/core_snippets.cpp mode change 100755 => 100644 libs/beast/test/doc/exemplars.cpp mode change 100755 => 100644 libs/beast/test/doc/http_10_custom_parser.cpp mode change 100755 => 100644 libs/beast/test/doc/http_examples.cpp mode change 100755 => 100644 libs/beast/test/doc/http_snippets.cpp mode change 100755 => 100644 libs/beast/test/doc/snippets.hpp mode change 100755 => 100644 libs/beast/test/doc/snippets.ipp mode change 100755 => 100644 libs/beast/test/doc/websocket.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_1_connecting.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_2_handshaking.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_3_decorator.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_4_messages.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_5_control_frames.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_6_timeouts.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_7_teardown.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_8_notes.cpp mode change 100755 => 100644 libs/beast/test/doc/websocket_common.ipp mode change 100755 => 100644 libs/beast/test/example/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/example/Jamfile mode change 100755 => 100644 libs/beast/test/example/common/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/example/common/Jamfile mode change 100755 => 100644 libs/beast/test/example/common/root_certificates.cpp mode change 100755 => 100644 libs/beast/test/example/common/server_certificate.cpp create mode 100644 libs/beast/test/extern/zlib-1.2.11/.gitignore mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/CMakeLists.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/ChangeLog mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/FAQ mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/INDEX mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/Makefile mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/Makefile.in mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/adler32.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/amiga/Makefile.pup mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/amiga/Makefile.sas mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/compress.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/configure mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/README.contrib mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/buffer_demo.adb mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/mtest.adb mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/read.adb mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/test.adb mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib-streams.adb mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib-streams.ads mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib-thin.adb mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib-thin.ads mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib.adb create mode 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib.ads mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/ada/zlib.gpr mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/amd64/amd64-match.S mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/asm686/README.686 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/asm686/match.S mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/blast/Makefile mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/blast/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/blast/blast.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/blast/blast.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/blast/test.pk mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/blast/test.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/delphi/ZLib.pas mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/delphi/ZLibConst.pas mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/delphi/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/delphi/zlibd32.mak mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib.build mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib.chm mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib.sln mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/AssemblyInfo.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/ChecksumImpl.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/CircularBuffer.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/CodecBase.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/Deflater.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/DotZLib.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/DotZLib.csproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/GZipStream.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/Inflater.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/DotZLib/UnitTests.cs mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/LICENSE_1_0.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/dotzlib/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/gcc_gvmat64/gvmat64.S mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/infback9.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/infback9.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/inffix9.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/inflate9.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/inftree9.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/infback9/inftree9.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/inflate86/inffas86.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/inflate86/inffast.S mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream/test.cpp mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream/zfstream.cpp mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream/zfstream.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream2/zstream.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream2/zstream_test.cpp mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream3/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream3/TODO mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream3/test.cc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream3/zfstream.cc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/iostream3/zfstream.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx64/bld_ml64.bat mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx64/gvmat64.asm mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx64/inffas8664.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx64/inffasx64.asm mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx64/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx86/bld_ml32.bat mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx86/inffas32.asm mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx86/match686.asm mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/masmx86/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/Makefile mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/Makefile.am mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/MiniZip64_Changes.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/MiniZip64_info.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/configure.ac mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/crypt.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/ioapi.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/ioapi.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/iowin32.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/iowin32.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/make_vms.com mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/miniunz.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/miniunzip.1 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/minizip.1 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/minizip.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/minizip.pc.in mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/mztools.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/mztools.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/unzip.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/unzip.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/zip.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/minizip/zip.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/pascal/example.pas mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/pascal/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/pascal/zlibd32.mak mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/pascal/zlibpas.pas mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/puff/Makefile mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/puff/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/puff/puff.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/puff/puff.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/puff/pufftest.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/puff/zeros.raw mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/testzlib/testzlib.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/testzlib/testzlib.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/untgz/Makefile mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/untgz/Makefile.msc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/untgz/untgz.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/readme.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/miniunz.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/miniunz.vcxproj.filters mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/minizip.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/minizip.vcxproj.filters mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/testzlib.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/testzlib.vcxproj.filters mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/testzlibdll.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/testzlibdll.vcxproj.filters mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlib.rc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlibstat.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlibstat.vcxproj.filters mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlibvc.def mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlibvc.sln mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlibvc.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc10/zlibvc.vcxproj.filters mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/miniunz.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/minizip.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/testzlib.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/testzlibdll.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/zlib.rc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/zlibstat.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/zlibvc.def mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/zlibvc.sln mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc11/zlibvc.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/miniunz.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/minizip.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/testzlib.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/testzlibdll.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/zlib.rc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/zlibstat.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/zlibvc.def mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/zlibvc.sln mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc12/zlibvc.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/miniunz.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/minizip.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/testzlib.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/testzlibdll.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/zlib.rc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/zlibstat.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/zlibvc.def mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/zlibvc.sln mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc14/zlibvc.vcxproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/miniunz.vcproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/minizip.vcproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/testzlib.vcproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/testzlibdll.vcproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/zlib.rc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/zlibstat.vcproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/zlibvc.def mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/zlibvc.sln mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/contrib/vstudio/vc9/zlibvc.vcproj mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/crc32.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/crc32.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/deflate.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/deflate.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/doc/algorithm.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/doc/rfc1950.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/doc/rfc1951.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/doc/rfc1952.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/doc/txtvsbin.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/README.examples mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/enough.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/fitblk.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/gun.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/gzappend.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/gzjoin.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/gzlog.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/gzlog.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/zlib_how.html mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/zpipe.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/examples/zran.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/gzclose.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/gzguts.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/gzlib.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/gzread.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/gzwrite.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/infback.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inffast.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inffast.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inffixed.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inflate.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inflate.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inftrees.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/inftrees.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/make_vms.com mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/msdos/Makefile.bor mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/msdos/Makefile.dj2 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/msdos/Makefile.emx mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/msdos/Makefile.msc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/msdos/Makefile.tc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/nintendods/Makefile mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/nintendods/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/Makefile.emx mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/Makefile.riscos mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/README mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/descrip.mms mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/os2/Makefile.os2 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/os2/zlib.def mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/old/visual-basic.txt mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/os400/README400 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/os400/bndsrc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/os400/make.sh mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/os400/zlib.inc mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/qnx/package.qpg mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/test/example.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/test/infcover.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/test/minigzip.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/treebuild.xml mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/trees.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/trees.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/uncompr.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/watcom/watcom_f.mak mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/watcom/watcom_l.mak mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zconf.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zconf.h.cmakein mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zconf.h.in mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib.3 mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib.3.pdf mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib.h mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib.map mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib.pc.cmakein mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib.pc.in mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zlib2ansi mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zutil.c mode change 100755 => 100644 libs/beast/test/extern/zlib-1.2.11/zutil.h mode change 100755 => 100644 libs/beast/test/extras/README.md mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/doc_debug.hpp mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/test/fuzz.hpp mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/test/sig_wait.hpp mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/test/test_allocator.hpp mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/test/throughput.hpp mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/test/websocket.hpp mode change 100755 => 100644 libs/beast/test/extras/include/boost/beast/test/yield_to.hpp mode change 100755 => 100644 libs/beast/test/lib_asio.cpp mode change 100755 => 100644 libs/beast/test/lib_asio_ssl.cpp mode change 100755 => 100644 libs/beast/test/lib_beast.cpp mode change 100755 => 100644 libs/beast/test/lib_test.cpp mode change 100755 => 100644 libs/beast/tools/blacklist.supp mode change 100755 => 100644 libs/beast/tools/field.txt mode change 100755 => 100644 libs/beast/tools/user-config.jam mode change 100755 => 100644 libs/beast/tools/valgrind.supp mode change 100755 => 100644 libs/compute/CMakeLists.txt mode change 100755 => 100644 libs/compute/CONTRIBUTING.md mode change 100755 => 100644 libs/compute/LICENSE_1_0.txt mode change 100755 => 100644 libs/compute/README.md mode change 100755 => 100644 libs/compute/cmake/BoostComputeConfig.cmake.in mode change 100755 => 100644 libs/compute/cmake/FindBolt.cmake mode change 100755 => 100644 libs/compute/cmake/FindEigen.cmake mode change 100755 => 100644 libs/compute/cmake/FindTBB.cmake mode change 100755 => 100644 libs/compute/cmake/opencl/FindOpenCL.cmake mode change 100755 => 100644 libs/compute/doc/Jamfile.v2 mode change 100755 => 100644 libs/compute/doc/advanced_topics.qbk mode change 100755 => 100644 libs/compute/doc/compute.qbk mode change 100755 => 100644 libs/compute/doc/design.qbk mode change 100755 => 100644 libs/compute/doc/faq.qbk mode change 100755 => 100644 libs/compute/doc/getting_started.qbk mode change 100755 => 100644 libs/compute/doc/interop.qbk mode change 100755 => 100644 libs/compute/doc/introduction.qbk mode change 100755 => 100644 libs/compute/doc/performance.qbk mode change 100755 => 100644 libs/compute/doc/platforms_and_compilers.qbk mode change 100755 => 100644 libs/compute/doc/porting_guide.qbk mode change 100755 => 100644 libs/compute/doc/reference.qbk mode change 100755 => 100644 libs/compute/doc/tutorial.qbk mode change 100755 => 100644 libs/compute/example/CMakeLists.txt mode change 100755 => 100644 libs/compute/example/amd_cpp_kernel.cpp mode change 100755 => 100644 libs/compute/example/batched_determinant.cpp mode change 100755 => 100644 libs/compute/example/black_scholes.cpp mode change 100755 => 100644 libs/compute/example/copy_data.cpp mode change 100755 => 100644 libs/compute/example/fizz_buzz.cpp mode change 100755 => 100644 libs/compute/example/hello_world.cpp mode change 100755 => 100644 libs/compute/example/host_sort.cpp mode change 100755 => 100644 libs/compute/example/inline_ptx.cpp mode change 100755 => 100644 libs/compute/example/k_means.cpp mode change 100755 => 100644 libs/compute/example/list_devices.cpp mode change 100755 => 100644 libs/compute/example/longest_vector.cpp mode change 100755 => 100644 libs/compute/example/mandelbrot.cpp mode change 100755 => 100644 libs/compute/example/mapped_view.cpp mode change 100755 => 100644 libs/compute/example/matrix_transpose.cpp mode change 100755 => 100644 libs/compute/example/memory_limits.cpp mode change 100755 => 100644 libs/compute/example/monte_carlo.cpp mode change 100755 => 100644 libs/compute/example/nbody.cpp mode change 100755 => 100644 libs/compute/example/opencl_test.cpp mode change 100755 => 100644 libs/compute/example/opencv_convolution.cpp mode change 100755 => 100644 libs/compute/example/opencv_flip.cpp mode change 100755 => 100644 libs/compute/example/opencv_histogram.cpp mode change 100755 => 100644 libs/compute/example/opencv_optical_flow.cpp mode change 100755 => 100644 libs/compute/example/opencv_sobel_filter.cpp mode change 100755 => 100644 libs/compute/example/opengl_sphere.cpp mode change 100755 => 100644 libs/compute/example/point_centroid.cpp mode change 100755 => 100644 libs/compute/example/price_cross.cpp mode change 100755 => 100644 libs/compute/example/print_vector.cpp mode change 100755 => 100644 libs/compute/example/qimage_blur.cpp mode change 100755 => 100644 libs/compute/example/random_walk.cpp mode change 100755 => 100644 libs/compute/example/resize_image.cpp mode change 100755 => 100644 libs/compute/example/simple_kernel.cpp mode change 100755 => 100644 libs/compute/example/simple_moving_average.cpp mode change 100755 => 100644 libs/compute/example/sort_vector.cpp mode change 100755 => 100644 libs/compute/example/threefry_engine.cpp mode change 100755 => 100644 libs/compute/example/time_copy.cpp mode change 100755 => 100644 libs/compute/example/transform_sqrt.cpp mode change 100755 => 100644 libs/compute/example/vector_addition.cpp create mode 100644 libs/compute/include/boost/compute.hpp create mode 100644 libs/compute/include/boost/compute/algorithm.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/accumulate.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/adjacent_difference.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/adjacent_find.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/all_of.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/any_of.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/binary_search.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/copy.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/copy_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/copy_n.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/count.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/count_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/balanced_path.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/binary_find.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/compact.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/copy_on_device.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/copy_to_device.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/copy_to_host.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/count_if_with_ballot.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/count_if_with_reduce.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/count_if_with_threads.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/find_extrema.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/find_if_with_atomics.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/inplace_reduce.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/insertion_sort.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/merge_path.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/merge_with_merge_path.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/radix_sort.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/random_fill.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/reduce_by_key.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/reduce_on_cpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/reduce_on_gpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/scan.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/scan_on_cpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/scan_on_gpu.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/search_all.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_accumulate.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_count_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_find_extrema.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_merge.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_reduce.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_reduce_by_key.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/detail/serial_scan.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/equal.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/equal_range.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/exclusive_scan.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/fill.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/fill_n.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/find.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/find_end.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/find_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/find_if_not.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/for_each.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/for_each_n.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/gather.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/generate.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/generate_n.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/includes.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/inclusive_scan.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/inner_product.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/inplace_merge.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/iota.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/is_partitioned.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/is_permutation.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/is_sorted.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/lexicographical_compare.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/lower_bound.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/max_element.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/merge.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/min_element.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/minmax_element.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/mismatch.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/next_permutation.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/none_of.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/nth_element.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/partial_sum.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/partition.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/partition_copy.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/partition_point.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/prev_permutation.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/random_shuffle.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/reduce.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/reduce_by_key.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/remove.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/remove_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/replace.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/replace_copy.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/reverse.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/reverse_copy.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/rotate.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/rotate_copy.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/scatter.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/scatter_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/search.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/search_n.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/set_difference.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/set_intersection.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/set_symmetric_difference.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/set_union.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/sort.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/sort_by_key.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/stable_partition.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/stable_sort.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/stable_sort_by_key.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/swap_ranges.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/transform.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/transform_if.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/transform_reduce.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/unique.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/unique_copy.hpp create mode 100644 libs/compute/include/boost/compute/algorithm/upper_bound.hpp create mode 100644 libs/compute/include/boost/compute/allocator.hpp create mode 100644 libs/compute/include/boost/compute/allocator/buffer_allocator.hpp create mode 100644 libs/compute/include/boost/compute/allocator/pinned_allocator.hpp create mode 100644 libs/compute/include/boost/compute/async.hpp create mode 100644 libs/compute/include/boost/compute/async/future.hpp create mode 100644 libs/compute/include/boost/compute/async/wait.hpp create mode 100644 libs/compute/include/boost/compute/async/wait_guard.hpp create mode 100644 libs/compute/include/boost/compute/buffer.hpp create mode 100644 libs/compute/include/boost/compute/cl.hpp create mode 100644 libs/compute/include/boost/compute/cl_ext.hpp create mode 100644 libs/compute/include/boost/compute/closure.hpp create mode 100644 libs/compute/include/boost/compute/command_queue.hpp create mode 100644 libs/compute/include/boost/compute/config.hpp create mode 100644 libs/compute/include/boost/compute/container.hpp create mode 100644 libs/compute/include/boost/compute/container/array.hpp create mode 100644 libs/compute/include/boost/compute/container/basic_string.hpp create mode 100644 libs/compute/include/boost/compute/container/detail/scalar.hpp create mode 100644 libs/compute/include/boost/compute/container/dynamic_bitset.hpp create mode 100644 libs/compute/include/boost/compute/container/flat_map.hpp create mode 100644 libs/compute/include/boost/compute/container/flat_set.hpp create mode 100644 libs/compute/include/boost/compute/container/mapped_view.hpp create mode 100644 libs/compute/include/boost/compute/container/stack.hpp create mode 100644 libs/compute/include/boost/compute/container/string.hpp create mode 100644 libs/compute/include/boost/compute/container/valarray.hpp create mode 100644 libs/compute/include/boost/compute/container/vector.hpp create mode 100644 libs/compute/include/boost/compute/context.hpp create mode 100644 libs/compute/include/boost/compute/core.hpp create mode 100644 libs/compute/include/boost/compute/detail/assert_cl_success.hpp create mode 100644 libs/compute/include/boost/compute/detail/buffer_value.hpp create mode 100644 libs/compute/include/boost/compute/detail/cl_versions.hpp create mode 100644 libs/compute/include/boost/compute/detail/device_ptr.hpp create mode 100644 libs/compute/include/boost/compute/detail/diagnostic.hpp create mode 100644 libs/compute/include/boost/compute/detail/duration.hpp create mode 100644 libs/compute/include/boost/compute/detail/get_object_info.hpp create mode 100644 libs/compute/include/boost/compute/detail/getenv.hpp create mode 100644 libs/compute/include/boost/compute/detail/global_static.hpp create mode 100644 libs/compute/include/boost/compute/detail/is_buffer_iterator.hpp create mode 100644 libs/compute/include/boost/compute/detail/is_contiguous_iterator.hpp create mode 100644 libs/compute/include/boost/compute/detail/iterator_plus_distance.hpp create mode 100644 libs/compute/include/boost/compute/detail/iterator_range_size.hpp create mode 100644 libs/compute/include/boost/compute/detail/iterator_traits.hpp create mode 100644 libs/compute/include/boost/compute/detail/literal.hpp create mode 100644 libs/compute/include/boost/compute/detail/lru_cache.hpp create mode 100644 libs/compute/include/boost/compute/detail/meta_kernel.hpp create mode 100644 libs/compute/include/boost/compute/detail/mpl_vector_to_tuple.hpp create mode 100644 libs/compute/include/boost/compute/detail/nvidia_compute_capability.hpp create mode 100644 libs/compute/include/boost/compute/detail/parameter_cache.hpp create mode 100644 libs/compute/include/boost/compute/detail/path.hpp create mode 100644 libs/compute/include/boost/compute/detail/print_range.hpp create mode 100644 libs/compute/include/boost/compute/detail/read_write_single_value.hpp create mode 100644 libs/compute/include/boost/compute/detail/sha1.hpp create mode 100644 libs/compute/include/boost/compute/detail/variadic_macros.hpp create mode 100644 libs/compute/include/boost/compute/detail/vendor.hpp create mode 100644 libs/compute/include/boost/compute/detail/work_size.hpp create mode 100644 libs/compute/include/boost/compute/device.hpp create mode 100644 libs/compute/include/boost/compute/event.hpp create mode 100644 libs/compute/include/boost/compute/exception.hpp create mode 100644 libs/compute/include/boost/compute/exception/context_error.hpp create mode 100644 libs/compute/include/boost/compute/exception/no_device_found.hpp create mode 100644 libs/compute/include/boost/compute/exception/opencl_error.hpp create mode 100644 libs/compute/include/boost/compute/exception/program_build_failure.hpp create mode 100644 libs/compute/include/boost/compute/exception/unsupported_extension_error.hpp create mode 100644 libs/compute/include/boost/compute/experimental/clamp_range.hpp create mode 100644 libs/compute/include/boost/compute/experimental/malloc.hpp create mode 100644 libs/compute/include/boost/compute/experimental/sort_by_transform.hpp create mode 100644 libs/compute/include/boost/compute/experimental/tabulate.hpp create mode 100644 libs/compute/include/boost/compute/function.hpp create mode 100644 libs/compute/include/boost/compute/functional.hpp create mode 100644 libs/compute/include/boost/compute/functional/as.hpp create mode 100644 libs/compute/include/boost/compute/functional/atomic.hpp create mode 100644 libs/compute/include/boost/compute/functional/bind.hpp create mode 100644 libs/compute/include/boost/compute/functional/common.hpp create mode 100644 libs/compute/include/boost/compute/functional/convert.hpp create mode 100644 libs/compute/include/boost/compute/functional/detail/macros.hpp create mode 100644 libs/compute/include/boost/compute/functional/detail/nvidia_ballot.hpp create mode 100644 libs/compute/include/boost/compute/functional/detail/nvidia_popcount.hpp create mode 100644 libs/compute/include/boost/compute/functional/detail/unpack.hpp create mode 100644 libs/compute/include/boost/compute/functional/field.hpp create mode 100644 libs/compute/include/boost/compute/functional/geometry.hpp create mode 100644 libs/compute/include/boost/compute/functional/get.hpp create mode 100644 libs/compute/include/boost/compute/functional/hash.hpp create mode 100644 libs/compute/include/boost/compute/functional/identity.hpp create mode 100644 libs/compute/include/boost/compute/functional/integer.hpp create mode 100644 libs/compute/include/boost/compute/functional/logical.hpp create mode 100644 libs/compute/include/boost/compute/functional/math.hpp create mode 100644 libs/compute/include/boost/compute/functional/operator.hpp create mode 100644 libs/compute/include/boost/compute/functional/popcount.hpp create mode 100644 libs/compute/include/boost/compute/functional/relational.hpp create mode 100644 libs/compute/include/boost/compute/image.hpp create mode 100644 libs/compute/include/boost/compute/image/image1d.hpp create mode 100644 libs/compute/include/boost/compute/image/image2d.hpp create mode 100644 libs/compute/include/boost/compute/image/image3d.hpp create mode 100644 libs/compute/include/boost/compute/image/image_format.hpp create mode 100644 libs/compute/include/boost/compute/image/image_object.hpp create mode 100644 libs/compute/include/boost/compute/image/image_sampler.hpp create mode 100644 libs/compute/include/boost/compute/image2d.hpp create mode 100644 libs/compute/include/boost/compute/image3d.hpp create mode 100644 libs/compute/include/boost/compute/image_format.hpp create mode 100644 libs/compute/include/boost/compute/image_sampler.hpp create mode 100644 libs/compute/include/boost/compute/interop/eigen.hpp create mode 100644 libs/compute/include/boost/compute/interop/eigen/core.hpp create mode 100644 libs/compute/include/boost/compute/interop/opencv.hpp create mode 100644 libs/compute/include/boost/compute/interop/opencv/core.hpp create mode 100644 libs/compute/include/boost/compute/interop/opencv/highgui.hpp create mode 100644 libs/compute/include/boost/compute/interop/opencv/ocl.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/acquire.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/cl_gl.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/cl_gl_ext.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/context.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/gl.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/opengl_buffer.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/opengl_renderbuffer.hpp create mode 100644 libs/compute/include/boost/compute/interop/opengl/opengl_texture.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt/qimage.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt/qpoint.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt/qpointf.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt/qtcore.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt/qtgui.hpp create mode 100644 libs/compute/include/boost/compute/interop/qt/qvector.hpp create mode 100644 libs/compute/include/boost/compute/interop/vtk.hpp create mode 100644 libs/compute/include/boost/compute/interop/vtk/bounds.hpp create mode 100644 libs/compute/include/boost/compute/interop/vtk/data_array.hpp create mode 100644 libs/compute/include/boost/compute/interop/vtk/matrix4x4.hpp create mode 100644 libs/compute/include/boost/compute/interop/vtk/points.hpp create mode 100644 libs/compute/include/boost/compute/iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/buffer_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/constant_buffer_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/constant_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/counting_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/detail/get_base_iterator_buffer.hpp create mode 100644 libs/compute/include/boost/compute/iterator/detail/swizzle_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/discard_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/function_input_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/permutation_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/strided_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/transform_iterator.hpp create mode 100644 libs/compute/include/boost/compute/iterator/zip_iterator.hpp create mode 100644 libs/compute/include/boost/compute/kernel.hpp create mode 100644 libs/compute/include/boost/compute/lambda.hpp create mode 100644 libs/compute/include/boost/compute/lambda/context.hpp create mode 100644 libs/compute/include/boost/compute/lambda/functional.hpp create mode 100644 libs/compute/include/boost/compute/lambda/get.hpp create mode 100644 libs/compute/include/boost/compute/lambda/make_pair.hpp create mode 100644 libs/compute/include/boost/compute/lambda/make_tuple.hpp create mode 100644 libs/compute/include/boost/compute/lambda/placeholder.hpp create mode 100644 libs/compute/include/boost/compute/lambda/placeholders.hpp create mode 100644 libs/compute/include/boost/compute/lambda/result_of.hpp create mode 100644 libs/compute/include/boost/compute/memory.hpp create mode 100644 libs/compute/include/boost/compute/memory/local_buffer.hpp create mode 100644 libs/compute/include/boost/compute/memory/svm_ptr.hpp create mode 100644 libs/compute/include/boost/compute/memory_object.hpp create mode 100644 libs/compute/include/boost/compute/pipe.hpp create mode 100644 libs/compute/include/boost/compute/platform.hpp create mode 100644 libs/compute/include/boost/compute/program.hpp create mode 100644 libs/compute/include/boost/compute/random.hpp create mode 100644 libs/compute/include/boost/compute/random/bernoulli_distribution.hpp create mode 100644 libs/compute/include/boost/compute/random/default_random_engine.hpp create mode 100644 libs/compute/include/boost/compute/random/discrete_distribution.hpp create mode 100644 libs/compute/include/boost/compute/random/linear_congruential_engine.hpp create mode 100644 libs/compute/include/boost/compute/random/mersenne_twister_engine.hpp create mode 100644 libs/compute/include/boost/compute/random/normal_distribution.hpp create mode 100644 libs/compute/include/boost/compute/random/threefry_engine.hpp create mode 100644 libs/compute/include/boost/compute/random/uniform_int_distribution.hpp create mode 100644 libs/compute/include/boost/compute/random/uniform_real_distribution.hpp create mode 100644 libs/compute/include/boost/compute/source.hpp create mode 100644 libs/compute/include/boost/compute/svm.hpp create mode 100644 libs/compute/include/boost/compute/system.hpp create mode 100644 libs/compute/include/boost/compute/type_traits.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/common_type.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/detail/capture_traits.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/is_device_iterator.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/is_fundamental.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/is_vector_type.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/make_vector_type.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/result_of.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/scalar_type.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/type_definition.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/type_name.hpp create mode 100644 libs/compute/include/boost/compute/type_traits/vector_size.hpp create mode 100644 libs/compute/include/boost/compute/types.hpp create mode 100644 libs/compute/include/boost/compute/types/builtin.hpp create mode 100644 libs/compute/include/boost/compute/types/complex.hpp create mode 100644 libs/compute/include/boost/compute/types/fundamental.hpp create mode 100644 libs/compute/include/boost/compute/types/pair.hpp create mode 100644 libs/compute/include/boost/compute/types/size_t.hpp create mode 100644 libs/compute/include/boost/compute/types/struct.hpp create mode 100644 libs/compute/include/boost/compute/types/tuple.hpp create mode 100644 libs/compute/include/boost/compute/user_event.hpp create mode 100644 libs/compute/include/boost/compute/utility.hpp create mode 100644 libs/compute/include/boost/compute/utility/dim.hpp create mode 100644 libs/compute/include/boost/compute/utility/extents.hpp create mode 100644 libs/compute/include/boost/compute/utility/invoke.hpp create mode 100644 libs/compute/include/boost/compute/utility/program_cache.hpp create mode 100644 libs/compute/include/boost/compute/utility/source.hpp create mode 100644 libs/compute/include/boost/compute/utility/wait_list.hpp create mode 100644 libs/compute/include/boost/compute/version.hpp create mode 100644 libs/compute/include/boost/compute/wait_list.hpp mode change 100755 => 100644 libs/compute/index.html mode change 100755 => 100644 libs/compute/meta/libraries.json mode change 100755 => 100644 libs/compute/perf/CMakeLists.txt mode change 100755 => 100644 libs/compute/perf/perf.hpp mode change 100755 => 100644 libs/compute/perf/perf_accumulate.cpp mode change 100755 => 100644 libs/compute/perf/perf_bernoulli_distribution.cpp mode change 100755 => 100644 libs/compute/perf/perf_binary_find.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_accumulate.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_count.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_exclusive_scan.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_fill.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_inner_product.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_max_element.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_merge.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_partial_sum.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_reduce_by_key.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_saxpy.cpp mode change 100755 => 100644 libs/compute/perf/perf_bolt_sort.cpp mode change 100755 => 100644 libs/compute/perf/perf_cart_to_polar.cpp mode change 100755 => 100644 libs/compute/perf/perf_comparison_sort.cpp mode change 100755 => 100644 libs/compute/perf/perf_copy_if.cpp mode change 100755 => 100644 libs/compute/perf/perf_copy_to_device.cpp mode change 100755 => 100644 libs/compute/perf/perf_count.cpp mode change 100755 => 100644 libs/compute/perf/perf_discrete_distribution.cpp mode change 100755 => 100644 libs/compute/perf/perf_erase_remove.cpp mode change 100755 => 100644 libs/compute/perf/perf_exclusive_scan.cpp mode change 100755 => 100644 libs/compute/perf/perf_fill.cpp mode change 100755 => 100644 libs/compute/perf/perf_find.cpp mode change 100755 => 100644 libs/compute/perf/perf_find_end.cpp mode change 100755 => 100644 libs/compute/perf/perf_host_sort.cpp mode change 100755 => 100644 libs/compute/perf/perf_includes.cpp mode change 100755 => 100644 libs/compute/perf/perf_inner_product.cpp mode change 100755 => 100644 libs/compute/perf/perf_is_permutation.cpp mode change 100755 => 100644 libs/compute/perf/perf_is_sorted.cpp mode change 100755 => 100644 libs/compute/perf/perf_max_element.cpp mode change 100755 => 100644 libs/compute/perf/perf_merge.cpp mode change 100755 => 100644 libs/compute/perf/perf_next_permutation.cpp mode change 100755 => 100644 libs/compute/perf/perf_nth_element.cpp mode change 100755 => 100644 libs/compute/perf/perf_partial_sum.cpp mode change 100755 => 100644 libs/compute/perf/perf_partition.cpp mode change 100755 => 100644 libs/compute/perf/perf_partition_point.cpp mode change 100755 => 100644 libs/compute/perf/perf_prev_permutation.cpp mode change 100755 => 100644 libs/compute/perf/perf_random_number_engine.cpp mode change 100755 => 100644 libs/compute/perf/perf_reduce_by_key.cpp mode change 100755 => 100644 libs/compute/perf/perf_reverse.cpp mode change 100755 => 100644 libs/compute/perf/perf_reverse_copy.cpp mode change 100755 => 100644 libs/compute/perf/perf_rotate.cpp mode change 100755 => 100644 libs/compute/perf/perf_rotate_copy.cpp mode change 100755 => 100644 libs/compute/perf/perf_saxpy.cpp mode change 100755 => 100644 libs/compute/perf/perf_search.cpp mode change 100755 => 100644 libs/compute/perf/perf_search_n.cpp mode change 100755 => 100644 libs/compute/perf/perf_set_difference.cpp mode change 100755 => 100644 libs/compute/perf/perf_set_intersection.cpp mode change 100755 => 100644 libs/compute/perf/perf_set_symmetric_difference.cpp mode change 100755 => 100644 libs/compute/perf/perf_set_union.cpp mode change 100755 => 100644 libs/compute/perf/perf_sort.cpp mode change 100755 => 100644 libs/compute/perf/perf_sort_by_key.cpp mode change 100755 => 100644 libs/compute/perf/perf_sort_float.cpp mode change 100755 => 100644 libs/compute/perf/perf_stable_partition.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_accumulate.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_count.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_find.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_find_end.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_includes.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_inner_product.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_is_permutation.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_max_element.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_merge.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_next_permutation.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_partial_sum.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_partition.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_partition_point.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_prev_permutation.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_reverse.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_reverse_copy.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_rotate.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_rotate_copy.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_saxpy.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_search.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_search_n.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_set_difference.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_set_intersection.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_set_symmetric_difference.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_set_union.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_sort.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_stable_partition.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_unique.cpp mode change 100755 => 100644 libs/compute/perf/perf_stl_unique_copy.cpp mode change 100755 => 100644 libs/compute/perf/perf_tbb_accumulate.cpp mode change 100755 => 100644 libs/compute/perf/perf_tbb_merge.cpp mode change 100755 => 100644 libs/compute/perf/perf_tbb_sort.cpp mode change 100755 => 100644 libs/compute/perf/perf_thrust_accumulate.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_count.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_exclusive_scan.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_find.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_inner_product.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_merge.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_partial_sum.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_partition.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_reduce_by_key.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_reverse.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_reverse_copy.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_rotate.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_saxpy.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_set_difference.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_sort.cu mode change 100755 => 100644 libs/compute/perf/perf_thrust_unique.cu mode change 100755 => 100644 libs/compute/perf/perf_uniform_int_distribution.cpp mode change 100755 => 100644 libs/compute/perf/perf_unique.cpp mode change 100755 => 100644 libs/compute/perf/perf_unique_copy.cpp mode change 100755 => 100644 libs/compute/test/CMakeLists.txt mode change 100755 => 100644 libs/compute/test/Jamfile.v2 mode change 100755 => 100644 libs/compute/test/check/has_opencl.cpp mode change 100755 => 100644 libs/compute/test/check_macros.hpp mode change 100755 => 100644 libs/compute/test/context_setup.hpp mode change 100755 => 100644 libs/compute/test/data/invalid_program.cl mode change 100755 => 100644 libs/compute/test/data/program.cl mode change 100755 => 100644 libs/compute/test/data/program.spirv32 mode change 100755 => 100644 libs/compute/test/data/program.spirv64 mode change 100755 => 100644 libs/compute/test/extra/CMakeLists.txt mode change 100755 => 100644 libs/compute/test/extra/test_interop_eigen.cpp mode change 100755 => 100644 libs/compute/test/extra/test_interop_opencv.cpp mode change 100755 => 100644 libs/compute/test/extra/test_interop_opengl.cpp mode change 100755 => 100644 libs/compute/test/extra/test_interop_qt.cpp mode change 100755 => 100644 libs/compute/test/extra/test_interop_vtk.cpp mode change 100755 => 100644 libs/compute/test/extra/test_multiple_objects1.cpp mode change 100755 => 100644 libs/compute/test/extra/test_multiple_objects2.cpp mode change 100755 => 100644 libs/compute/test/opencl_version_check.hpp mode change 100755 => 100644 libs/compute/test/quirks.hpp mode change 100755 => 100644 libs/compute/test/test_accumulate.cpp mode change 100755 => 100644 libs/compute/test/test_adjacent_difference.cpp mode change 100755 => 100644 libs/compute/test/test_adjacent_find.cpp mode change 100755 => 100644 libs/compute/test/test_amd_cpp_kernel_language.cpp mode change 100755 => 100644 libs/compute/test/test_any_all_none_of.cpp mode change 100755 => 100644 libs/compute/test/test_array.cpp mode change 100755 => 100644 libs/compute/test/test_async_wait.cpp mode change 100755 => 100644 libs/compute/test/test_async_wait_guard.cpp mode change 100755 => 100644 libs/compute/test/test_bernoulli_distribution.cpp mode change 100755 => 100644 libs/compute/test/test_binary_search.cpp mode change 100755 => 100644 libs/compute/test/test_buffer.cpp mode change 100755 => 100644 libs/compute/test/test_buffer_allocator.cpp mode change 100755 => 100644 libs/compute/test/test_buffer_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_clamp_range.cpp mode change 100755 => 100644 libs/compute/test/test_closure.cpp mode change 100755 => 100644 libs/compute/test/test_command_queue.cpp mode change 100755 => 100644 libs/compute/test/test_complex.cpp mode change 100755 => 100644 libs/compute/test/test_constant_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_context.cpp mode change 100755 => 100644 libs/compute/test/test_context_error.cpp mode change 100755 => 100644 libs/compute/test/test_copy.cpp mode change 100755 => 100644 libs/compute/test/test_copy_if.cpp mode change 100755 => 100644 libs/compute/test/test_copy_type_mismatch.cpp mode change 100755 => 100644 libs/compute/test/test_count.cpp mode change 100755 => 100644 libs/compute/test/test_counting_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_device.cpp mode change 100755 => 100644 libs/compute/test/test_discard_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_discrete_distribution.cpp mode change 100755 => 100644 libs/compute/test/test_dynamic_bitset.cpp mode change 100755 => 100644 libs/compute/test/test_equal.cpp mode change 100755 => 100644 libs/compute/test/test_equal_range.cpp mode change 100755 => 100644 libs/compute/test/test_event.cpp mode change 100755 => 100644 libs/compute/test/test_extents.cpp mode change 100755 => 100644 libs/compute/test/test_extrema.cpp mode change 100755 => 100644 libs/compute/test/test_fill.cpp mode change 100755 => 100644 libs/compute/test/test_find.cpp mode change 100755 => 100644 libs/compute/test/test_find_end.cpp mode change 100755 => 100644 libs/compute/test/test_flat_map.cpp mode change 100755 => 100644 libs/compute/test/test_flat_set.cpp mode change 100755 => 100644 libs/compute/test/test_for_each.cpp mode change 100755 => 100644 libs/compute/test/test_function.cpp mode change 100755 => 100644 libs/compute/test/test_function_input_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_functional_as.cpp mode change 100755 => 100644 libs/compute/test/test_functional_bind.cpp mode change 100755 => 100644 libs/compute/test/test_functional_convert.cpp mode change 100755 => 100644 libs/compute/test/test_functional_get.cpp mode change 100755 => 100644 libs/compute/test/test_functional_hash.cpp mode change 100755 => 100644 libs/compute/test/test_functional_identity.cpp mode change 100755 => 100644 libs/compute/test/test_functional_popcount.cpp mode change 100755 => 100644 libs/compute/test/test_functional_unpack.cpp mode change 100755 => 100644 libs/compute/test/test_gather.cpp mode change 100755 => 100644 libs/compute/test/test_generate.cpp mode change 100755 => 100644 libs/compute/test/test_image1d.cpp mode change 100755 => 100644 libs/compute/test/test_image2d.cpp mode change 100755 => 100644 libs/compute/test/test_image3d.cpp mode change 100755 => 100644 libs/compute/test/test_image_sampler.cpp mode change 100755 => 100644 libs/compute/test/test_includes.cpp mode change 100755 => 100644 libs/compute/test/test_inner_product.cpp mode change 100755 => 100644 libs/compute/test/test_inplace_merge.cpp mode change 100755 => 100644 libs/compute/test/test_inplace_reduce.cpp mode change 100755 => 100644 libs/compute/test/test_insertion_sort.cpp mode change 100755 => 100644 libs/compute/test/test_invoke.cpp mode change 100755 => 100644 libs/compute/test/test_iota.cpp mode change 100755 => 100644 libs/compute/test/test_is_permutation.cpp mode change 100755 => 100644 libs/compute/test/test_is_sorted.cpp mode change 100755 => 100644 libs/compute/test/test_kernel.cpp mode change 100755 => 100644 libs/compute/test/test_lambda.cpp mode change 100755 => 100644 libs/compute/test/test_lexicographical_compare.cpp mode change 100755 => 100644 libs/compute/test/test_linear_congruential_engine.cpp mode change 100755 => 100644 libs/compute/test/test_literal_conversion.cpp mode change 100755 => 100644 libs/compute/test/test_local_buffer.cpp mode change 100755 => 100644 libs/compute/test/test_malloc.cpp mode change 100755 => 100644 libs/compute/test/test_mapped_view.cpp mode change 100755 => 100644 libs/compute/test/test_merge.cpp mode change 100755 => 100644 libs/compute/test/test_merge_sort_gpu.cpp mode change 100755 => 100644 libs/compute/test/test_mersenne_twister_engine.cpp mode change 100755 => 100644 libs/compute/test/test_mismatch.cpp mode change 100755 => 100644 libs/compute/test/test_next_permutation.cpp mode change 100755 => 100644 libs/compute/test/test_no_device_found.cpp mode change 100755 => 100644 libs/compute/test/test_normal_distribution.cpp mode change 100755 => 100644 libs/compute/test/test_nth_element.cpp mode change 100755 => 100644 libs/compute/test/test_opencl_error.cpp mode change 100755 => 100644 libs/compute/test/test_pair.cpp mode change 100755 => 100644 libs/compute/test/test_partial_sum.cpp mode change 100755 => 100644 libs/compute/test/test_partition.cpp mode change 100755 => 100644 libs/compute/test/test_partition_point.cpp mode change 100755 => 100644 libs/compute/test/test_permutation_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_pinned_allocator.cpp mode change 100755 => 100644 libs/compute/test/test_pipe.cpp mode change 100755 => 100644 libs/compute/test/test_platform.cpp mode change 100755 => 100644 libs/compute/test/test_prev_permutation.cpp mode change 100755 => 100644 libs/compute/test/test_program.cpp mode change 100755 => 100644 libs/compute/test/test_program_cache.cpp mode change 100755 => 100644 libs/compute/test/test_radix_sort.cpp mode change 100755 => 100644 libs/compute/test/test_radix_sort_by_key.cpp mode change 100755 => 100644 libs/compute/test/test_random_fill.cpp mode change 100755 => 100644 libs/compute/test/test_random_shuffle.cpp mode change 100755 => 100644 libs/compute/test/test_reduce.cpp mode change 100755 => 100644 libs/compute/test/test_reduce_by_key.cpp mode change 100755 => 100644 libs/compute/test/test_remove.cpp mode change 100755 => 100644 libs/compute/test/test_replace.cpp mode change 100755 => 100644 libs/compute/test/test_result_of.cpp mode change 100755 => 100644 libs/compute/test/test_reverse.cpp mode change 100755 => 100644 libs/compute/test/test_rotate.cpp mode change 100755 => 100644 libs/compute/test/test_rotate_copy.cpp mode change 100755 => 100644 libs/compute/test/test_scan.cpp mode change 100755 => 100644 libs/compute/test/test_scatter.cpp mode change 100755 => 100644 libs/compute/test/test_scatter_if.cpp mode change 100755 => 100644 libs/compute/test/test_search.cpp mode change 100755 => 100644 libs/compute/test/test_search_n.cpp mode change 100755 => 100644 libs/compute/test/test_set_difference.cpp mode change 100755 => 100644 libs/compute/test/test_set_intersection.cpp mode change 100755 => 100644 libs/compute/test/test_set_symmetric_difference.cpp mode change 100755 => 100644 libs/compute/test/test_set_union.cpp mode change 100755 => 100644 libs/compute/test/test_sort.cpp mode change 100755 => 100644 libs/compute/test/test_sort_by_key.cpp mode change 100755 => 100644 libs/compute/test/test_sort_by_transform.cpp mode change 100755 => 100644 libs/compute/test/test_stable_partition.cpp mode change 100755 => 100644 libs/compute/test/test_stable_sort.cpp mode change 100755 => 100644 libs/compute/test/test_stable_sort_by_key.cpp mode change 100755 => 100644 libs/compute/test/test_stack.cpp mode change 100755 => 100644 libs/compute/test/test_strided_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_string.cpp mode change 100755 => 100644 libs/compute/test/test_struct.cpp mode change 100755 => 100644 libs/compute/test/test_svm_ptr.cpp mode change 100755 => 100644 libs/compute/test/test_system.cpp mode change 100755 => 100644 libs/compute/test/test_tabulate.cpp mode change 100755 => 100644 libs/compute/test/test_threefry_engine.cpp mode change 100755 => 100644 libs/compute/test/test_transform.cpp mode change 100755 => 100644 libs/compute/test/test_transform_if.cpp mode change 100755 => 100644 libs/compute/test/test_transform_iterator.cpp mode change 100755 => 100644 libs/compute/test/test_transform_reduce.cpp mode change 100755 => 100644 libs/compute/test/test_tuple.cpp mode change 100755 => 100644 libs/compute/test/test_type_traits.cpp mode change 100755 => 100644 libs/compute/test/test_types.cpp mode change 100755 => 100644 libs/compute/test/test_uniform_int_distribution.cpp mode change 100755 => 100644 libs/compute/test/test_uniform_real_distribution.cpp mode change 100755 => 100644 libs/compute/test/test_unique.cpp mode change 100755 => 100644 libs/compute/test/test_unique_copy.cpp mode change 100755 => 100644 libs/compute/test/test_unsupported_extension.cpp mode change 100755 => 100644 libs/compute/test/test_user_defined_types.cpp mode change 100755 => 100644 libs/compute/test/test_user_event.cpp mode change 100755 => 100644 libs/compute/test/test_valarray.cpp mode change 100755 => 100644 libs/compute/test/test_vector.cpp mode change 100755 => 100644 libs/compute/test/test_wait_list.cpp mode change 100755 => 100644 libs/compute/test/test_zip_iterator.cpp mode change 100755 => 100644 libs/hana/CMakeLists.txt mode change 100755 => 100644 libs/hana/CONTRIBUTING.md mode change 100755 => 100644 libs/hana/LICENSE.md mode change 100755 => 100644 libs/hana/README.md mode change 100755 => 100644 libs/hana/RELEASE_NOTES.md mode change 100755 => 100644 libs/hana/benchmark/CMakeLists.txt mode change 100755 => 100644 libs/hana/benchmark/chart.html mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.erb.json mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.fusion.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.hana.map.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.hana.set.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.meta.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.mpl.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/find_if/compile.std.integer_sequence.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/bloat.erb.json mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.cexpr.recursive.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.cexpr.unrolled.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.erb.json mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.fusion.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.hana.basic_tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.meta.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.mpl.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/compile.mpl11.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/execute.erb.json mode change 100755 => 100644 libs/hana/benchmark/fold_left/execute.fusion.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/execute.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/execute.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/execute.std.array.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/fold_left/execute.std.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/including/baseline.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/including/compile.erb.json mode change 100755 => 100644 libs/hana/benchmark/including/fusion.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/including/hana.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/including/meta.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/including/mpl.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/including/mpl11.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.erb.json mode change 100755 => 100644 libs/hana/benchmark/make/compile.fusion.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.hana.basic_tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.meta.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.mpl.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.mpl11.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.std.array.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/make/compile.std.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/measure.hpp mode change 100755 => 100644 libs/hana/benchmark/reverse/move.erb.json mode change 100755 => 100644 libs/hana/benchmark/reverse/move.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/reverse/move.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/reverse/nomove.erb.json mode change 100755 => 100644 libs/hana/benchmark/reverse/nomove.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/reverse/nomove.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/sort/compile.erb.json mode change 100755 => 100644 libs/hana/benchmark/sort/compile.hana.tuple.rand.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/sort/compile.hana.tuple.reversed.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/sort/compile.hana.tuple.sorted.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/sort/compile.hana.tuple.sorted_but_first.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/sort/compile.hana.tuple.sorted_but_last.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/bloat.erb.json mode change 100755 => 100644 libs/hana/benchmark/transform/compile.erb.json mode change 100755 => 100644 libs/hana/benchmark/transform/compile.fusion.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/compile.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/compile.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/compile.hana.types.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/compile.meta.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/compile.mpl.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/compile.mpl11.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/execute.erb.json mode change 100755 => 100644 libs/hana/benchmark/transform/execute.fusion.list.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/execute.fusion.vector.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/execute.hana.tuple.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/execute.std.array.erb.cpp mode change 100755 => 100644 libs/hana/benchmark/transform/execute.std.vector.erb.cpp mode change 100755 => 100644 libs/hana/cmake/CheckCxxCompilerSupport.cmake mode change 100755 => 100644 libs/hana/cmake/FindMPL11.cmake mode change 100755 => 100644 libs/hana/cmake/FindMeta.cmake mode change 100755 => 100644 libs/hana/cmake/TestHeaders.cmake mode change 100755 => 100644 libs/hana/cmake/hana.pc.in mode change 100755 => 100644 libs/hana/doc/CMakeLists.txt mode change 100755 => 100644 libs/hana/doc/Doxyfile.in mode change 100755 => 100644 libs/hana/doc/Jamfile.v2 mode change 100755 => 100644 libs/hana/doc/footer.html mode change 100755 => 100644 libs/hana/doc/header.html mode change 100755 => 100644 libs/hana/doc/icons/Boost.png mode change 100755 => 100644 libs/hana/doc/js/chart.js mode change 100755 => 100644 libs/hana/doc/js/hana.js mode change 100755 => 100644 libs/hana/doc/js/highcharts-data.js mode change 100755 => 100644 libs/hana/doc/js/highcharts-exporting.js mode change 100755 => 100644 libs/hana/doc/js/highcharts.js mode change 100755 => 100644 libs/hana/doc/js/mathjax-config.js mode change 100755 => 100644 libs/hana/doc/layout.xml mode change 100755 => 100644 libs/hana/doc/tutorial.hpp mode change 100755 => 100644 libs/hana/example/CMakeLists.txt mode change 100755 => 100644 libs/hana/example/accessors.cpp mode change 100755 => 100644 libs/hana/example/adapt_adt.cpp mode change 100755 => 100644 libs/hana/example/adapt_struct.cpp mode change 100755 => 100644 libs/hana/example/adjust.cpp mode change 100755 => 100644 libs/hana/example/adjust_if.cpp mode change 100755 => 100644 libs/hana/example/all.cpp mode change 100755 => 100644 libs/hana/example/all_of.cpp mode change 100755 => 100644 libs/hana/example/and.cpp mode change 100755 => 100644 libs/hana/example/any.cpp mode change 100755 => 100644 libs/hana/example/any_of.cpp mode change 100755 => 100644 libs/hana/example/ap.cpp mode change 100755 => 100644 libs/hana/example/append.cpp mode change 100755 => 100644 libs/hana/example/at.cpp mode change 100755 => 100644 libs/hana/example/at_c.cpp mode change 100755 => 100644 libs/hana/example/at_key.cpp mode change 100755 => 100644 libs/hana/example/back.cpp mode change 100755 => 100644 libs/hana/example/basic_tuple/make.cpp mode change 100755 => 100644 libs/hana/example/cartesian_product.cpp mode change 100755 => 100644 libs/hana/example/chain.cpp mode change 100755 => 100644 libs/hana/example/cmake_integration/CMakeLists.txt mode change 100755 => 100644 libs/hana/example/cmake_integration/main.cpp mode change 100755 => 100644 libs/hana/example/comparing.cpp mode change 100755 => 100644 libs/hana/example/concat.cpp mode change 100755 => 100644 libs/hana/example/contains.cpp mode change 100755 => 100644 libs/hana/example/core/common/common.cpp mode change 100755 => 100644 libs/hana/example/core/common/common_t.cpp mode change 100755 => 100644 libs/hana/example/core/common/has_common.cpp mode change 100755 => 100644 libs/hana/example/core/convert/embedding.cpp mode change 100755 => 100644 libs/hana/example/core/convert/is_convertible.cpp mode change 100755 => 100644 libs/hana/example/core/convert/is_embedded.cpp mode change 100755 => 100644 libs/hana/example/core/convert/to.cpp mode change 100755 => 100644 libs/hana/example/core/default.cpp mode change 100755 => 100644 libs/hana/example/core/is_a.cpp mode change 100755 => 100644 libs/hana/example/core/make.cpp mode change 100755 => 100644 libs/hana/example/core/tag_of.cpp mode change 100755 => 100644 libs/hana/example/core/tag_of_t.cpp mode change 100755 => 100644 libs/hana/example/core/when.cpp mode change 100755 => 100644 libs/hana/example/core/when_valid.cpp mode change 100755 => 100644 libs/hana/example/count.cpp mode change 100755 => 100644 libs/hana/example/count_if.cpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/comparable.cpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/det.cpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/functor.cpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix.cpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/comparable.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/det.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/functor.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/group.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/matrix.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/monoid.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/matrix/ring.hpp mode change 100755 => 100644 libs/hana/example/cppcon_2014/ring.cpp mode change 100755 => 100644 libs/hana/example/cycle.cpp mode change 100755 => 100644 libs/hana/example/define_struct.cpp mode change 100755 => 100644 libs/hana/example/detail/wrong.cpp mode change 100755 => 100644 libs/hana/example/div.cpp mode change 100755 => 100644 libs/hana/example/drop_back.cpp mode change 100755 => 100644 libs/hana/example/drop_front.cpp mode change 100755 => 100644 libs/hana/example/drop_front_exactly.cpp mode change 100755 => 100644 libs/hana/example/drop_while.cpp mode change 100755 => 100644 libs/hana/example/duplicate.cpp mode change 100755 => 100644 libs/hana/example/empty.cpp mode change 100755 => 100644 libs/hana/example/equal.cpp mode change 100755 => 100644 libs/hana/example/eval.cpp mode change 100755 => 100644 libs/hana/example/eval_if.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/fusion/deque.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/fusion/list.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/fusion/tuple.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/fusion/vector.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/integral_c/integral_constant.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/list/comparable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/list/conversion.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/list/foldable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/list/iterable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/list/searchable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/vector/comparable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/vector/conversion.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/vector/foldable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/vector/iterable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/mpl/vector/searchable.cpp mode change 100755 => 100644 libs/hana/example/ext/boost/tuple.cpp mode change 100755 => 100644 libs/hana/example/ext/std/array/comparable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/array/foldable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/array/iterable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/array/orderable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/integer_sequence/comparable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/integer_sequence/foldable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/integer_sequence/iterable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/integer_sequence/searchable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/integral_constant.cpp mode change 100755 => 100644 libs/hana/example/ext/std/pair.cpp mode change 100755 => 100644 libs/hana/example/ext/std/ratio/arithmetic.cpp mode change 100755 => 100644 libs/hana/example/ext/std/ratio/comparable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/ratio/orderable.cpp mode change 100755 => 100644 libs/hana/example/ext/std/tuple.cpp mode change 100755 => 100644 libs/hana/example/extend.cpp mode change 100755 => 100644 libs/hana/example/extract.cpp mode change 100755 => 100644 libs/hana/example/fill.cpp mode change 100755 => 100644 libs/hana/example/filter.cpp mode change 100755 => 100644 libs/hana/example/find.cpp mode change 100755 => 100644 libs/hana/example/find_if.cpp mode change 100755 => 100644 libs/hana/example/first.cpp mode change 100755 => 100644 libs/hana/example/flatten.cpp mode change 100755 => 100644 libs/hana/example/fold.cpp mode change 100755 => 100644 libs/hana/example/fold_left.cpp mode change 100755 => 100644 libs/hana/example/fold_right.cpp mode change 100755 => 100644 libs/hana/example/foldable/to.cpp mode change 100755 => 100644 libs/hana/example/for_each.cpp mode change 100755 => 100644 libs/hana/example/front.cpp mode change 100755 => 100644 libs/hana/example/functional/always.cpp mode change 100755 => 100644 libs/hana/example/functional/apply.cpp mode change 100755 => 100644 libs/hana/example/functional/arg.cpp mode change 100755 => 100644 libs/hana/example/functional/capture.cpp mode change 100755 => 100644 libs/hana/example/functional/compose.cpp mode change 100755 => 100644 libs/hana/example/functional/curry.cpp mode change 100755 => 100644 libs/hana/example/functional/demux.cpp mode change 100755 => 100644 libs/hana/example/functional/fix.cpp mode change 100755 => 100644 libs/hana/example/functional/flip.cpp mode change 100755 => 100644 libs/hana/example/functional/id.cpp mode change 100755 => 100644 libs/hana/example/functional/infix.cpp mode change 100755 => 100644 libs/hana/example/functional/iterate.cpp mode change 100755 => 100644 libs/hana/example/functional/lockstep.cpp mode change 100755 => 100644 libs/hana/example/functional/on.cpp mode change 100755 => 100644 libs/hana/example/functional/overload.cpp mode change 100755 => 100644 libs/hana/example/functional/overload_linearly.cpp mode change 100755 => 100644 libs/hana/example/functional/partial.cpp mode change 100755 => 100644 libs/hana/example/functional/placeholder.cpp mode change 100755 => 100644 libs/hana/example/functional/reverse_partial.cpp mode change 100755 => 100644 libs/hana/example/fuse.cpp mode change 100755 => 100644 libs/hana/example/greater.cpp mode change 100755 => 100644 libs/hana/example/greater_equal.cpp mode change 100755 => 100644 libs/hana/example/group.cpp mode change 100755 => 100644 libs/hana/example/hash.cpp mode change 100755 => 100644 libs/hana/example/if.cpp mode change 100755 => 100644 libs/hana/example/in.cpp mode change 100755 => 100644 libs/hana/example/index_if.cpp mode change 100755 => 100644 libs/hana/example/insert.cpp mode change 100755 => 100644 libs/hana/example/insert_range.cpp mode change 100755 => 100644 libs/hana/example/integral_constant.cpp mode change 100755 => 100644 libs/hana/example/intersperse.cpp mode change 100755 => 100644 libs/hana/example/is_disjoint.cpp mode change 100755 => 100644 libs/hana/example/is_empty.cpp mode change 100755 => 100644 libs/hana/example/is_subset.cpp mode change 100755 => 100644 libs/hana/example/iterable/searchable.cpp mode change 100755 => 100644 libs/hana/example/lazy/comonad.cpp mode change 100755 => 100644 libs/hana/example/lazy/functor.cpp mode change 100755 => 100644 libs/hana/example/lazy/make.cpp mode change 100755 => 100644 libs/hana/example/lazy/monad.cpp mode change 100755 => 100644 libs/hana/example/length.cpp mode change 100755 => 100644 libs/hana/example/less.cpp mode change 100755 => 100644 libs/hana/example/less_equal.cpp mode change 100755 => 100644 libs/hana/example/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/example/lift.cpp mode change 100755 => 100644 libs/hana/example/map/comparable.cpp mode change 100755 => 100644 libs/hana/example/map/difference.cpp mode change 100755 => 100644 libs/hana/example/map/erase_key.cpp mode change 100755 => 100644 libs/hana/example/map/foldable.cpp mode change 100755 => 100644 libs/hana/example/map/insert.cpp mode change 100755 => 100644 libs/hana/example/map/intersection.cpp mode change 100755 => 100644 libs/hana/example/map/keys.cpp mode change 100755 => 100644 libs/hana/example/map/make.cpp mode change 100755 => 100644 libs/hana/example/map/map.cpp mode change 100755 => 100644 libs/hana/example/map/searchable.cpp mode change 100755 => 100644 libs/hana/example/map/symmetric_difference.cpp mode change 100755 => 100644 libs/hana/example/map/to.cpp mode change 100755 => 100644 libs/hana/example/map/union.cpp mode change 100755 => 100644 libs/hana/example/map/values.cpp mode change 100755 => 100644 libs/hana/example/max.cpp mode change 100755 => 100644 libs/hana/example/maximum.cpp mode change 100755 => 100644 libs/hana/example/maximum_by.cpp mode change 100755 => 100644 libs/hana/example/members.cpp mode change 100755 => 100644 libs/hana/example/min.cpp mode change 100755 => 100644 libs/hana/example/minimum.cpp mode change 100755 => 100644 libs/hana/example/minimum_by.cpp mode change 100755 => 100644 libs/hana/example/minus.cpp mode change 100755 => 100644 libs/hana/example/misc/dimensional_analysis.cpp mode change 100755 => 100644 libs/hana/example/misc/from_json.cpp mode change 100755 => 100644 libs/hana/example/misc/indexed_sort.cpp mode change 100755 => 100644 libs/hana/example/misc/infinite_list.cpp mode change 100755 => 100644 libs/hana/example/misc/infinite_set.cpp mode change 100755 => 100644 libs/hana/example/misc/lambda_tuple.cpp mode change 100755 => 100644 libs/hana/example/misc/nth.cpp mode change 100755 => 100644 libs/hana/example/misc/overload_linearly.cpp mode change 100755 => 100644 libs/hana/example/misc/printf.cpp mode change 100755 => 100644 libs/hana/example/misc/ref_tuple.cpp mode change 100755 => 100644 libs/hana/example/misc/restricted_function.cpp mode change 100755 => 100644 libs/hana/example/misc/tree.cpp mode change 100755 => 100644 libs/hana/example/mod.cpp mode change 100755 => 100644 libs/hana/example/monadic_compose.cpp mode change 100755 => 100644 libs/hana/example/monadic_fold_left.cpp mode change 100755 => 100644 libs/hana/example/monadic_fold_right.cpp mode change 100755 => 100644 libs/hana/example/mult.cpp mode change 100755 => 100644 libs/hana/example/negate.cpp mode change 100755 => 100644 libs/hana/example/none.cpp mode change 100755 => 100644 libs/hana/example/none_of.cpp mode change 100755 => 100644 libs/hana/example/not.cpp mode change 100755 => 100644 libs/hana/example/not_equal.cpp mode change 100755 => 100644 libs/hana/example/one.cpp mode change 100755 => 100644 libs/hana/example/optional/applicative.complex.cpp mode change 100755 => 100644 libs/hana/example/optional/applicative.cpp mode change 100755 => 100644 libs/hana/example/optional/comparable.cpp mode change 100755 => 100644 libs/hana/example/optional/foldable.cpp mode change 100755 => 100644 libs/hana/example/optional/functor.cpp mode change 100755 => 100644 libs/hana/example/optional/is_just.cpp mode change 100755 => 100644 libs/hana/example/optional/is_nothing.cpp mode change 100755 => 100644 libs/hana/example/optional/just.cpp mode change 100755 => 100644 libs/hana/example/optional/make.cpp mode change 100755 => 100644 libs/hana/example/optional/maybe.cpp mode change 100755 => 100644 libs/hana/example/optional/monad.cpp mode change 100755 => 100644 libs/hana/example/optional/monad_plus.cpp mode change 100755 => 100644 libs/hana/example/optional/nothing.cpp mode change 100755 => 100644 libs/hana/example/optional/orderable.cpp mode change 100755 => 100644 libs/hana/example/optional/searchable.cpp mode change 100755 => 100644 libs/hana/example/optional/sfinae.cpp mode change 100755 => 100644 libs/hana/example/optional/sfinae_friendly_metafunctions.cpp mode change 100755 => 100644 libs/hana/example/optional/value.cpp mode change 100755 => 100644 libs/hana/example/optional/value_or.cpp mode change 100755 => 100644 libs/hana/example/or.cpp mode change 100755 => 100644 libs/hana/example/ordering.cpp mode change 100755 => 100644 libs/hana/example/overview.cpp mode change 100755 => 100644 libs/hana/example/pair/comparable.cpp mode change 100755 => 100644 libs/hana/example/pair/foldable.cpp mode change 100755 => 100644 libs/hana/example/pair/make.cpp mode change 100755 => 100644 libs/hana/example/pair/orderable.cpp mode change 100755 => 100644 libs/hana/example/pair/product.cpp mode change 100755 => 100644 libs/hana/example/partition.cpp mode change 100755 => 100644 libs/hana/example/permutations.cpp mode change 100755 => 100644 libs/hana/example/plus.cpp mode change 100755 => 100644 libs/hana/example/power.cpp mode change 100755 => 100644 libs/hana/example/prefix.cpp mode change 100755 => 100644 libs/hana/example/prepend.cpp mode change 100755 => 100644 libs/hana/example/product.cpp mode change 100755 => 100644 libs/hana/example/product/comparable.cpp mode change 100755 => 100644 libs/hana/example/product/make.cpp mode change 100755 => 100644 libs/hana/example/range/comparable.cpp mode change 100755 => 100644 libs/hana/example/range/foldable.cpp mode change 100755 => 100644 libs/hana/example/range/iterable.cpp mode change 100755 => 100644 libs/hana/example/range/make.cpp mode change 100755 => 100644 libs/hana/example/range/range_c.cpp mode change 100755 => 100644 libs/hana/example/range/searchable.cpp mode change 100755 => 100644 libs/hana/example/remove.cpp mode change 100755 => 100644 libs/hana/example/remove_at.cpp mode change 100755 => 100644 libs/hana/example/remove_at_c.cpp mode change 100755 => 100644 libs/hana/example/remove_if.cpp mode change 100755 => 100644 libs/hana/example/remove_range.cpp mode change 100755 => 100644 libs/hana/example/remove_range_c.cpp mode change 100755 => 100644 libs/hana/example/repeat.cpp mode change 100755 => 100644 libs/hana/example/replace.cpp mode change 100755 => 100644 libs/hana/example/replace_if.cpp mode change 100755 => 100644 libs/hana/example/replicate.cpp mode change 100755 => 100644 libs/hana/example/reverse.cpp mode change 100755 => 100644 libs/hana/example/reverse_fold.cpp mode change 100755 => 100644 libs/hana/example/scan_left.cpp mode change 100755 => 100644 libs/hana/example/scan_right.cpp mode change 100755 => 100644 libs/hana/example/second.cpp mode change 100755 => 100644 libs/hana/example/sequence/applicative.cpp mode change 100755 => 100644 libs/hana/example/sequence/comparable.cpp mode change 100755 => 100644 libs/hana/example/sequence/foldable.cpp mode change 100755 => 100644 libs/hana/example/sequence/functor.cpp mode change 100755 => 100644 libs/hana/example/sequence/iterable.cpp mode change 100755 => 100644 libs/hana/example/sequence/make.cpp mode change 100755 => 100644 libs/hana/example/sequence/monad.ints.cpp mode change 100755 => 100644 libs/hana/example/sequence/monad.types.cpp mode change 100755 => 100644 libs/hana/example/sequence/monad_plus.cpp mode change 100755 => 100644 libs/hana/example/sequence/orderable.cpp mode change 100755 => 100644 libs/hana/example/sequence/searchable.cpp mode change 100755 => 100644 libs/hana/example/set/comparable.cpp mode change 100755 => 100644 libs/hana/example/set/difference.cpp mode change 100755 => 100644 libs/hana/example/set/erase_key.cpp mode change 100755 => 100644 libs/hana/example/set/foldable.cpp mode change 100755 => 100644 libs/hana/example/set/insert.cpp mode change 100755 => 100644 libs/hana/example/set/intersection.cpp mode change 100755 => 100644 libs/hana/example/set/make.cpp mode change 100755 => 100644 libs/hana/example/set/searchable.cpp mode change 100755 => 100644 libs/hana/example/set/symmetric_difference.cpp mode change 100755 => 100644 libs/hana/example/set/to.cpp mode change 100755 => 100644 libs/hana/example/set/union.cpp mode change 100755 => 100644 libs/hana/example/size.cpp mode change 100755 => 100644 libs/hana/example/slice.cpp mode change 100755 => 100644 libs/hana/example/slice_c.cpp mode change 100755 => 100644 libs/hana/example/sort.cpp mode change 100755 => 100644 libs/hana/example/span.cpp mode change 100755 => 100644 libs/hana/example/string/comparable.cpp mode change 100755 => 100644 libs/hana/example/string/foldable.cpp mode change 100755 => 100644 libs/hana/example/string/from_c_str.cpp mode change 100755 => 100644 libs/hana/example/string/hashable.cpp mode change 100755 => 100644 libs/hana/example/string/iterable.cpp mode change 100755 => 100644 libs/hana/example/string/literal.cpp mode change 100755 => 100644 libs/hana/example/string/macro.cpp mode change 100755 => 100644 libs/hana/example/string/make.cpp mode change 100755 => 100644 libs/hana/example/string/monoid.cpp mode change 100755 => 100644 libs/hana/example/string/orderable.cpp mode change 100755 => 100644 libs/hana/example/string/searchable.cpp mode change 100755 => 100644 libs/hana/example/string/string_c.cpp mode change 100755 => 100644 libs/hana/example/string/to.cpp mode change 100755 => 100644 libs/hana/example/struct.custom_accessor.cpp mode change 100755 => 100644 libs/hana/example/struct.mcd.nested.cpp mode change 100755 => 100644 libs/hana/example/struct.mcd.tag_dispatching.cpp mode change 100755 => 100644 libs/hana/example/struct/comparable.cpp mode change 100755 => 100644 libs/hana/example/struct/foldable.cpp mode change 100755 => 100644 libs/hana/example/struct/keys.cpp mode change 100755 => 100644 libs/hana/example/struct/searchable.cpp mode change 100755 => 100644 libs/hana/example/struct/to.cpp mode change 100755 => 100644 libs/hana/example/suffix.cpp mode change 100755 => 100644 libs/hana/example/sum.cpp mode change 100755 => 100644 libs/hana/example/take_back.cpp mode change 100755 => 100644 libs/hana/example/take_back_c.cpp mode change 100755 => 100644 libs/hana/example/take_front.cpp mode change 100755 => 100644 libs/hana/example/take_front_c.cpp mode change 100755 => 100644 libs/hana/example/take_while.cpp mode change 100755 => 100644 libs/hana/example/tap.cpp mode change 100755 => 100644 libs/hana/example/then.cpp mode change 100755 => 100644 libs/hana/example/transform.cpp mode change 100755 => 100644 libs/hana/example/tuple/foldable.cpp mode change 100755 => 100644 libs/hana/example/tuple/interop.cpp mode change 100755 => 100644 libs/hana/example/tuple/make.cpp mode change 100755 => 100644 libs/hana/example/tuple/tuple.cpp mode change 100755 => 100644 libs/hana/example/tuple/tuple_c.cpp mode change 100755 => 100644 libs/hana/example/tuple/tuple_t.cpp mode change 100755 => 100644 libs/hana/example/tutorial/algorithms.cpp mode change 100755 => 100644 libs/hana/example/tutorial/appendix_mpl.cpp mode change 100755 => 100644 libs/hana/example/tutorial/concepts.cpp mode change 100755 => 100644 libs/hana/example/tutorial/constant_side_effects.cpp mode change 100755 => 100644 libs/hana/example/tutorial/containers.cpp mode change 100755 => 100644 libs/hana/example/tutorial/ext/fusion_to_hana.cpp mode change 100755 => 100644 libs/hana/example/tutorial/ext/mpl_vector.cpp mode change 100755 => 100644 libs/hana/example/tutorial/ext/ratio_plus.cpp mode change 100755 => 100644 libs/hana/example/tutorial/include_ext.cpp mode change 100755 => 100644 libs/hana/example/tutorial/integral-branching.cpp mode change 100755 => 100644 libs/hana/example/tutorial/integral.cpp mode change 100755 => 100644 libs/hana/example/tutorial/introduction.cpp mode change 100755 => 100644 libs/hana/example/tutorial/introspection.adapt.cpp mode change 100755 => 100644 libs/hana/example/tutorial/introspection.cpp mode change 100755 => 100644 libs/hana/example/tutorial/introspection.json.cpp mode change 100755 => 100644 libs/hana/example/tutorial/introspection.sfinae.cpp mode change 100755 => 100644 libs/hana/example/tutorial/mpl_cheatsheet.cpp mode change 100755 => 100644 libs/hana/example/tutorial/quickstart.cpp mode change 100755 => 100644 libs/hana/example/tutorial/quickstart.switchAny.cpp mode change 100755 => 100644 libs/hana/example/tutorial/rationale.container.cpp mode change 100755 => 100644 libs/hana/example/tutorial/tag_dispatching.cpp mode change 100755 => 100644 libs/hana/example/tutorial/type.cpp mode change 100755 => 100644 libs/hana/example/type/alignof.cpp mode change 100755 => 100644 libs/hana/example/type/basic_type.cpp mode change 100755 => 100644 libs/hana/example/type/comparable.cpp mode change 100755 => 100644 libs/hana/example/type/decltype.cpp mode change 100755 => 100644 libs/hana/example/type/hashable.cpp mode change 100755 => 100644 libs/hana/example/type/integral.cpp mode change 100755 => 100644 libs/hana/example/type/is_valid.cpp mode change 100755 => 100644 libs/hana/example/type/make.cpp mode change 100755 => 100644 libs/hana/example/type/metafunction.cpp mode change 100755 => 100644 libs/hana/example/type/metafunction_class.cpp mode change 100755 => 100644 libs/hana/example/type/sizeof.cpp mode change 100755 => 100644 libs/hana/example/type/template.cpp mode change 100755 => 100644 libs/hana/example/type/trait.cpp mode change 100755 => 100644 libs/hana/example/type/typeid.cpp mode change 100755 => 100644 libs/hana/example/unfold_left.cpp mode change 100755 => 100644 libs/hana/example/unfold_right.cpp mode change 100755 => 100644 libs/hana/example/unique.cpp mode change 100755 => 100644 libs/hana/example/unpack.cpp mode change 100755 => 100644 libs/hana/example/value.cpp mode change 100755 => 100644 libs/hana/example/value_of.cpp mode change 100755 => 100644 libs/hana/example/version.cpp mode change 100755 => 100644 libs/hana/example/wandbox.cpp mode change 100755 => 100644 libs/hana/example/while.cpp mode change 100755 => 100644 libs/hana/example/zero.cpp mode change 100755 => 100644 libs/hana/example/zip.cpp mode change 100755 => 100644 libs/hana/example/zip_shortest.cpp mode change 100755 => 100644 libs/hana/example/zip_shortest_with.cpp mode change 100755 => 100644 libs/hana/example/zip_with.cpp mode change 100755 => 100644 libs/hana/hana.sublime-project create mode 100644 libs/hana/include/boost/hana.hpp create mode 100644 libs/hana/include/boost/hana/accessors.hpp create mode 100644 libs/hana/include/boost/hana/adapt_adt.hpp create mode 100644 libs/hana/include/boost/hana/adapt_struct.hpp create mode 100644 libs/hana/include/boost/hana/adjust.hpp create mode 100644 libs/hana/include/boost/hana/adjust_if.hpp create mode 100644 libs/hana/include/boost/hana/all.hpp create mode 100644 libs/hana/include/boost/hana/all_of.hpp create mode 100644 libs/hana/include/boost/hana/and.hpp create mode 100644 libs/hana/include/boost/hana/any.hpp create mode 100644 libs/hana/include/boost/hana/any_of.hpp create mode 100644 libs/hana/include/boost/hana/ap.hpp create mode 100644 libs/hana/include/boost/hana/append.hpp create mode 100644 libs/hana/include/boost/hana/assert.hpp create mode 100644 libs/hana/include/boost/hana/at.hpp create mode 100644 libs/hana/include/boost/hana/at_key.hpp create mode 100644 libs/hana/include/boost/hana/back.hpp create mode 100644 libs/hana/include/boost/hana/basic_tuple.hpp create mode 100644 libs/hana/include/boost/hana/bool.hpp create mode 100644 libs/hana/include/boost/hana/cartesian_product.hpp create mode 100644 libs/hana/include/boost/hana/chain.hpp create mode 100644 libs/hana/include/boost/hana/comparing.hpp create mode 100644 libs/hana/include/boost/hana/concat.hpp create mode 100644 libs/hana/include/boost/hana/concept.hpp create mode 100644 libs/hana/include/boost/hana/concept/applicative.hpp create mode 100644 libs/hana/include/boost/hana/concept/comonad.hpp create mode 100644 libs/hana/include/boost/hana/concept/comparable.hpp create mode 100644 libs/hana/include/boost/hana/concept/constant.hpp create mode 100644 libs/hana/include/boost/hana/concept/euclidean_ring.hpp create mode 100644 libs/hana/include/boost/hana/concept/foldable.hpp create mode 100644 libs/hana/include/boost/hana/concept/functor.hpp create mode 100644 libs/hana/include/boost/hana/concept/group.hpp create mode 100644 libs/hana/include/boost/hana/concept/hashable.hpp create mode 100644 libs/hana/include/boost/hana/concept/integral_constant.hpp create mode 100644 libs/hana/include/boost/hana/concept/iterable.hpp create mode 100644 libs/hana/include/boost/hana/concept/logical.hpp create mode 100644 libs/hana/include/boost/hana/concept/metafunction.hpp create mode 100644 libs/hana/include/boost/hana/concept/monad.hpp create mode 100644 libs/hana/include/boost/hana/concept/monad_plus.hpp create mode 100644 libs/hana/include/boost/hana/concept/monoid.hpp create mode 100644 libs/hana/include/boost/hana/concept/orderable.hpp create mode 100644 libs/hana/include/boost/hana/concept/product.hpp create mode 100644 libs/hana/include/boost/hana/concept/ring.hpp create mode 100644 libs/hana/include/boost/hana/concept/searchable.hpp create mode 100644 libs/hana/include/boost/hana/concept/sequence.hpp create mode 100644 libs/hana/include/boost/hana/concept/struct.hpp create mode 100644 libs/hana/include/boost/hana/config.hpp create mode 100644 libs/hana/include/boost/hana/contains.hpp create mode 100644 libs/hana/include/boost/hana/core.hpp create mode 100644 libs/hana/include/boost/hana/core/common.hpp create mode 100644 libs/hana/include/boost/hana/core/default.hpp create mode 100644 libs/hana/include/boost/hana/core/dispatch.hpp create mode 100644 libs/hana/include/boost/hana/core/is_a.hpp create mode 100644 libs/hana/include/boost/hana/core/make.hpp create mode 100644 libs/hana/include/boost/hana/core/tag_of.hpp create mode 100644 libs/hana/include/boost/hana/core/to.hpp create mode 100644 libs/hana/include/boost/hana/core/when.hpp create mode 100644 libs/hana/include/boost/hana/count.hpp create mode 100644 libs/hana/include/boost/hana/count_if.hpp create mode 100644 libs/hana/include/boost/hana/cycle.hpp create mode 100644 libs/hana/include/boost/hana/define_struct.hpp create mode 100644 libs/hana/include/boost/hana/detail/algorithm.hpp create mode 100644 libs/hana/include/boost/hana/detail/any_of.hpp create mode 100644 libs/hana/include/boost/hana/detail/array.hpp create mode 100644 libs/hana/include/boost/hana/detail/canonical_constant.hpp create mode 100644 libs/hana/include/boost/hana/detail/concepts.hpp create mode 100644 libs/hana/include/boost/hana/detail/create.hpp create mode 100644 libs/hana/include/boost/hana/detail/decay.hpp create mode 100644 libs/hana/include/boost/hana/detail/dispatch_if.hpp create mode 100644 libs/hana/include/boost/hana/detail/ebo.hpp create mode 100644 libs/hana/include/boost/hana/detail/fast_and.hpp create mode 100644 libs/hana/include/boost/hana/detail/first_unsatisfied_index.hpp create mode 100644 libs/hana/include/boost/hana/detail/has_common_embedding.hpp create mode 100644 libs/hana/include/boost/hana/detail/has_duplicates.hpp create mode 100644 libs/hana/include/boost/hana/detail/hash_table.hpp create mode 100644 libs/hana/include/boost/hana/detail/index_if.hpp create mode 100644 libs/hana/include/boost/hana/detail/integral_constant.hpp create mode 100644 libs/hana/include/boost/hana/detail/intrinsics.hpp create mode 100644 libs/hana/include/boost/hana/detail/nested_by.hpp create mode 100644 libs/hana/include/boost/hana/detail/nested_by_fwd.hpp create mode 100644 libs/hana/include/boost/hana/detail/nested_than.hpp create mode 100644 libs/hana/include/boost/hana/detail/nested_than_fwd.hpp create mode 100644 libs/hana/include/boost/hana/detail/nested_to.hpp create mode 100644 libs/hana/include/boost/hana/detail/nested_to_fwd.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/adl.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/arithmetic.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/comparable.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/iterable.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/logical.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/monad.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/orderable.hpp create mode 100644 libs/hana/include/boost/hana/detail/operators/searchable.hpp create mode 100644 libs/hana/include/boost/hana/detail/preprocessor.hpp create mode 100644 libs/hana/include/boost/hana/detail/std_common_type.hpp create mode 100644 libs/hana/include/boost/hana/detail/struct_macros.hpp create mode 100644 libs/hana/include/boost/hana/detail/struct_macros.hpp.erb create mode 100644 libs/hana/include/boost/hana/detail/type_at.hpp create mode 100644 libs/hana/include/boost/hana/detail/type_foldl1.hpp create mode 100644 libs/hana/include/boost/hana/detail/type_foldr1.hpp create mode 100644 libs/hana/include/boost/hana/detail/unpack_flatten.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/at.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/drop_into.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/foldl1.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/foldr1.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/reverse_apply.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/reverse_apply/flat.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/reverse_apply/unrolled.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/split_at.hpp create mode 100644 libs/hana/include/boost/hana/detail/variadic/take.hpp create mode 100644 libs/hana/include/boost/hana/detail/void_t.hpp create mode 100644 libs/hana/include/boost/hana/detail/wrong.hpp create mode 100644 libs/hana/include/boost/hana/difference.hpp create mode 100644 libs/hana/include/boost/hana/div.hpp create mode 100644 libs/hana/include/boost/hana/drop_back.hpp create mode 100644 libs/hana/include/boost/hana/drop_front.hpp create mode 100644 libs/hana/include/boost/hana/drop_front_exactly.hpp create mode 100644 libs/hana/include/boost/hana/drop_while.hpp create mode 100644 libs/hana/include/boost/hana/duplicate.hpp create mode 100644 libs/hana/include/boost/hana/empty.hpp create mode 100644 libs/hana/include/boost/hana/equal.hpp create mode 100644 libs/hana/include/boost/hana/erase_key.hpp create mode 100644 libs/hana/include/boost/hana/eval.hpp create mode 100644 libs/hana/include/boost/hana/eval_if.hpp create mode 100644 libs/hana/include/boost/hana/experimental/printable.hpp create mode 100644 libs/hana/include/boost/hana/experimental/type_name.hpp create mode 100644 libs/hana/include/boost/hana/experimental/types.hpp create mode 100644 libs/hana/include/boost/hana/experimental/view.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/fusion.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/fusion/deque.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/fusion/detail/common.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/fusion/list.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/fusion/tuple.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/fusion/vector.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/mpl.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/mpl/integral_c.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/mpl/list.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/mpl/vector.hpp create mode 100644 libs/hana/include/boost/hana/ext/boost/tuple.hpp create mode 100644 libs/hana/include/boost/hana/ext/std.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/array.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/integer_sequence.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/integral_constant.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/pair.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/ratio.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/tuple.hpp create mode 100644 libs/hana/include/boost/hana/ext/std/vector.hpp create mode 100644 libs/hana/include/boost/hana/extend.hpp create mode 100644 libs/hana/include/boost/hana/extract.hpp create mode 100644 libs/hana/include/boost/hana/fill.hpp create mode 100644 libs/hana/include/boost/hana/filter.hpp create mode 100644 libs/hana/include/boost/hana/find.hpp create mode 100644 libs/hana/include/boost/hana/find_if.hpp create mode 100644 libs/hana/include/boost/hana/first.hpp create mode 100644 libs/hana/include/boost/hana/flatten.hpp create mode 100644 libs/hana/include/boost/hana/fold.hpp create mode 100644 libs/hana/include/boost/hana/fold_left.hpp create mode 100644 libs/hana/include/boost/hana/fold_right.hpp create mode 100644 libs/hana/include/boost/hana/for_each.hpp create mode 100644 libs/hana/include/boost/hana/front.hpp create mode 100644 libs/hana/include/boost/hana/functional.hpp create mode 100644 libs/hana/include/boost/hana/functional/always.hpp create mode 100644 libs/hana/include/boost/hana/functional/apply.hpp create mode 100644 libs/hana/include/boost/hana/functional/arg.hpp create mode 100644 libs/hana/include/boost/hana/functional/capture.hpp create mode 100644 libs/hana/include/boost/hana/functional/compose.hpp create mode 100644 libs/hana/include/boost/hana/functional/curry.hpp create mode 100644 libs/hana/include/boost/hana/functional/demux.hpp create mode 100644 libs/hana/include/boost/hana/functional/fix.hpp create mode 100644 libs/hana/include/boost/hana/functional/flip.hpp create mode 100644 libs/hana/include/boost/hana/functional/id.hpp create mode 100644 libs/hana/include/boost/hana/functional/infix.hpp create mode 100644 libs/hana/include/boost/hana/functional/iterate.hpp create mode 100644 libs/hana/include/boost/hana/functional/lockstep.hpp create mode 100644 libs/hana/include/boost/hana/functional/on.hpp create mode 100644 libs/hana/include/boost/hana/functional/overload.hpp create mode 100644 libs/hana/include/boost/hana/functional/overload_linearly.hpp create mode 100644 libs/hana/include/boost/hana/functional/partial.hpp create mode 100644 libs/hana/include/boost/hana/functional/placeholder.hpp create mode 100644 libs/hana/include/boost/hana/functional/reverse_partial.hpp create mode 100644 libs/hana/include/boost/hana/fuse.hpp create mode 100644 libs/hana/include/boost/hana/fwd/accessors.hpp create mode 100644 libs/hana/include/boost/hana/fwd/adapt_adt.hpp create mode 100644 libs/hana/include/boost/hana/fwd/adapt_struct.hpp create mode 100644 libs/hana/include/boost/hana/fwd/adjust.hpp create mode 100644 libs/hana/include/boost/hana/fwd/adjust_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/all.hpp create mode 100644 libs/hana/include/boost/hana/fwd/all_of.hpp create mode 100644 libs/hana/include/boost/hana/fwd/and.hpp create mode 100644 libs/hana/include/boost/hana/fwd/any.hpp create mode 100644 libs/hana/include/boost/hana/fwd/any_of.hpp create mode 100644 libs/hana/include/boost/hana/fwd/ap.hpp create mode 100644 libs/hana/include/boost/hana/fwd/append.hpp create mode 100644 libs/hana/include/boost/hana/fwd/at.hpp create mode 100644 libs/hana/include/boost/hana/fwd/at_key.hpp create mode 100644 libs/hana/include/boost/hana/fwd/back.hpp create mode 100644 libs/hana/include/boost/hana/fwd/basic_tuple.hpp create mode 100644 libs/hana/include/boost/hana/fwd/bool.hpp create mode 100644 libs/hana/include/boost/hana/fwd/cartesian_product.hpp create mode 100644 libs/hana/include/boost/hana/fwd/chain.hpp create mode 100644 libs/hana/include/boost/hana/fwd/comparing.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concat.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/applicative.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/comonad.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/comparable.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/constant.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/euclidean_ring.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/foldable.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/functor.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/group.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/hashable.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/integral_constant.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/iterable.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/logical.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/metafunction.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/monad.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/monad_plus.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/monoid.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/orderable.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/product.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/ring.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/searchable.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/sequence.hpp create mode 100644 libs/hana/include/boost/hana/fwd/concept/struct.hpp create mode 100644 libs/hana/include/boost/hana/fwd/contains.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/common.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/default.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/is_a.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/make.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/tag_of.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/to.hpp create mode 100644 libs/hana/include/boost/hana/fwd/core/when.hpp create mode 100644 libs/hana/include/boost/hana/fwd/count.hpp create mode 100644 libs/hana/include/boost/hana/fwd/count_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/cycle.hpp create mode 100644 libs/hana/include/boost/hana/fwd/define_struct.hpp create mode 100644 libs/hana/include/boost/hana/fwd/difference.hpp create mode 100644 libs/hana/include/boost/hana/fwd/div.hpp create mode 100644 libs/hana/include/boost/hana/fwd/drop_back.hpp create mode 100644 libs/hana/include/boost/hana/fwd/drop_front.hpp create mode 100644 libs/hana/include/boost/hana/fwd/drop_front_exactly.hpp create mode 100644 libs/hana/include/boost/hana/fwd/drop_while.hpp create mode 100644 libs/hana/include/boost/hana/fwd/duplicate.hpp create mode 100644 libs/hana/include/boost/hana/fwd/empty.hpp create mode 100644 libs/hana/include/boost/hana/fwd/equal.hpp create mode 100644 libs/hana/include/boost/hana/fwd/erase_key.hpp create mode 100644 libs/hana/include/boost/hana/fwd/eval.hpp create mode 100644 libs/hana/include/boost/hana/fwd/eval_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/extend.hpp create mode 100644 libs/hana/include/boost/hana/fwd/extract.hpp create mode 100644 libs/hana/include/boost/hana/fwd/fill.hpp create mode 100644 libs/hana/include/boost/hana/fwd/filter.hpp create mode 100644 libs/hana/include/boost/hana/fwd/find.hpp create mode 100644 libs/hana/include/boost/hana/fwd/find_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/first.hpp create mode 100644 libs/hana/include/boost/hana/fwd/flatten.hpp create mode 100644 libs/hana/include/boost/hana/fwd/fold.hpp create mode 100644 libs/hana/include/boost/hana/fwd/fold_left.hpp create mode 100644 libs/hana/include/boost/hana/fwd/fold_right.hpp create mode 100644 libs/hana/include/boost/hana/fwd/for_each.hpp create mode 100644 libs/hana/include/boost/hana/fwd/front.hpp create mode 100644 libs/hana/include/boost/hana/fwd/fuse.hpp create mode 100644 libs/hana/include/boost/hana/fwd/greater.hpp create mode 100644 libs/hana/include/boost/hana/fwd/greater_equal.hpp create mode 100644 libs/hana/include/boost/hana/fwd/group.hpp create mode 100644 libs/hana/include/boost/hana/fwd/hash.hpp create mode 100644 libs/hana/include/boost/hana/fwd/if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/index_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/insert.hpp create mode 100644 libs/hana/include/boost/hana/fwd/insert_range.hpp create mode 100644 libs/hana/include/boost/hana/fwd/integral_constant.hpp create mode 100644 libs/hana/include/boost/hana/fwd/intersection.hpp create mode 100644 libs/hana/include/boost/hana/fwd/intersperse.hpp create mode 100644 libs/hana/include/boost/hana/fwd/is_disjoint.hpp create mode 100644 libs/hana/include/boost/hana/fwd/is_empty.hpp create mode 100644 libs/hana/include/boost/hana/fwd/is_subset.hpp create mode 100644 libs/hana/include/boost/hana/fwd/keys.hpp create mode 100644 libs/hana/include/boost/hana/fwd/lazy.hpp create mode 100644 libs/hana/include/boost/hana/fwd/length.hpp create mode 100644 libs/hana/include/boost/hana/fwd/less.hpp create mode 100644 libs/hana/include/boost/hana/fwd/less_equal.hpp create mode 100644 libs/hana/include/boost/hana/fwd/lexicographical_compare.hpp create mode 100644 libs/hana/include/boost/hana/fwd/lift.hpp create mode 100644 libs/hana/include/boost/hana/fwd/map.hpp create mode 100644 libs/hana/include/boost/hana/fwd/max.hpp create mode 100644 libs/hana/include/boost/hana/fwd/maximum.hpp create mode 100644 libs/hana/include/boost/hana/fwd/members.hpp create mode 100644 libs/hana/include/boost/hana/fwd/min.hpp create mode 100644 libs/hana/include/boost/hana/fwd/minimum.hpp create mode 100644 libs/hana/include/boost/hana/fwd/minus.hpp create mode 100644 libs/hana/include/boost/hana/fwd/mod.hpp create mode 100644 libs/hana/include/boost/hana/fwd/monadic_compose.hpp create mode 100644 libs/hana/include/boost/hana/fwd/monadic_fold_left.hpp create mode 100644 libs/hana/include/boost/hana/fwd/monadic_fold_right.hpp create mode 100644 libs/hana/include/boost/hana/fwd/mult.hpp create mode 100644 libs/hana/include/boost/hana/fwd/negate.hpp create mode 100644 libs/hana/include/boost/hana/fwd/none.hpp create mode 100644 libs/hana/include/boost/hana/fwd/none_of.hpp create mode 100644 libs/hana/include/boost/hana/fwd/not.hpp create mode 100644 libs/hana/include/boost/hana/fwd/not_equal.hpp create mode 100644 libs/hana/include/boost/hana/fwd/one.hpp create mode 100644 libs/hana/include/boost/hana/fwd/optional.hpp create mode 100644 libs/hana/include/boost/hana/fwd/or.hpp create mode 100644 libs/hana/include/boost/hana/fwd/ordering.hpp create mode 100644 libs/hana/include/boost/hana/fwd/pair.hpp create mode 100644 libs/hana/include/boost/hana/fwd/partition.hpp create mode 100644 libs/hana/include/boost/hana/fwd/permutations.hpp create mode 100644 libs/hana/include/boost/hana/fwd/plus.hpp create mode 100644 libs/hana/include/boost/hana/fwd/power.hpp create mode 100644 libs/hana/include/boost/hana/fwd/prefix.hpp create mode 100644 libs/hana/include/boost/hana/fwd/prepend.hpp create mode 100644 libs/hana/include/boost/hana/fwd/product.hpp create mode 100644 libs/hana/include/boost/hana/fwd/range.hpp create mode 100644 libs/hana/include/boost/hana/fwd/remove.hpp create mode 100644 libs/hana/include/boost/hana/fwd/remove_at.hpp create mode 100644 libs/hana/include/boost/hana/fwd/remove_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/remove_range.hpp create mode 100644 libs/hana/include/boost/hana/fwd/repeat.hpp create mode 100644 libs/hana/include/boost/hana/fwd/replace.hpp create mode 100644 libs/hana/include/boost/hana/fwd/replace_if.hpp create mode 100644 libs/hana/include/boost/hana/fwd/replicate.hpp create mode 100644 libs/hana/include/boost/hana/fwd/reverse.hpp create mode 100644 libs/hana/include/boost/hana/fwd/reverse_fold.hpp create mode 100644 libs/hana/include/boost/hana/fwd/scan_left.hpp create mode 100644 libs/hana/include/boost/hana/fwd/scan_right.hpp create mode 100644 libs/hana/include/boost/hana/fwd/second.hpp create mode 100644 libs/hana/include/boost/hana/fwd/set.hpp create mode 100644 libs/hana/include/boost/hana/fwd/size.hpp create mode 100644 libs/hana/include/boost/hana/fwd/slice.hpp create mode 100644 libs/hana/include/boost/hana/fwd/sort.hpp create mode 100644 libs/hana/include/boost/hana/fwd/span.hpp create mode 100644 libs/hana/include/boost/hana/fwd/string.hpp create mode 100644 libs/hana/include/boost/hana/fwd/suffix.hpp create mode 100644 libs/hana/include/boost/hana/fwd/sum.hpp create mode 100644 libs/hana/include/boost/hana/fwd/symmetric_difference.hpp create mode 100644 libs/hana/include/boost/hana/fwd/take_back.hpp create mode 100644 libs/hana/include/boost/hana/fwd/take_front.hpp create mode 100644 libs/hana/include/boost/hana/fwd/take_while.hpp create mode 100644 libs/hana/include/boost/hana/fwd/tap.hpp create mode 100644 libs/hana/include/boost/hana/fwd/then.hpp create mode 100644 libs/hana/include/boost/hana/fwd/transform.hpp create mode 100644 libs/hana/include/boost/hana/fwd/tuple.hpp create mode 100644 libs/hana/include/boost/hana/fwd/type.hpp create mode 100644 libs/hana/include/boost/hana/fwd/unfold_left.hpp create mode 100644 libs/hana/include/boost/hana/fwd/unfold_right.hpp create mode 100644 libs/hana/include/boost/hana/fwd/union.hpp create mode 100644 libs/hana/include/boost/hana/fwd/unique.hpp create mode 100644 libs/hana/include/boost/hana/fwd/unpack.hpp create mode 100644 libs/hana/include/boost/hana/fwd/value.hpp create mode 100644 libs/hana/include/boost/hana/fwd/while.hpp create mode 100644 libs/hana/include/boost/hana/fwd/zero.hpp create mode 100644 libs/hana/include/boost/hana/fwd/zip.hpp create mode 100644 libs/hana/include/boost/hana/fwd/zip_shortest.hpp create mode 100644 libs/hana/include/boost/hana/fwd/zip_shortest_with.hpp create mode 100644 libs/hana/include/boost/hana/fwd/zip_with.hpp create mode 100644 libs/hana/include/boost/hana/greater.hpp create mode 100644 libs/hana/include/boost/hana/greater_equal.hpp create mode 100644 libs/hana/include/boost/hana/group.hpp create mode 100644 libs/hana/include/boost/hana/hash.hpp create mode 100644 libs/hana/include/boost/hana/if.hpp create mode 100644 libs/hana/include/boost/hana/index_if.hpp create mode 100644 libs/hana/include/boost/hana/insert.hpp create mode 100644 libs/hana/include/boost/hana/insert_range.hpp create mode 100644 libs/hana/include/boost/hana/integral_constant.hpp create mode 100644 libs/hana/include/boost/hana/intersection.hpp create mode 100644 libs/hana/include/boost/hana/intersperse.hpp create mode 100644 libs/hana/include/boost/hana/is_disjoint.hpp create mode 100644 libs/hana/include/boost/hana/is_empty.hpp create mode 100644 libs/hana/include/boost/hana/is_subset.hpp create mode 100644 libs/hana/include/boost/hana/keys.hpp create mode 100644 libs/hana/include/boost/hana/lazy.hpp create mode 100644 libs/hana/include/boost/hana/length.hpp create mode 100644 libs/hana/include/boost/hana/less.hpp create mode 100644 libs/hana/include/boost/hana/less_equal.hpp create mode 100644 libs/hana/include/boost/hana/lexicographical_compare.hpp create mode 100644 libs/hana/include/boost/hana/lift.hpp create mode 100644 libs/hana/include/boost/hana/map.hpp create mode 100644 libs/hana/include/boost/hana/max.hpp create mode 100644 libs/hana/include/boost/hana/maximum.hpp create mode 100644 libs/hana/include/boost/hana/members.hpp create mode 100644 libs/hana/include/boost/hana/min.hpp create mode 100644 libs/hana/include/boost/hana/minimum.hpp create mode 100644 libs/hana/include/boost/hana/minus.hpp create mode 100644 libs/hana/include/boost/hana/mod.hpp create mode 100644 libs/hana/include/boost/hana/monadic_compose.hpp create mode 100644 libs/hana/include/boost/hana/monadic_fold_left.hpp create mode 100644 libs/hana/include/boost/hana/monadic_fold_right.hpp create mode 100644 libs/hana/include/boost/hana/mult.hpp create mode 100644 libs/hana/include/boost/hana/negate.hpp create mode 100644 libs/hana/include/boost/hana/none.hpp create mode 100644 libs/hana/include/boost/hana/none_of.hpp create mode 100644 libs/hana/include/boost/hana/not.hpp create mode 100644 libs/hana/include/boost/hana/not_equal.hpp create mode 100644 libs/hana/include/boost/hana/one.hpp create mode 100644 libs/hana/include/boost/hana/optional.hpp create mode 100644 libs/hana/include/boost/hana/or.hpp create mode 100644 libs/hana/include/boost/hana/ordering.hpp create mode 100644 libs/hana/include/boost/hana/pair.hpp create mode 100644 libs/hana/include/boost/hana/partition.hpp create mode 100644 libs/hana/include/boost/hana/permutations.hpp create mode 100644 libs/hana/include/boost/hana/plus.hpp create mode 100644 libs/hana/include/boost/hana/power.hpp create mode 100644 libs/hana/include/boost/hana/prefix.hpp create mode 100644 libs/hana/include/boost/hana/prepend.hpp create mode 100644 libs/hana/include/boost/hana/product.hpp create mode 100644 libs/hana/include/boost/hana/range.hpp create mode 100644 libs/hana/include/boost/hana/remove.hpp create mode 100644 libs/hana/include/boost/hana/remove_at.hpp create mode 100644 libs/hana/include/boost/hana/remove_if.hpp create mode 100644 libs/hana/include/boost/hana/remove_range.hpp create mode 100644 libs/hana/include/boost/hana/repeat.hpp create mode 100644 libs/hana/include/boost/hana/replace.hpp create mode 100644 libs/hana/include/boost/hana/replace_if.hpp create mode 100644 libs/hana/include/boost/hana/replicate.hpp create mode 100644 libs/hana/include/boost/hana/reverse.hpp create mode 100644 libs/hana/include/boost/hana/reverse_fold.hpp create mode 100644 libs/hana/include/boost/hana/scan_left.hpp create mode 100644 libs/hana/include/boost/hana/scan_right.hpp create mode 100644 libs/hana/include/boost/hana/second.hpp create mode 100644 libs/hana/include/boost/hana/set.hpp create mode 100644 libs/hana/include/boost/hana/size.hpp create mode 100644 libs/hana/include/boost/hana/slice.hpp create mode 100644 libs/hana/include/boost/hana/sort.hpp create mode 100644 libs/hana/include/boost/hana/span.hpp create mode 100644 libs/hana/include/boost/hana/string.hpp create mode 100644 libs/hana/include/boost/hana/suffix.hpp create mode 100644 libs/hana/include/boost/hana/sum.hpp create mode 100644 libs/hana/include/boost/hana/symmetric_difference.hpp create mode 100644 libs/hana/include/boost/hana/take_back.hpp create mode 100644 libs/hana/include/boost/hana/take_front.hpp create mode 100644 libs/hana/include/boost/hana/take_while.hpp create mode 100644 libs/hana/include/boost/hana/tap.hpp create mode 100644 libs/hana/include/boost/hana/then.hpp create mode 100644 libs/hana/include/boost/hana/traits.hpp create mode 100644 libs/hana/include/boost/hana/transform.hpp create mode 100644 libs/hana/include/boost/hana/tuple.hpp create mode 100644 libs/hana/include/boost/hana/type.hpp create mode 100644 libs/hana/include/boost/hana/unfold_left.hpp create mode 100644 libs/hana/include/boost/hana/unfold_right.hpp create mode 100644 libs/hana/include/boost/hana/union.hpp create mode 100644 libs/hana/include/boost/hana/unique.hpp create mode 100644 libs/hana/include/boost/hana/unpack.hpp create mode 100644 libs/hana/include/boost/hana/value.hpp create mode 100644 libs/hana/include/boost/hana/version.hpp create mode 100644 libs/hana/include/boost/hana/while.hpp create mode 100644 libs/hana/include/boost/hana/zero.hpp create mode 100644 libs/hana/include/boost/hana/zip.hpp create mode 100644 libs/hana/include/boost/hana/zip_shortest.hpp create mode 100644 libs/hana/include/boost/hana/zip_shortest_with.hpp create mode 100644 libs/hana/include/boost/hana/zip_with.hpp mode change 100755 => 100644 libs/hana/index.html mode change 100755 => 100644 libs/hana/meta/libraries.json mode change 100755 => 100644 libs/hana/test/CMakeLists.txt mode change 100755 => 100644 libs/hana/test/Jamfile.v2 mode change 100755 => 100644 libs/hana/test/_include/auto/README.md mode change 100755 => 100644 libs/hana/test/_include/auto/all_of.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/any_of.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/ap.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/at.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/cartesian_product.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/drop_back.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/drop_front.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/drop_while.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/for_each.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/group.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/index_if.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/insert.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/insert_range.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/intersperse.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/is_empty.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/length.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/lexicographical_compare.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/make.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/none_of.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/partition.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/permutations.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/remove_at.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/remove_range.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/reverse.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/scans.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/sequence.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/slice.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/sort.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/span.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/take_back.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/take_front.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/take_while.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/test_case.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/transform.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/unfolds.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/unique.hpp mode change 100755 => 100644 libs/hana/test/_include/auto/zips.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/applicative.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/base.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/comonad.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/comparable.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/constant.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/euclidean_ring.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/foldable.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/functor.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/group.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/hashable.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/iterable.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/logical.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/monad.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/monad_plus.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/monoid.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/orderable.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/product.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/ring.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/searchable.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/sequence.hpp mode change 100755 => 100644 libs/hana/test/_include/laws/templates/seq.hpp mode change 100755 => 100644 libs/hana/test/_include/support/cnumeric.hpp mode change 100755 => 100644 libs/hana/test/_include/support/constexpr_move_only.hpp mode change 100755 => 100644 libs/hana/test/_include/support/counter.hpp mode change 100755 => 100644 libs/hana/test/_include/support/equivalence_class.hpp mode change 100755 => 100644 libs/hana/test/_include/support/identity.hpp mode change 100755 => 100644 libs/hana/test/_include/support/minimal_product.hpp mode change 100755 => 100644 libs/hana/test/_include/support/numeric.hpp mode change 100755 => 100644 libs/hana/test/_include/support/seq.hpp mode change 100755 => 100644 libs/hana/test/_include/support/tracked.hpp mode change 100755 => 100644 libs/hana/test/_include/support/tracked_move_only.hpp mode change 100755 => 100644 libs/hana/test/assert/commas.cpp mode change 100755 => 100644 libs/hana/test/assert/constant.cpp mode change 100755 => 100644 libs/hana/test/assert/constexpr.cpp mode change 100755 => 100644 libs/hana/test/assert/flexible.cpp mode change 100755 => 100644 libs/hana/test/assert/lambdas.cpp mode change 100755 => 100644 libs/hana/test/assert/runtime.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/at.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/group.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/length.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/make.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/span.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/cnstr.copy.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/construct.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/laws.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/length.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/make.cpp mode change 100755 => 100644 libs/hana/test/basic_tuple/unpack.cpp mode change 100755 => 100644 libs/hana/test/builtin_array.cpp mode change 100755 => 100644 libs/hana/test/comparable.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/arithmetic.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/comparable.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/laws.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/logical.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/mcd.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/minimal.hpp mode change 100755 => 100644 libs/hana/test/concept/constant/orderable.cpp mode change 100755 => 100644 libs/hana/test/concept/constant/to.cpp mode change 100755 => 100644 libs/hana/test/concept/integral_constant.cpp mode change 100755 => 100644 libs/hana/test/concept/sequence/iterable.cpp mode change 100755 => 100644 libs/hana/test/concept/sequence/monad.cpp mode change 100755 => 100644 libs/hana/test/concept/sequence/monad_plus.cpp mode change 100755 => 100644 libs/hana/test/concept/sequence/orderable.cpp mode change 100755 => 100644 libs/hana/test/concept/sequence/searchable.cpp mode change 100755 => 100644 libs/hana/test/concept/sequence/sequence.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/any_of.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/at_key.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/equal.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/find_if.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/fold_left.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/fold_right.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/keys.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/laws.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/macro.adapt_adt.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/macro.adapt_struct.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/macro.define_struct.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/member_function.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/members.cpp mode change 100755 => 100644 libs/hana/test/concept/struct/minimal_struct.hpp mode change 100755 => 100644 libs/hana/test/concept/struct/unpack.cpp mode change 100755 => 100644 libs/hana/test/core/common.cpp mode change 100755 => 100644 libs/hana/test/core/default.cpp mode change 100755 => 100644 libs/hana/test/core/is_a.cpp mode change 100755 => 100644 libs/hana/test/core/is_embedded.cpp mode change 100755 => 100644 libs/hana/test/core/make.cpp mode change 100755 => 100644 libs/hana/test/core/tag_of.cpp mode change 100755 => 100644 libs/hana/test/core/to.cpp mode change 100755 => 100644 libs/hana/test/core/when.cpp mode change 100755 => 100644 libs/hana/test/deploy/CMakeLists.txt mode change 100755 => 100644 libs/hana/test/deploy/main.cpp mode change 100755 => 100644 libs/hana/test/detail/algorithm.cpp mode change 100755 => 100644 libs/hana/test/detail/any_of.cpp mode change 100755 => 100644 libs/hana/test/detail/canonical_constant/laws.cpp mode change 100755 => 100644 libs/hana/test/detail/create.cpp mode change 100755 => 100644 libs/hana/test/detail/decay.cpp mode change 100755 => 100644 libs/hana/test/detail/ebo.cpp mode change 100755 => 100644 libs/hana/test/detail/fast_and.cpp mode change 100755 => 100644 libs/hana/test/detail/first_unsatisfied_index.cpp mode change 100755 => 100644 libs/hana/test/detail/has_duplicates.cpp mode change 100755 => 100644 libs/hana/test/detail/preprocessor.cpp mode change 100755 => 100644 libs/hana/test/detail/struct_macros.cpp mode change 100755 => 100644 libs/hana/test/detail/type_at.cpp mode change 100755 => 100644 libs/hana/test/detail/type_foldl1.cpp mode change 100755 => 100644 libs/hana/test/detail/type_foldr1.cpp mode change 100755 => 100644 libs/hana/test/detail/unpack_flatten.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/at.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/drop_into.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/foldl1.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/foldr1.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/reverse_apply.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/split_at.cpp mode change 100755 => 100644 libs/hana/test/detail/variadic/take.cpp mode change 100755 => 100644 libs/hana/test/euclidean_ring.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/map.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/metafunction.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/optional.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/pair.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/set.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/string.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/tuple.cpp mode change 100755 => 100644 libs/hana/test/experimental/printable/type.cpp mode change 100755 => 100644 libs/hana/test/experimental/type_name.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/at.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/contains.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/drop_front.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/equal.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/is_empty.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/transform.cpp mode change 100755 => 100644 libs/hana/test/experimental/types/unpack.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/empty/is_empty.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/empty/length.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/empty/unpack.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/joined/at.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/joined/is_empty.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/joined/length.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/joined/unpack.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/single/at.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/single/is_empty.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/single/length.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/single/unpack.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/sliced/at.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/sliced/is_empty.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/sliced/length.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/sliced/unpack.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/ap.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/at.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/drop_front.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/equal.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/is_empty.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/laziness.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/length.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/less.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/transform.cpp mode change 100755 => 100644 libs/hana/test/experimental/view/transformed/unpack.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/group.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/length.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/make.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/span.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/deque/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/group.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/length.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/make.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/span.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/list/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/group.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/length.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/make.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/span.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/tuple/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/group.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/length.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/make.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/span.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/fusion/vector/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/arithmetic.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/comparable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/constant.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/interop.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/logical.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/orderable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/integral_c/tag.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/list/comparable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/list/foldable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/list/iterable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/list/searchable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/list/tag.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/list/to.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/vector/comparable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/vector/foldable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/vector/iterable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/vector/searchable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/vector/tag.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/mpl/vector/to.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/group.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/intersperse.broken.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/length.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/make.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/permutations.broken.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/span.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/take_front.broken.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/iterable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/monad.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/monad_plus.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/orderable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/searchable.cpp mode change 100755 => 100644 libs/hana/test/ext/boost/tuple/tag_of.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/at.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/comparable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/foldable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/issue_304.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/iterable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/orderable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/array/searchable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/bugs/libcxx_19616.cpp mode change 100755 => 100644 libs/hana/test/ext/std/bugs/libcxx_22806.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/drop_front_exactly.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/equal.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/find_if.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/front.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/laws.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integer_sequence/unpack.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/arithmetic.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/comparable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/constant.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/interop.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/logical.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/orderable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/integral_constant/tag.cpp mode change 100755 => 100644 libs/hana/test/ext/std/pair/first_second.cpp mode change 100755 => 100644 libs/hana/test/ext/std/pair/issue_90.cpp mode change 100755 => 100644 libs/hana/test/ext/std/pair/laws.cpp mode change 100755 => 100644 libs/hana/test/ext/std/pair/make.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/div.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/equal.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/laws.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/less.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/minus.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/mod.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/mult.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/one.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/plus.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/to.cpp mode change 100755 => 100644 libs/hana/test/ext/std/ratio/zero.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/at.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/group.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/length.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/make.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/span.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/issue_90.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/laws.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/laws.functor.cpp mode change 100755 => 100644 libs/hana/test/ext/std/tuple/laws.searchable.cpp mode change 100755 => 100644 libs/hana/test/ext/std/vector.cpp mode change 100755 => 100644 libs/hana/test/fold_left/ref.cpp mode change 100755 => 100644 libs/hana/test/fold_right/ref.cpp mode change 100755 => 100644 libs/hana/test/foldable/fold_left_mcd/iterable.cpp mode change 100755 => 100644 libs/hana/test/foldable/fold_left_mcd/monad.cpp mode change 100755 => 100644 libs/hana/test/foldable/fold_left_mcd/monad_plus.cpp mode change 100755 => 100644 libs/hana/test/foldable/fold_left_mcd/orderable.cpp mode change 100755 => 100644 libs/hana/test/foldable/fold_left_mcd/searchable.cpp mode change 100755 => 100644 libs/hana/test/foldable/fold_left_mcd/sequence.cpp mode change 100755 => 100644 libs/hana/test/foldable/iterable_mcd/iterable.cpp mode change 100755 => 100644 libs/hana/test/foldable/iterable_mcd/monad.cpp mode change 100755 => 100644 libs/hana/test/foldable/iterable_mcd/monad_plus.cpp mode change 100755 => 100644 libs/hana/test/foldable/iterable_mcd/orderable.cpp mode change 100755 => 100644 libs/hana/test/foldable/iterable_mcd/searchable.cpp mode change 100755 => 100644 libs/hana/test/foldable/iterable_mcd/sequence.cpp mode change 100755 => 100644 libs/hana/test/foldable/unpack_mcd/iterable.cpp mode change 100755 => 100644 libs/hana/test/foldable/unpack_mcd/monad.cpp mode change 100755 => 100644 libs/hana/test/foldable/unpack_mcd/monad_plus.cpp mode change 100755 => 100644 libs/hana/test/foldable/unpack_mcd/orderable.cpp mode change 100755 => 100644 libs/hana/test/foldable/unpack_mcd/searchable.cpp mode change 100755 => 100644 libs/hana/test/foldable/unpack_mcd/sequence.cpp mode change 100755 => 100644 libs/hana/test/functional.cpp mode change 100755 => 100644 libs/hana/test/functional/apply.cpp mode change 100755 => 100644 libs/hana/test/functional/capture.cpp mode change 100755 => 100644 libs/hana/test/functional/demux.cpp mode change 100755 => 100644 libs/hana/test/functional/fix.cpp mode change 100755 => 100644 libs/hana/test/functional/iterate.cpp mode change 100755 => 100644 libs/hana/test/functional/lockstep.cpp mode change 100755 => 100644 libs/hana/test/functional/overload_linearly.cpp mode change 100755 => 100644 libs/hana/test/functional/partial.cpp mode change 100755 => 100644 libs/hana/test/functional/placeholder.cpp mode change 100755 => 100644 libs/hana/test/functional/reverse_partial.cpp mode change 100755 => 100644 libs/hana/test/group.cpp mode change 100755 => 100644 libs/hana/test/identity/applicative.full_mcd.cpp mode change 100755 => 100644 libs/hana/test/identity/applicative.monad_mcd.cpp mode change 100755 => 100644 libs/hana/test/identity/functor.adjust_mcd.cpp mode change 100755 => 100644 libs/hana/test/identity/functor.transform_mcd.cpp mode change 100755 => 100644 libs/hana/test/identity/main.hpp mode change 100755 => 100644 libs/hana/test/identity/monad.chain_mcd.cpp mode change 100755 => 100644 libs/hana/test/identity/monad.flatten_mcd.cpp mode change 100755 => 100644 libs/hana/test/if_/non_copyable.cpp mode change 100755 => 100644 libs/hana/test/index_if.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/arithmetic.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/comparable.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/constant.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/constexpr_init.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/github_354.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/hash.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/hashable.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/logical.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/operators.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/orderable.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/std_api.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/tag.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/times.cpp mode change 100755 => 100644 libs/hana/test/integral_constant/udl.cpp mode change 100755 => 100644 libs/hana/test/issues/clang_20046.cpp mode change 100755 => 100644 libs/hana/test/issues/github_112.cpp mode change 100755 => 100644 libs/hana/test/issues/github_113.cpp mode change 100755 => 100644 libs/hana/test/issues/github_149.cpp mode change 100755 => 100644 libs/hana/test/issues/github_15.cpp mode change 100755 => 100644 libs/hana/test/issues/github_165.cpp mode change 100755 => 100644 libs/hana/test/issues/github_202.cpp mode change 100755 => 100644 libs/hana/test/issues/github_221.cpp mode change 100755 => 100644 libs/hana/test/issues/github_234.cpp mode change 100755 => 100644 libs/hana/test/issues/github_252.cpp mode change 100755 => 100644 libs/hana/test/issues/github_260.cpp mode change 100755 => 100644 libs/hana/test/issues/github_266.cpp mode change 100755 => 100644 libs/hana/test/issues/github_269.cpp mode change 100755 => 100644 libs/hana/test/issues/github_297.cpp mode change 100755 => 100644 libs/hana/test/issues/github_31.cpp mode change 100755 => 100644 libs/hana/test/issues/github_331.cpp mode change 100755 => 100644 libs/hana/test/issues/github_362.cpp mode change 100755 => 100644 libs/hana/test/issues/github_365.cpp create mode 100644 libs/hana/test/issues/github_460.cpp create mode 100644 libs/hana/test/issues/github_470.cpp mode change 100755 => 100644 libs/hana/test/issues/github_75/tu1.cpp mode change 100755 => 100644 libs/hana/test/issues/github_75/tu2.cpp mode change 100755 => 100644 libs/hana/test/issues/github_91.cpp mode change 100755 => 100644 libs/hana/test/lazy.cpp mode change 100755 => 100644 libs/hana/test/logical.cpp mode change 100755 => 100644 libs/hana/test/map/any_of.cpp mode change 100755 => 100644 libs/hana/test/map/assign.copy.cpp mode change 100755 => 100644 libs/hana/test/map/assign.move.cpp mode change 100755 => 100644 libs/hana/test/map/at_key.collisions.cpp mode change 100755 => 100644 libs/hana/test/map/at_key.cpp mode change 100755 => 100644 libs/hana/test/map/at_key.ref.cpp mode change 100755 => 100644 libs/hana/test/map/at_key.stackoverflow.cpp mode change 100755 => 100644 libs/hana/test/map/cnstr.copy.cpp mode change 100755 => 100644 libs/hana/test/map/cnstr.default.cpp mode change 100755 => 100644 libs/hana/test/map/cnstr.move.cpp mode change 100755 => 100644 libs/hana/test/map/cnstr.trap.cpp mode change 100755 => 100644 libs/hana/test/map/cnstr.variadic.cpp mode change 100755 => 100644 libs/hana/test/map/contains.cpp mode change 100755 => 100644 libs/hana/test/map/difference.cpp mode change 100755 => 100644 libs/hana/test/map/equal.cpp mode change 100755 => 100644 libs/hana/test/map/erase_key.cpp mode change 100755 => 100644 libs/hana/test/map/find_if.cpp mode change 100755 => 100644 libs/hana/test/map/fold_left.cpp mode change 100755 => 100644 libs/hana/test/map/fold_right.cpp mode change 100755 => 100644 libs/hana/test/map/insert.cpp mode change 100755 => 100644 libs/hana/test/map/intersection.cpp mode change 100755 => 100644 libs/hana/test/map/is_subset.cpp mode change 100755 => 100644 libs/hana/test/map/keys.cpp mode change 100755 => 100644 libs/hana/test/map/laws.cpp mode change 100755 => 100644 libs/hana/test/map/map.cpp mode change 100755 => 100644 libs/hana/test/map/symmetric_difference.cpp mode change 100755 => 100644 libs/hana/test/map/to.cpp mode change 100755 => 100644 libs/hana/test/map/union.cpp mode change 100755 => 100644 libs/hana/test/map/unpack.cpp mode change 100755 => 100644 libs/hana/test/map/values.cpp mode change 100755 => 100644 libs/hana/test/minimal_product.cpp mode change 100755 => 100644 libs/hana/test/monoid.cpp mode change 100755 => 100644 libs/hana/test/numeric/main.hpp mode change 100755 => 100644 libs/hana/test/numeric/minus_mcd.cpp mode change 100755 => 100644 libs/hana/test/numeric/negate_mcd.cpp mode change 100755 => 100644 libs/hana/test/optional/any_of.cpp mode change 100755 => 100644 libs/hana/test/optional/ap.cpp mode change 100755 => 100644 libs/hana/test/optional/chain.cpp mode change 100755 => 100644 libs/hana/test/optional/concat.cpp mode change 100755 => 100644 libs/hana/test/optional/copy.trap_construct.cpp mode change 100755 => 100644 libs/hana/test/optional/empty.cpp mode change 100755 => 100644 libs/hana/test/optional/equal.cpp mode change 100755 => 100644 libs/hana/test/optional/find_if.cpp mode change 100755 => 100644 libs/hana/test/optional/flatten.cpp mode change 100755 => 100644 libs/hana/test/optional/fold_left.cpp mode change 100755 => 100644 libs/hana/test/optional/fold_right.cpp mode change 100755 => 100644 libs/hana/test/optional/is_just.cpp mode change 100755 => 100644 libs/hana/test/optional/is_nothing.cpp mode change 100755 => 100644 libs/hana/test/optional/laws.cpp mode change 100755 => 100644 libs/hana/test/optional/less.cpp mode change 100755 => 100644 libs/hana/test/optional/lift.cpp mode change 100755 => 100644 libs/hana/test/optional/make.cpp mode change 100755 => 100644 libs/hana/test/optional/maybe.cpp mode change 100755 => 100644 libs/hana/test/optional/nested_type.cpp mode change 100755 => 100644 libs/hana/test/optional/operator_arrow.cpp mode change 100755 => 100644 libs/hana/test/optional/operator_deref.cpp mode change 100755 => 100644 libs/hana/test/optional/representation.cpp mode change 100755 => 100644 libs/hana/test/optional/sfinae.cpp mode change 100755 => 100644 libs/hana/test/optional/transform.cpp mode change 100755 => 100644 libs/hana/test/optional/unpack.cpp mode change 100755 => 100644 libs/hana/test/optional/value.cpp mode change 100755 => 100644 libs/hana/test/optional/value_or.cpp mode change 100755 => 100644 libs/hana/test/orderable.cpp mode change 100755 => 100644 libs/hana/test/pair/assign.copy.cpp mode change 100755 => 100644 libs/hana/test/pair/assign.move.cpp mode change 100755 => 100644 libs/hana/test/pair/cnstr.copy.cpp mode change 100755 => 100644 libs/hana/test/pair/cnstr.default.cpp mode change 100755 => 100644 libs/hana/test/pair/cnstr.memberwise.cpp mode change 100755 => 100644 libs/hana/test/pair/cnstr.move.cpp mode change 100755 => 100644 libs/hana/test/pair/comparable.cpp mode change 100755 => 100644 libs/hana/test/pair/empty_storage.cpp mode change 100755 => 100644 libs/hana/test/pair/foldable.cpp mode change 100755 => 100644 libs/hana/test/pair/issue_90.cpp mode change 100755 => 100644 libs/hana/test/pair/make.cpp mode change 100755 => 100644 libs/hana/test/pair/orderable.cpp mode change 100755 => 100644 libs/hana/test/pair/product.cpp mode change 100755 => 100644 libs/hana/test/pair/tag_of.cpp mode change 100755 => 100644 libs/hana/test/range/at.cpp mode change 100755 => 100644 libs/hana/test/range/back.cpp mode change 100755 => 100644 libs/hana/test/range/contains.cpp mode change 100755 => 100644 libs/hana/test/range/drop_front.cpp mode change 100755 => 100644 libs/hana/test/range/drop_front_exactly.cpp mode change 100755 => 100644 libs/hana/test/range/equal.cpp mode change 100755 => 100644 libs/hana/test/range/find.cpp mode change 100755 => 100644 libs/hana/test/range/front.cpp mode change 100755 => 100644 libs/hana/test/range/is_empty.cpp mode change 100755 => 100644 libs/hana/test/range/laws.cpp mode change 100755 => 100644 libs/hana/test/range/length.cpp mode change 100755 => 100644 libs/hana/test/range/make.cpp mode change 100755 => 100644 libs/hana/test/range/maximum.cpp mode change 100755 => 100644 libs/hana/test/range/minimum.cpp mode change 100755 => 100644 libs/hana/test/range/product.cpp mode change 100755 => 100644 libs/hana/test/range/range_c.cpp mode change 100755 => 100644 libs/hana/test/range/sum.cpp mode change 100755 => 100644 libs/hana/test/range/unpack.cpp mode change 100755 => 100644 libs/hana/test/repeat.cpp mode change 100755 => 100644 libs/hana/test/ring.cpp mode change 100755 => 100644 libs/hana/test/searchable.cpp mode change 100755 => 100644 libs/hana/test/set/any_of.cpp mode change 100755 => 100644 libs/hana/test/set/cnstr.copy.cpp mode change 100755 => 100644 libs/hana/test/set/cnstr.default.cpp mode change 100755 => 100644 libs/hana/test/set/cnstr.move.cpp mode change 100755 => 100644 libs/hana/test/set/cnstr.trap.cpp mode change 100755 => 100644 libs/hana/test/set/difference.cpp mode change 100755 => 100644 libs/hana/test/set/equal.cpp mode change 100755 => 100644 libs/hana/test/set/erase_key.cpp mode change 100755 => 100644 libs/hana/test/set/find_if.cpp mode change 100755 => 100644 libs/hana/test/set/insert.cpp mode change 100755 => 100644 libs/hana/test/set/intersection.cpp mode change 100755 => 100644 libs/hana/test/set/is_subset.cpp mode change 100755 => 100644 libs/hana/test/set/laws.cpp mode change 100755 => 100644 libs/hana/test/set/make.cpp mode change 100755 => 100644 libs/hana/test/set/symmetric_difference.cpp mode change 100755 => 100644 libs/hana/test/set/to.cpp mode change 100755 => 100644 libs/hana/test/set/union.cpp mode change 100755 => 100644 libs/hana/test/set/unpack.cpp mode change 100755 => 100644 libs/hana/test/string/any_of.cpp mode change 100755 => 100644 libs/hana/test/string/at.cpp mode change 100755 => 100644 libs/hana/test/string/c_str.cpp mode change 100755 => 100644 libs/hana/test/string/cnstr.c_str.cpp mode change 100755 => 100644 libs/hana/test/string/cnstr.copy.cpp mode change 100755 => 100644 libs/hana/test/string/cnstr.default.cpp mode change 100755 => 100644 libs/hana/test/string/contains.cpp mode change 100755 => 100644 libs/hana/test/string/drop_front_exactly.cpp mode change 100755 => 100644 libs/hana/test/string/equal.cpp mode change 100755 => 100644 libs/hana/test/string/find.cpp mode change 100755 => 100644 libs/hana/test/string/find_if.cpp mode change 100755 => 100644 libs/hana/test/string/front.cpp mode change 100755 => 100644 libs/hana/test/string/hash.cpp mode change 100755 => 100644 libs/hana/test/string/is_empty.cpp mode change 100755 => 100644 libs/hana/test/string/laws.cpp mode change 100755 => 100644 libs/hana/test/string/length.cpp mode change 100755 => 100644 libs/hana/test/string/less.cpp mode change 100755 => 100644 libs/hana/test/string/macro.cpp mode change 100755 => 100644 libs/hana/test/string/make.cpp mode change 100755 => 100644 libs/hana/test/string/plus.cpp mode change 100755 => 100644 libs/hana/test/string/to.cpp mode change 100755 => 100644 libs/hana/test/string/udl.cpp mode change 100755 => 100644 libs/hana/test/string/unpack.cpp mode change 100755 => 100644 libs/hana/test/string/zero.cpp mode change 100755 => 100644 libs/hana/test/tuple/any_of.clang_ice.cpp mode change 100755 => 100644 libs/hana/test/tuple/assign.convert_copy.cpp mode change 100755 => 100644 libs/hana/test/tuple/assign.convert_move.cpp mode change 100755 => 100644 libs/hana/test/tuple/assign.copy.cpp mode change 100755 => 100644 libs/hana/test/tuple/assign.move.cpp mode change 100755 => 100644 libs/hana/test/tuple/at.const.cpp mode change 100755 => 100644 libs/hana/test/tuple/at.non_const.cpp mode change 100755 => 100644 libs/hana/test/tuple/at.rv.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/_specs.hpp mode change 100755 => 100644 libs/hana/test/tuple/auto/all_of.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/any_of.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/ap.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/at.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/cartesian_product.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/drop_back.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/drop_front.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/drop_while.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/for_each.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/group.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/index_if.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/insert.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/insert_range.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/intersperse.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/is_empty.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/length.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/lexicographical_compare.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/make.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/none_of.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/partition.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/permutations.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/remove_at.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/remove_range.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/reverse.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/scans.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/sequence.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/slice.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/sort.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/span.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/take_back.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/take_front.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/take_while.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/transform.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/unfolds.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/unique.cpp mode change 100755 => 100644 libs/hana/test/tuple/auto/zips.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.convert_copy.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.convert_move.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.copy.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.default.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.move.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.nested.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.trap.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.variadic_array.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.variadic_copy.cpp mode change 100755 => 100644 libs/hana/test/tuple/cnstr.variadic_forward.cpp mode change 100755 => 100644 libs/hana/test/tuple/empty_member.cpp mode change 100755 => 100644 libs/hana/test/tuple/hold_refs.cpp mode change 100755 => 100644 libs/hana/test/tuple/issue_90.cpp mode change 100755 => 100644 libs/hana/test/tuple/laws.cpp mode change 100755 => 100644 libs/hana/test/tuple/laws.functor.cpp mode change 100755 => 100644 libs/hana/test/tuple/laws.searchable.cpp mode change 100755 => 100644 libs/hana/test/tuple/move_only.cpp mode change 100755 => 100644 libs/hana/test/tuple/pair_interop.cpp mode change 100755 => 100644 libs/hana/test/tuple/smart_ptr.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.drop_front_exactly.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.empty.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.equal.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.fill.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.fold_left.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.fold_right.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.front.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.is_empty.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.prepend.cpp mode change 100755 => 100644 libs/hana/test/tuple/special.transform.cpp mode change 100755 => 100644 libs/hana/test/tuple/to.cpp mode change 100755 => 100644 libs/hana/test/tuple/unpack.cpp mode change 100755 => 100644 libs/hana/test/tuple/usability_of_types.cpp mode change 100755 => 100644 libs/hana/test/type/adl.cpp mode change 100755 => 100644 libs/hana/test/type/alignof.cpp mode change 100755 => 100644 libs/hana/test/type/decltype.cpp mode change 100755 => 100644 libs/hana/test/type/equal.cpp mode change 100755 => 100644 libs/hana/test/type/hash.cpp mode change 100755 => 100644 libs/hana/test/type/inherit_basic_type.cpp mode change 100755 => 100644 libs/hana/test/type/integral.cpp mode change 100755 => 100644 libs/hana/test/type/is_valid.cpp mode change 100755 => 100644 libs/hana/test/type/laws.cpp mode change 100755 => 100644 libs/hana/test/type/make.cpp mode change 100755 => 100644 libs/hana/test/type/metafunction.cpp mode change 100755 => 100644 libs/hana/test/type/metafunction_class.cpp mode change 100755 => 100644 libs/hana/test/type/nested_type.cpp mode change 100755 => 100644 libs/hana/test/type/sizeof.cpp mode change 100755 => 100644 libs/hana/test/type/template.cpp mode change 100755 => 100644 libs/hana/test/type/traits.cpp mode change 100755 => 100644 libs/hana/test/type/typeid.cpp mode change 100755 => 100644 libs/hana/test/type/unary_plus.cpp create mode 100755 libs/hana/util/release.sh mode change 100755 => 100644 libs/index.html mode change 100755 => 100644 libs/libraries.htm mode change 100755 => 100644 libs/maintainers.txt create mode 100644 libs/numeric/doc/build.jam mode change 100755 => 100644 libs/numeric/index.html mode change 100755 => 100644 libs/numeric/sublibs create mode 100644 libs/pfr/LICENSE_1_0.txt create mode 100644 libs/pfr/README.md create mode 100644 libs/pfr/doc/Jamfile.v2 create mode 100644 libs/pfr/doc/pfr.qbk create mode 100644 libs/pfr/example/get.cpp create mode 100644 libs/pfr/example/motivating_example0.cpp create mode 100644 libs/pfr/example/quick_examples.cpp create mode 100644 libs/pfr/example/sample_printing.cpp create mode 100644 libs/pfr/include/boost/pfr.hpp create mode 100644 libs/pfr/include/boost/pfr/core.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/cast_to_layout_compatible.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/config.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/core.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/core14_classic.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/core14_loophole.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/core17.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/core17_generated.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/detectors.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/fields_count.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/for_each_field_impl.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/functional.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/io.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/make_flat_tuple_of_references.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/make_integer_sequence.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/offset_based_getter.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/rvalue_t.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/sequence_tuple.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/size_array.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/size_t_.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/stdtuple.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/tie_from_structure_tuple.hpp create mode 100644 libs/pfr/include/boost/pfr/detail/unsafe_declval.hpp create mode 100644 libs/pfr/include/boost/pfr/functions_for.hpp create mode 100644 libs/pfr/include/boost/pfr/functors.hpp create mode 100644 libs/pfr/include/boost/pfr/io.hpp create mode 100644 libs/pfr/include/boost/pfr/io_fields.hpp create mode 100644 libs/pfr/include/boost/pfr/ops.hpp create mode 100644 libs/pfr/include/boost/pfr/ops_fields.hpp create mode 100644 libs/pfr/include/boost/pfr/tuple_size.hpp create mode 100644 libs/pfr/index.html create mode 100644 libs/pfr/meta/libraries.json create mode 100644 libs/pfr/misc/generate_cpp17.py create mode 100644 libs/pfr/test/Jamfile.v2 create mode 100644 libs/pfr/test/appveyor.yml create mode 100644 libs/pfr/test/compile-fail/fields_count_on_reference.cpp create mode 100644 libs/pfr/test/compile-fail/movable_and_lvalue_references.cpp create mode 100644 libs/pfr/test/compile-fail/non_aggregate.cpp create mode 100644 libs/pfr/test/compile-fail/ops_on_union.cpp create mode 100644 libs/pfr/test/compile-fail/ops_unions.cpp create mode 100644 libs/pfr/test/compile-fail/ops_unrestricted_unions.cpp create mode 100644 libs/pfr/test/compile-fail/pfr_review_test2.cpp create mode 100644 libs/pfr/test/compile-fail/private_fields.cpp create mode 100644 libs/pfr/test/compile-fail/protected_fields.cpp create mode 100644 libs/pfr/test/compile-fail/rvalue_tie.cpp create mode 100644 libs/pfr/test/compile-fail/virtual_functions.cpp create mode 100644 libs/pfr/test/loophole_detection.cpp create mode 100644 libs/pfr/test/offset_based_getter.cpp create mode 100644 libs/pfr/test/print_config.cpp create mode 100644 libs/pfr/test/run/bitfields_count.cpp create mode 100644 libs/pfr/test/run/constexpr_ops.cpp create mode 100644 libs/pfr/test/run/destructuring_tie.cpp create mode 100644 libs/pfr/test/run/error_pfr_c1202.cpp create mode 100644 libs/pfr/test/run/fields_count_on_const.cpp create mode 100644 libs/pfr/test/run/for_each_field.cpp create mode 100644 libs/pfr/test/run/functions_for.cpp create mode 100644 libs/pfr/test/run/get_const_field.cpp create mode 100644 libs/pfr/test/run/get_non_default_constructible.cpp create mode 100644 libs/pfr/test/run/get_rvalue.cpp create mode 100644 libs/pfr/test/run/issue30.cpp create mode 100644 libs/pfr/test/run/issue33.cpp create mode 100644 libs/pfr/test/run/motivating_example.cpp create mode 100644 libs/pfr/test/run/motivating_example2.cpp create mode 100644 libs/pfr/test/run/non_copyable_but_movable.cpp create mode 100644 libs/pfr/test/run/non_dc_non_cop_but_mov.cpp create mode 100644 libs/pfr/test/run/non_default_constructible.cpp create mode 100644 libs/pfr/test/run/non_std_layout.cpp create mode 100644 libs/pfr/test/run/ops.cpp create mode 100644 libs/pfr/test/run/optional_chrono.cpp create mode 100644 libs/pfr/test/run/optional_like.cpp create mode 100644 libs/pfr/test/run/read_write.cpp create mode 100644 libs/pfr/test/run/read_write_non_literal.cpp create mode 100644 libs/pfr/test/run/std_interactions.cpp create mode 100644 libs/pfr/test/run/template_constructor.cpp create mode 100644 libs/pfr/test/run/template_forwarding_ref.cpp create mode 100644 libs/pfr/test/run/template_unconstrained.cpp create mode 100644 libs/pfr/test/run/tie_anonymous.cpp create mode 100644 libs/pfr/test/run/tie_anonymous_const_field.cpp create mode 100644 libs/pfr/test/run/tuple_size.cpp create mode 100644 libs/pfr/test/test_tuple_sizes_on.cpp mode change 100755 => 100644 libs/platform_maintainers.txt mode change 100755 => 100644 rst.css mode change 100755 => 100644 status/Jamfile.v2 mode change 100755 => 100644 status/boost-no-inspect mode change 100755 => 100644 status/boost_check_library.py mode change 100755 => 100644 status/expected_results.xml mode change 100755 => 100644 status/explicit-failures-markup.xml mode change 100755 => 100644 status/explicit-failures.xsd mode change 100755 => 100644 tools/Jamfile.v2 mode change 100755 => 100644 tools/index.html mode change 100755 => 100644 tools/make-cputime-page.pl diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..b243f6f7c3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +# Copyright 2019 Peter Dimov +# 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 + +cmake_minimum_required(VERSION 3.5...3.16) + +project(Boost VERSION 1.76.0 LANGUAGES CXX) + +set(BOOST_SUPERPROJECT_VERSION ${PROJECT_VERSION}) +set(BOOST_SUPERPROJECT_SOURCE_DIR ${PROJECT_SOURCE_DIR}) + +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/tools/cmake/include) + +include(BoostRoot) diff --git a/INSTALL b/INSTALL old mode 100755 new mode 100644 diff --git a/Jamroot b/Jamroot old mode 100755 new mode 100644 index 4354f3aeb5..bf05265f80 --- a/Jamroot +++ b/Jamroot @@ -144,9 +144,12 @@ import option ; import tools/boost\_install/boost-install ; path-constant BOOST_ROOT : . ; -constant BOOST_VERSION : 1.74.0 ; +constant BOOST_VERSION : 1.76.0 ; constant BOOST_JAMROOT_MODULE : $(__name__) ; +# Allow subprojects to simply `import config : requires ;` to get access to the requires rule +modules.poke : BOOST_BUILD_PATH : $(BOOST_ROOT)/libs/config/checks [ modules.peek : BOOST_BUILD_PATH ] ; + boostcpp.set-version $(BOOST_VERSION) ; use-project /boost/architecture : libs/config/checks/architecture ; diff --git a/LICENSE_1_0.txt b/LICENSE_1_0.txt old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 index d4678952b6..fa9faa1688 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ The Boost project provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use -and does not require attribution for binary use. +and does not require attribution for binary use. The project website is www.boost.org, where you can obtain more information and [download](https://www.boost.org/users/download/) the current release. diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000000..69e02e0b41 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,34 @@ +version: 1.0.{build}-{branch} + +branches: + only: + - develop + - master + +environment: + matrix: + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 + SCRIPT: ci_boost_test_library + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + SCRIPT: ci_boost_test_library + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + SCRIPT: ci_boost_test_library + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + SCRIPT: ci_boost_status + TARGET: quick + +init: + - cd %APPVEYOR_BUILD_FOLDER%/.. + - appveyor DownloadFile "https://raw.githubusercontent.com/boostorg/release-tools/develop/ci_boost_common.py" + - appveyor DownloadFile "https://raw.githubusercontent.com/boostorg/release-tools/develop/%SCRIPT%.py" + - cd %APPVEYOR_BUILD_FOLDER% +install: python ../%SCRIPT%.py install +before_build: python ../%SCRIPT%.py before_build +build_script: python ../%SCRIPT%.py build_script +after_build: python ../%SCRIPT%.py after_build +before_test: python ../%SCRIPT%.py before_test +test_script: python ../%SCRIPT%.py test_script +after_test: python ../%SCRIPT%.py after_test +on_success: python ../%SCRIPT%.py on_success +on_failure: python ../%SCRIPT%.py on_failure +on_finish: python ../%SCRIPT%.py on_finish diff --git a/boost-build.jam b/boost-build.jam old mode 100755 new mode 100644 diff --git a/boost.css b/boost.css old mode 100755 new mode 100644 diff --git a/boost.png b/boost.png old mode 100755 new mode 100644 diff --git a/boost/asio.hpp b/boost/asio.hpp old mode 100755 new mode 100644 index 3c9e3853fc..362f721792 --- a/boost/asio.hpp +++ b/boost/asio.hpp @@ -2,7 +2,7 @@ // asio.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/any_io_executor.hpp b/boost/asio/any_io_executor.hpp index 1be8fb6cc6..8eb3d724bd 100644 --- a/boost/asio/any_io_executor.hpp +++ b/boost/asio/any_io_executor.hpp @@ -2,7 +2,7 @@ // any_io_executor.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -49,19 +49,248 @@ typedef executor any_io_executor; * execution::prefer_only * > @endcode */ +class any_io_executor : #if defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor<...> any_io_executor; + public execution::any_executor<...> #else // defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > any_io_executor; + public execution::any_executor< + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > #endif // defined(GENERATING_DOCUMENTATION) +{ +public: +#if !defined(GENERATING_DOCUMENTATION) + typedef execution::any_executor< + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > base_type; + + typedef void supportable_properties_type( + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + ); +#endif // !defined(GENERATING_DOCUMENTATION) + + /// Default constructor. + any_io_executor() BOOST_ASIO_NOEXCEPT + : base_type() + { + } + + /// Construct in an empty state. Equivalent effects to default constructor. + any_io_executor(nullptr_t) BOOST_ASIO_NOEXCEPT + : base_type(nullptr_t()) + { + } + + /// Copy constructor. + any_io_executor(const any_io_executor& e) BOOST_ASIO_NOEXCEPT + : base_type(static_cast(e)) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move constructor. + any_io_executor(any_io_executor&& e) BOOST_ASIO_NOEXCEPT + : base_type(static_cast(e)) + { + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) + : base_type(BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) + : base_type(BOOST_ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + any_io_executor& operator=(const any_io_executor& e) BOOST_ASIO_NOEXCEPT + { + base_type::operator=(static_cast(e)); + return *this; + } + +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move assignment operator. + any_io_executor& operator=(any_io_executor&& e) BOOST_ASIO_NOEXCEPT + { + base_type::operator=(static_cast(e)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + any_io_executor& operator=(nullptr_t) + { + base_type::operator=(nullptr_t()); + return *this; + } + + /// Destructor. + ~any_io_executor() + { + } + + /// Swap targets with another polymorphic wrapper. + void swap(any_io_executor& other) BOOST_ASIO_NOEXCEPT + { + static_cast(*this).swap(static_cast(other)); + } + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * boost::asio::require and boost::asio::prefer customisation points. + * + * For example: + * @code any_io_executor ex = ...; + * auto ex2 = boost::asio::require(ex, execution::blocking.possibly); @endcode + */ + template + any_io_executor require(const Property& p, + typename constraint< + traits::require_member::is_valid + >::type = 0) const + { + return static_cast(*this).require(p); + } + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * boost::asio::prefer customisation point. + * + * For example: + * @code any_io_executor ex = ...; + * auto ex2 = boost::asio::prefer(ex, execution::blocking.possibly); @endcode + */ + template + any_io_executor prefer(const Property& p, + typename constraint< + traits::prefer_member::is_valid + >::type = 0) const + { + return static_cast(*this).prefer(p); + } +}; + +#if !defined(GENERATING_DOCUMENTATION) + +namespace traits { + +#if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +template <> +struct equality_comparable +{ + static const bool is_valid = true; + static const bool is_noexcept = true; +}; + +#endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +#if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +template +struct execute_member +{ + static const bool is_valid = true; + static const bool is_noexcept = false; + typedef void result_type; +}; + +#endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +#if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +template +struct query_member : + query_member +{ +}; + +#endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +#if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +template +struct require_member : + require_member +{ + typedef any_io_executor result_type; +}; + +#endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +#if !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +template +struct prefer_member : + prefer_member +{ + typedef any_io_executor result_type; +}; + +#endif // !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +} // namespace traits + +#endif // !defined(GENERATING_DOCUMENTATION) #endif // defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) diff --git a/boost/asio/associated_allocator.hpp b/boost/asio/associated_allocator.hpp old mode 100755 new mode 100644 index 0735bb1619..76e8a9b883 --- a/boost/asio/associated_allocator.hpp +++ b/boost/asio/associated_allocator.hpp @@ -2,7 +2,7 @@ // associated_allocator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/associated_executor.hpp b/boost/asio/associated_executor.hpp old mode 100755 new mode 100644 index 555e46f184..6d4ac65f3b --- a/boost/asio/associated_executor.hpp +++ b/boost/asio/associated_executor.hpp @@ -2,7 +2,7 @@ // associated_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -109,9 +109,9 @@ get_associated_executor(const T& t) BOOST_ASIO_NOEXCEPT template inline typename associated_executor::type get_associated_executor(const T& t, const Executor& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return associated_executor::get(t, ex); } @@ -125,8 +125,8 @@ template inline typename associated_executor::type get_associated_executor(const T& t, ExecutionContext& ctx, - typename enable_if::value>::type* = 0) BOOST_ASIO_NOEXCEPT + typename constraint::value>::type = 0) BOOST_ASIO_NOEXCEPT { return associated_executor::get(t, ctx.get_executor()); diff --git a/boost/asio/async_result.hpp b/boost/asio/async_result.hpp old mode 100755 new mode 100644 index 3e76151aa1..3bcf424619 --- a/boost/asio/async_result.hpp +++ b/boost/asio/async_result.hpp @@ -2,7 +2,7 @@ // async_result.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -313,7 +313,7 @@ struct async_result_has_initiate_memfn typename ::boost::asio::decay::type, sig>::completion_handler_type #endif -#if defined(GENERATION_DOCUMENTATION) +#if defined(GENERATING_DOCUMENTATION) # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ct, sig) \ auto #elif defined(BOOST_ASIO_HAS_RETURN_TYPE_DEDUCTION) @@ -324,7 +324,7 @@ struct async_result_has_initiate_memfn BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) #endif -#if defined(GENERATION_DOCUMENTATION) +#if defined(GENERATING_DOCUMENTATION) # define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(ct, sig, expr) \ void_or_deduced #elif defined(BOOST_ASIO_HAS_DECLTYPE) @@ -350,7 +350,7 @@ void_or_deduced async_initiate( template -inline typename enable_if< +inline typename constraint< detail::async_result_has_initiate_memfn::value, BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signature, (async_result::type, @@ -370,7 +370,7 @@ async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, template -inline typename enable_if< +inline typename constraint< !detail::async_result_has_initiate_memfn::value, BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, Signature)>::type async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, @@ -392,7 +392,7 @@ async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, template -inline typename enable_if< +inline typename constraint< detail::async_result_has_initiate_memfn::value, BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signature, (async_result::type, @@ -409,7 +409,7 @@ async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, template -inline typename enable_if< +inline typename constraint< !detail::async_result_has_initiate_memfn::value, BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, Signature)>::type async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, @@ -428,7 +428,7 @@ async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, template \ - inline typename enable_if< \ + inline typename constraint< \ detail::async_result_has_initiate_memfn< \ CompletionToken, Signature>::value, \ BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signature, \ @@ -449,7 +449,7 @@ async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, template \ - inline typename enable_if< \ + inline typename constraint< \ !detail::async_result_has_initiate_memfn< \ CompletionToken, Signature>::value, \ BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, Signature)>::type \ diff --git a/boost/asio/awaitable.hpp b/boost/asio/awaitable.hpp old mode 100755 new mode 100644 index 6564cfd59d..e417723435 --- a/boost/asio/awaitable.hpp +++ b/boost/asio/awaitable.hpp @@ -2,7 +2,7 @@ // awaitable.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/basic_datagram_socket.hpp b/boost/asio/basic_datagram_socket.hpp old mode 100755 new mode 100644 index 1e9b6867dc..3b6319a3ad --- a/boost/asio/basic_datagram_socket.hpp +++ b/boost/asio/basic_datagram_socket.hpp @@ -2,7 +2,7 @@ // basic_datagram_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -46,6 +46,13 @@ class basic_datagram_socket; * @par Thread Safety * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. + * + * Synchronous @c send, @c send_to, @c receive, @c receive_from, and @c connect + * operations are thread safe with respect to each other, if the underlying + * operating system calls are also thread safe. This means that it is permitted + * to perform concurrent calls to these synchronous operations on a single + * socket object. Other synchronous operations, such as @c open or @c close, are + * not thread safe. */ template class basic_datagram_socket @@ -101,9 +108,9 @@ public: */ template explicit basic_datagram_socket(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context) { } @@ -139,9 +146,10 @@ public: template basic_datagram_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) : basic_socket(context, protocol) { } @@ -185,9 +193,9 @@ public: template basic_datagram_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, endpoint) { } @@ -230,9 +238,9 @@ public: template basic_datagram_socket(ExecutionContext& context, const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, protocol, native_socket) { } @@ -286,10 +294,10 @@ public: */ template basic_datagram_socket(basic_datagram_socket&& other, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(std::move(other)) { } @@ -308,7 +316,7 @@ public: * constructor. */ template - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value, basic_datagram_socket& diff --git a/boost/asio/basic_deadline_timer.hpp b/boost/asio/basic_deadline_timer.hpp old mode 100755 new mode 100644 index 3373036439..cc5ea6b492 --- a/boost/asio/basic_deadline_timer.hpp +++ b/boost/asio/basic_deadline_timer.hpp @@ -2,7 +2,7 @@ // basic_deadline_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -160,7 +160,7 @@ public: * dispatch handlers for any asynchronous operations performed on the timer. */ explicit basic_deadline_timer(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -176,10 +176,10 @@ public: */ template explicit basic_deadline_timer(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { } @@ -194,7 +194,7 @@ public: * as an absolute time. */ basic_deadline_timer(const executor_type& ex, const time_type& expiry_time) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); @@ -214,10 +214,10 @@ public: */ template basic_deadline_timer(ExecutionContext& context, const time_type& expiry_time, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); @@ -236,7 +236,7 @@ public: */ basic_deadline_timer(const executor_type& ex, const duration_type& expiry_time) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().expires_from_now( @@ -258,10 +258,10 @@ public: template basic_deadline_timer(ExecutionContext& context, const duration_type& expiry_time, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().expires_from_now( diff --git a/boost/asio/basic_io_object.hpp b/boost/asio/basic_io_object.hpp old mode 100755 new mode 100644 index 91494cc41a..97b26b12dc --- a/boost/asio/basic_io_object.hpp +++ b/boost/asio/basic_io_object.hpp @@ -2,7 +2,7 @@ // basic_io_object.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/basic_raw_socket.hpp b/boost/asio/basic_raw_socket.hpp old mode 100755 new mode 100644 index 6771ae257f..861c83aa9d --- a/boost/asio/basic_raw_socket.hpp +++ b/boost/asio/basic_raw_socket.hpp @@ -2,7 +2,7 @@ // basic_raw_socket.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -46,6 +46,13 @@ class basic_raw_socket; * @par Thread Safety * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. + * + * Synchronous @c send, @c send_to, @c receive, @c receive_from, and @c connect + * operations are thread safe with respect to each other, if the underlying + * operating system calls are also thread safe. This means that it is permitted + * to perform concurrent calls to these synchronous operations on a single + * socket object. Other synchronous operations, such as @c open or @c close, are + * not thread safe. */ template class basic_raw_socket @@ -101,9 +108,9 @@ public: */ template explicit basic_raw_socket(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context) { } @@ -138,9 +145,10 @@ public: */ template basic_raw_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) : basic_socket(context, protocol) { } @@ -183,9 +191,9 @@ public: */ template basic_raw_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, endpoint) { } @@ -228,9 +236,9 @@ public: template basic_raw_socket(ExecutionContext& context, const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, protocol, native_socket) { } @@ -283,10 +291,10 @@ public: */ template basic_raw_socket(basic_raw_socket&& other, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(std::move(other)) { } @@ -303,7 +311,7 @@ public: * constructor. */ template - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value, basic_raw_socket& diff --git a/boost/asio/basic_seq_packet_socket.hpp b/boost/asio/basic_seq_packet_socket.hpp old mode 100755 new mode 100644 index 82e751695e..ee506e0521 --- a/boost/asio/basic_seq_packet_socket.hpp +++ b/boost/asio/basic_seq_packet_socket.hpp @@ -2,7 +2,7 @@ // basic_seq_packet_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -44,6 +44,12 @@ class basic_seq_packet_socket; * @par Thread Safety * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. + * + * Synchronous @c send, @c receive, and @c connect operations are thread safe + * with respect to each other, if the underlying operating system calls are + * also thread safe. This means that it is permitted to perform concurrent + * calls to these synchronous operations on a single socket object. Other + * synchronous operations, such as @c open or @c close, are not thread safe. */ template class basic_seq_packet_socket @@ -101,9 +107,9 @@ public: */ template explicit basic_seq_packet_socket(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context) { } @@ -144,9 +150,10 @@ public: template basic_seq_packet_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) : basic_socket(context, protocol) { } @@ -191,9 +198,9 @@ public: template basic_seq_packet_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, endpoint) { } @@ -236,9 +243,9 @@ public: template basic_seq_packet_socket(ExecutionContext& context, const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, protocol, native_socket) { } @@ -294,10 +301,10 @@ public: */ template basic_seq_packet_socket(basic_seq_packet_socket&& other, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(std::move(other)) { } @@ -316,7 +323,7 @@ public: * constructor. */ template - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value, basic_seq_packet_socket& diff --git a/boost/asio/basic_serial_port.hpp b/boost/asio/basic_serial_port.hpp old mode 100755 new mode 100644 index 3fd33706a0..8db694d87e --- a/boost/asio/basic_serial_port.hpp +++ b/boost/asio/basic_serial_port.hpp @@ -2,7 +2,7 @@ // basic_serial_port.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -95,7 +95,7 @@ public: * serial port. */ explicit basic_serial_port(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -109,11 +109,11 @@ public: */ template explicit basic_serial_port(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value, - basic_serial_port - >::type* = 0) - : impl_(context) + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { } @@ -130,7 +130,7 @@ public: * port. */ basic_serial_port(const executor_type& ex, const char* device) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), device, ec); @@ -151,10 +151,10 @@ public: */ template basic_serial_port(ExecutionContext& context, const char* device, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), device, ec); @@ -174,7 +174,7 @@ public: * port. */ basic_serial_port(const executor_type& ex, const std::string& device) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), device, ec); @@ -195,10 +195,10 @@ public: */ template basic_serial_port(ExecutionContext& context, const std::string& device, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), device, ec); @@ -220,7 +220,7 @@ public: */ basic_serial_port(const executor_type& ex, const native_handle_type& native_serial_port) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), @@ -244,10 +244,10 @@ public: template basic_serial_port(ExecutionContext& context, const native_handle_type& native_serial_port, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), diff --git a/boost/asio/basic_signal_set.hpp b/boost/asio/basic_signal_set.hpp old mode 100755 new mode 100644 index 194d29a994..20b6f0c0bd --- a/boost/asio/basic_signal_set.hpp +++ b/boost/asio/basic_signal_set.hpp @@ -2,7 +2,7 @@ // basic_signal_set.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -28,6 +28,8 @@ #include #include +#include + namespace boost { namespace asio { @@ -115,7 +117,7 @@ public: * signal set. */ explicit basic_signal_set(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -129,10 +131,11 @@ public: */ template explicit basic_signal_set(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { } @@ -151,7 +154,7 @@ public: * signals.add(signal_number_1); @endcode */ basic_signal_set(const executor_type& ex, int signal_number_1) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); @@ -174,10 +177,11 @@ public: */ template basic_signal_set(ExecutionContext& context, int signal_number_1, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); @@ -203,7 +207,7 @@ public: */ basic_signal_set(const executor_type& ex, int signal_number_1, int signal_number_2) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); @@ -232,10 +236,11 @@ public: template basic_signal_set(ExecutionContext& context, int signal_number_1, int signal_number_2, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); @@ -266,7 +271,7 @@ public: */ basic_signal_set(const executor_type& ex, int signal_number_1, int signal_number_2, int signal_number_3) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); @@ -300,10 +305,11 @@ public: template basic_signal_set(ExecutionContext& context, int signal_number_1, int signal_number_2, int signal_number_3, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); @@ -567,4 +573,6 @@ private: } // namespace asio } // namespace boost +#include + #endif // BOOST_ASIO_BASIC_SIGNAL_SET_HPP diff --git a/boost/asio/basic_socket.hpp b/boost/asio/basic_socket.hpp old mode 100755 new mode 100644 index 1a349e496c..dedbe15445 --- a/boost/asio/basic_socket.hpp +++ b/boost/asio/basic_socket.hpp @@ -2,7 +2,7 @@ // basic_socket.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -112,7 +112,7 @@ public: * dispatch handlers for any asynchronous operations performed on the socket. */ explicit basic_socket(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -126,10 +126,10 @@ public: */ template explicit basic_socket(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { } @@ -145,7 +145,7 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_socket(const executor_type& ex, const protocol_type& protocol) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), protocol, ec); @@ -166,10 +166,11 @@ public: */ template basic_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), protocol, ec); @@ -192,7 +193,7 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_socket(const executor_type& ex, const endpoint_type& endpoint) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; const protocol_type protocol = endpoint.protocol(); @@ -220,10 +221,10 @@ public: */ template basic_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; const protocol_type protocol = endpoint.protocol(); @@ -248,7 +249,7 @@ public: */ basic_socket(const executor_type& ex, const protocol_type& protocol, const native_handle_type& native_socket) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), @@ -273,10 +274,10 @@ public: template basic_socket(ExecutionContext& context, const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), @@ -332,10 +333,10 @@ public: */ template basic_socket(basic_socket&& other, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0) + >::type = 0) : impl_(std::move(other.impl_)) { } @@ -351,7 +352,7 @@ public: * constructed using the @c basic_socket(const executor_type&) constructor. */ template - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value, basic_socket& diff --git a/boost/asio/basic_socket_acceptor.hpp b/boost/asio/basic_socket_acceptor.hpp old mode 100755 new mode 100644 index e01cc275c3..918b9fe70d --- a/boost/asio/basic_socket_acceptor.hpp +++ b/boost/asio/basic_socket_acceptor.hpp @@ -2,7 +2,7 @@ // basic_socket_acceptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -62,6 +62,12 @@ class basic_socket_acceptor; * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. * + * Synchronous @c accept operations are thread safe, if the underlying + * operating system calls are also thread safe. This means that it is permitted + * to perform concurrent calls to synchronous @c accept operations on a single + * socket object. Other synchronous operations, such as @c open or @c close, are + * not thread safe. + * * @par Example * Opening a socket acceptor with the SO_REUSEADDR option enabled: * @code @@ -120,7 +126,7 @@ public: * acceptor. */ explicit basic_socket_acceptor(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -136,10 +142,10 @@ public: */ template explicit basic_socket_acceptor(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { } @@ -156,7 +162,7 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_socket_acceptor(const executor_type& ex, const protocol_type& protocol) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), protocol, ec); @@ -178,10 +184,11 @@ public: template basic_socket_acceptor(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().open(impl_.get_implementation(), protocol, ec); @@ -217,7 +224,7 @@ public: */ basic_socket_acceptor(const executor_type& ex, const endpoint_type& endpoint, bool reuse_addr = true) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; const protocol_type protocol = endpoint.protocol(); @@ -266,10 +273,10 @@ public: template basic_socket_acceptor(ExecutionContext& context, const endpoint_type& endpoint, bool reuse_addr = true, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; const protocol_type protocol = endpoint.protocol(); @@ -305,7 +312,7 @@ public: */ basic_socket_acceptor(const executor_type& ex, const protocol_type& protocol, const native_handle_type& native_acceptor) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), @@ -331,10 +338,10 @@ public: template basic_socket_acceptor(ExecutionContext& context, const protocol_type& protocol, const native_handle_type& native_acceptor, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), @@ -394,10 +401,10 @@ public: */ template basic_socket_acceptor(basic_socket_acceptor&& other, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0) + >::type = 0) : impl_(std::move(other.impl_)) { } @@ -415,7 +422,7 @@ public: * constructor. */ template - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value, basic_socket_acceptor& @@ -1253,9 +1260,9 @@ public: */ template void accept(basic_socket& peer, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { boost::system::error_code ec; impl_.get_service().accept(impl_.get_implementation(), @@ -1289,9 +1296,9 @@ public: template BOOST_ASIO_SYNC_OP_VOID accept( basic_socket& peer, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { impl_.get_service().accept(impl_.get_implementation(), peer, static_cast(0), ec); @@ -1344,9 +1351,9 @@ public: async_accept(basic_socket& peer, BOOST_ASIO_MOVE_ARG(AcceptHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { return async_initiate( initiate_async_accept(this), handler, @@ -1619,10 +1626,10 @@ public: template typename Protocol::socket::template rebind_executor::other accept(const Executor1& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { boost::system::error_code ec; typename Protocol::socket::template @@ -1659,9 +1666,9 @@ public: typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other accept(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { boost::system::error_code ec; typename Protocol::socket::template rebind_executor< @@ -1702,10 +1709,10 @@ public: template typename Protocol::socket::template rebind_executor::other accept(const Executor1& ex, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { typename Protocol::socket::template rebind_executor::other peer(ex); @@ -1745,9 +1752,9 @@ public: typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other accept(ExecutionContext& context, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other peer(context); @@ -1809,10 +1816,10 @@ public: async_accept(const Executor1& ex, BOOST_ASIO_MOVE_ARG(MoveAcceptHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { typedef typename Protocol::socket::template rebind_executor< Executor1>::other other_socket_type; @@ -1879,9 +1886,9 @@ public: async_accept(ExecutionContext& context, BOOST_ASIO_MOVE_ARG(MoveAcceptHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { typedef typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other other_socket_type; @@ -2068,10 +2075,10 @@ public: template typename Protocol::socket::template rebind_executor::other accept(const Executor1& ex, endpoint_type& peer_endpoint, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { boost::system::error_code ec; typename Protocol::socket::template @@ -2114,9 +2121,9 @@ public: typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other accept(ExecutionContext& context, endpoint_type& peer_endpoint, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { boost::system::error_code ec; typename Protocol::socket::template rebind_executor< @@ -2164,10 +2171,10 @@ public: typename Protocol::socket::template rebind_executor::other accept(const executor_type& ex, endpoint_type& peer_endpoint, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { typename Protocol::socket::template rebind_executor::other peer(ex); @@ -2214,9 +2221,9 @@ public: typename ExecutionContext::executor_type>::other accept(ExecutionContext& context, endpoint_type& peer_endpoint, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other peer(context); @@ -2285,10 +2292,10 @@ public: async_accept(const Executor1& ex, endpoint_type& peer_endpoint, BOOST_ASIO_MOVE_ARG(MoveAcceptHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { typedef typename Protocol::socket::template rebind_executor< Executor1>::other other_socket_type; @@ -2362,9 +2369,9 @@ public: endpoint_type& peer_endpoint, BOOST_ASIO_MOVE_ARG(MoveAcceptHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { typedef typename Protocol::socket::template rebind_executor< typename ExecutionContext::executor_type>::other other_socket_type; diff --git a/boost/asio/basic_socket_iostream.hpp b/boost/asio/basic_socket_iostream.hpp old mode 100755 new mode 100644 index a318ac39c1..51d1103d7f --- a/boost/asio/basic_socket_iostream.hpp +++ b/boost/asio/basic_socket_iostream.hpp @@ -2,7 +2,7 @@ // basic_socket_iostream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/basic_socket_streambuf.hpp b/boost/asio/basic_socket_streambuf.hpp old mode 100755 new mode 100644 index 128a50d3e1..bd9c8d8d5a --- a/boost/asio/basic_socket_streambuf.hpp +++ b/boost/asio/basic_socket_streambuf.hpp @@ -2,7 +2,7 @@ // basic_socket_streambuf.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/basic_stream_socket.hpp b/boost/asio/basic_stream_socket.hpp old mode 100755 new mode 100644 index fe7fa2d62c..73de1699e4 --- a/boost/asio/basic_stream_socket.hpp +++ b/boost/asio/basic_stream_socket.hpp @@ -2,7 +2,7 @@ // basic_stream_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -47,6 +47,12 @@ class basic_stream_socket; * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. * + * Synchronous @c send, @c receive, and @c connect operations are thread safe + * with respect to each other, if the underlying operating system calls are + * also thread safe. This means that it is permitted to perform concurrent + * calls to these synchronous operations on a single socket object. Other + * synchronous operations, such as @c open or @c close, are not thread safe. + * * @par Concepts: * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. */ @@ -106,9 +112,9 @@ public: */ template explicit basic_stream_socket(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context) { } @@ -145,9 +151,10 @@ public: */ template basic_stream_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) : basic_socket(context, protocol) { } @@ -190,9 +197,9 @@ public: */ template basic_stream_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, endpoint) { } @@ -235,9 +242,9 @@ public: template basic_stream_socket(ExecutionContext& context, const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(context, protocol, native_socket) { } @@ -290,10 +297,10 @@ public: */ template basic_stream_socket(basic_stream_socket&& other, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0) + >::type = 0) : basic_socket(std::move(other)) { } @@ -310,7 +317,7 @@ public: * constructor. */ template - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value, basic_stream_socket& diff --git a/boost/asio/basic_streambuf.hpp b/boost/asio/basic_streambuf.hpp old mode 100755 new mode 100644 index 27992262a0..897d13367d --- a/boost/asio/basic_streambuf.hpp +++ b/boost/asio/basic_streambuf.hpp @@ -2,7 +2,7 @@ // basic_streambuf.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/basic_streambuf_fwd.hpp b/boost/asio/basic_streambuf_fwd.hpp old mode 100755 new mode 100644 index 426acaf2b0..3f88d36693 --- a/boost/asio/basic_streambuf_fwd.hpp +++ b/boost/asio/basic_streambuf_fwd.hpp @@ -2,7 +2,7 @@ // basic_streambuf_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/basic_waitable_timer.hpp b/boost/asio/basic_waitable_timer.hpp old mode 100755 new mode 100644 index 2bab21929c..f1bcca9929 --- a/boost/asio/basic_waitable_timer.hpp +++ b/boost/asio/basic_waitable_timer.hpp @@ -2,7 +2,7 @@ // basic_waitable_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -176,7 +176,7 @@ public: * dispatch handlers for any asynchronous operations performed on the timer. */ explicit basic_waitable_timer(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -192,10 +192,10 @@ public: */ template explicit basic_waitable_timer(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { } @@ -210,7 +210,7 @@ public: * as an absolute time. */ basic_waitable_timer(const executor_type& ex, const time_point& expiry_time) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); @@ -231,10 +231,10 @@ public: template explicit basic_waitable_timer(ExecutionContext& context, const time_point& expiry_time, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); @@ -252,7 +252,7 @@ public: * now. */ basic_waitable_timer(const executor_type& ex, const duration& expiry_time) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().expires_after( @@ -274,10 +274,10 @@ public: template explicit basic_waitable_timer(ExecutionContext& context, const duration& expiry_time, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().expires_after( @@ -338,9 +338,9 @@ public: template basic_waitable_timer( basic_waitable_timer&& other, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : impl_(std::move(other.impl_)) { } @@ -358,7 +358,7 @@ public: * constructor. */ template - typename enable_if< + typename constraint< is_convertible::value, basic_waitable_timer& >::type operator=(basic_waitable_timer&& other) diff --git a/boost/asio/bind_executor.hpp b/boost/asio/bind_executor.hpp old mode 100755 new mode 100644 index 06544f01ce..28b11667dc --- a/boost/asio/bind_executor.hpp +++ b/boost/asio/bind_executor.hpp @@ -2,7 +2,7 @@ // bind_executor.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -489,9 +489,9 @@ private: template inline executor_binder::type, Executor> bind_executor(const Executor& ex, BOOST_ASIO_MOVE_ARG(T) t, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { return executor_binder::type, Executor>( executor_arg_t(), ex, BOOST_ASIO_MOVE_CAST(T)(t)); @@ -502,8 +502,8 @@ template inline executor_binder::type, typename ExecutionContext::executor_type> bind_executor(ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(T) t, - typename enable_if::value>::type* = 0) + typename constraint::value>::type = 0) { return executor_binder::type, typename ExecutionContext::executor_type>( diff --git a/boost/asio/buffer.hpp b/boost/asio/buffer.hpp old mode 100755 new mode 100644 index 59418f2622..409a668909 --- a/boost/asio/buffer.hpp +++ b/boost/asio/buffer.hpp @@ -2,7 +2,7 @@ // buffer.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -387,9 +387,9 @@ private: /// Get an iterator to the first element in a buffer sequence. template inline const mutable_buffer* buffer_sequence_begin(const MutableBuffer& b, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return static_cast(detail::addressof(b)); } @@ -397,9 +397,9 @@ inline const mutable_buffer* buffer_sequence_begin(const MutableBuffer& b, /// Get an iterator to the first element in a buffer sequence. template inline const const_buffer* buffer_sequence_begin(const ConstBuffer& b, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return static_cast(detail::addressof(b)); } @@ -409,10 +409,10 @@ inline const const_buffer* buffer_sequence_begin(const ConstBuffer& b, /// Get an iterator to the first element in a buffer sequence. template inline auto buffer_sequence_begin(C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.begin()) + >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.begin()) { return c.begin(); } @@ -420,10 +420,10 @@ inline auto buffer_sequence_begin(C& c, /// Get an iterator to the first element in a buffer sequence. template inline auto buffer_sequence_begin(const C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.begin()) + >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.begin()) { return c.begin(); } @@ -432,20 +432,20 @@ inline auto buffer_sequence_begin(const C& c, template inline typename C::iterator buffer_sequence_begin(C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return c.begin(); } template inline typename C::const_iterator buffer_sequence_begin(const C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return c.begin(); } @@ -464,9 +464,9 @@ inline typename C::const_iterator buffer_sequence_begin(const C& c, /// Get an iterator to one past the end element in a buffer sequence. template inline const mutable_buffer* buffer_sequence_end(const MutableBuffer& b, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return static_cast(detail::addressof(b)) + 1; } @@ -474,9 +474,9 @@ inline const mutable_buffer* buffer_sequence_end(const MutableBuffer& b, /// Get an iterator to one past the end element in a buffer sequence. template inline const const_buffer* buffer_sequence_end(const ConstBuffer& b, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return static_cast(detail::addressof(b)) + 1; } @@ -486,10 +486,10 @@ inline const const_buffer* buffer_sequence_end(const ConstBuffer& b, /// Get an iterator to one past the end element in a buffer sequence. template inline auto buffer_sequence_end(C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.end()) + >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.end()) { return c.end(); } @@ -497,10 +497,10 @@ inline auto buffer_sequence_end(C& c, /// Get an iterator to one past the end element in a buffer sequence. template inline auto buffer_sequence_end(const C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.end()) + >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.end()) { return c.end(); } @@ -509,20 +509,20 @@ inline auto buffer_sequence_end(const C& c, template inline typename C::iterator buffer_sequence_end(C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return c.end(); } template inline typename C::const_iterator buffer_sequence_end(const C& c, - typename enable_if< + typename constraint< !is_convertible::value && !is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT { return c.end(); } diff --git a/boost/asio/buffered_read_stream.hpp b/boost/asio/buffered_read_stream.hpp old mode 100755 new mode 100644 index 24255ed330..85ff59cc00 --- a/boost/asio/buffered_read_stream.hpp +++ b/boost/asio/buffered_read_stream.hpp @@ -2,7 +2,7 @@ // buffered_read_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/buffered_read_stream_fwd.hpp b/boost/asio/buffered_read_stream_fwd.hpp old mode 100755 new mode 100644 index 90a902e4de..cf6eb77b25 --- a/boost/asio/buffered_read_stream_fwd.hpp +++ b/boost/asio/buffered_read_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_read_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/buffered_stream.hpp b/boost/asio/buffered_stream.hpp old mode 100755 new mode 100644 index a302fa5294..b89a5fdabc --- a/boost/asio/buffered_stream.hpp +++ b/boost/asio/buffered_stream.hpp @@ -2,7 +2,7 @@ // buffered_stream.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/buffered_stream_fwd.hpp b/boost/asio/buffered_stream_fwd.hpp old mode 100755 new mode 100644 index ae2991cb79..c72ce1f533 --- a/boost/asio/buffered_stream_fwd.hpp +++ b/boost/asio/buffered_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/buffered_write_stream.hpp b/boost/asio/buffered_write_stream.hpp old mode 100755 new mode 100644 index 59717142dd..2571a1f885 --- a/boost/asio/buffered_write_stream.hpp +++ b/boost/asio/buffered_write_stream.hpp @@ -2,7 +2,7 @@ // buffered_write_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/buffered_write_stream_fwd.hpp b/boost/asio/buffered_write_stream_fwd.hpp old mode 100755 new mode 100644 index feccaefd14..22ee54ed97 --- a/boost/asio/buffered_write_stream_fwd.hpp +++ b/boost/asio/buffered_write_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_write_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/buffers_iterator.hpp b/boost/asio/buffers_iterator.hpp old mode 100755 new mode 100644 index 10ef91f598..c53c5fc3e4 --- a/boost/asio/buffers_iterator.hpp +++ b/boost/asio/buffers_iterator.hpp @@ -2,7 +2,7 @@ // buffers_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/co_spawn.hpp b/boost/asio/co_spawn.hpp old mode 100755 new mode 100644 index a055342138..d061c85763 --- a/boost/asio/co_spawn.hpp +++ b/boost/asio/co_spawn.hpp @@ -2,7 +2,7 @@ // co_spawn.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -106,10 +106,10 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE( co_spawn(const Executor& ex, awaitable a, CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< + typename constraint< (is_executor::value || execution::is_executor::value) && is_convertible::value - >::type* = 0); + >::type = 0); /// Spawn a new coroutined-based thread of execution. /** @@ -162,10 +162,10 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE( co_spawn(const Executor& ex, awaitable a, CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< + typename constraint< (is_executor::value || execution::is_executor::value) && is_convertible::value - >::type* = 0); + >::type = 0); /// Spawn a new coroutined-based thread of execution. /** @@ -228,11 +228,11 @@ co_spawn(ExecutionContext& ctx, awaitable a, CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename ExecutionContext::executor_type), - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0); + >::type = 0); /// Spawn a new coroutined-based thread of execution. /** @@ -287,11 +287,11 @@ co_spawn(ExecutionContext& ctx, awaitable a, CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename ExecutionContext::executor_type), - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type* = 0); + >::type = 0); /// Spawn a new coroutined-based thread of execution. /** @@ -372,9 +372,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, co_spawn(const Executor& ex, F&& f, CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0); + >::type = 0); /// Spawn a new coroutined-based thread of execution. /** @@ -457,9 +457,9 @@ co_spawn(ExecutionContext& ctx, F&& f, CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename ExecutionContext::executor_type), - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0); + >::type = 0); } // namespace asio } // namespace boost diff --git a/boost/asio/completion_condition.hpp b/boost/asio/completion_condition.hpp old mode 100755 new mode 100644 index 587ef5c7f3..56414a20c5 --- a/boost/asio/completion_condition.hpp +++ b/boost/asio/completion_condition.hpp @@ -2,7 +2,7 @@ // completion_condition.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/compose.hpp b/boost/asio/compose.hpp old mode 100755 new mode 100644 index cdb13950f7..024b893b75 --- a/boost/asio/compose.hpp +++ b/boost/asio/compose.hpp @@ -2,7 +2,7 @@ // compose.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/connect.hpp b/boost/asio/connect.hpp old mode 100755 new mode 100644 index 607f31f81d..a6253875ae --- a/boost/asio/connect.hpp +++ b/boost/asio/connect.hpp @@ -2,7 +2,7 @@ // connect.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -91,8 +91,8 @@ struct is_endpoint_sequence template typename Protocol::endpoint connect(basic_socket& s, const EndpointSequence& endpoints, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); /// Establishes a socket connection by trying each endpoint in a sequence. /** @@ -127,8 +127,8 @@ typename Protocol::endpoint connect(basic_socket& s, template typename Protocol::endpoint connect(basic_socket& s, const EndpointSequence& endpoints, boost::system::error_code& ec, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #if !defined(BOOST_ASIO_NO_DEPRECATED) /// (Deprecated: Use range overload.) Establishes a socket connection by trying @@ -157,7 +157,7 @@ typename Protocol::endpoint connect(basic_socket& s, */ template Iterator connect(basic_socket& s, Iterator begin, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); /// (Deprecated: Use range overload.) Establishes a socket connection by trying /// each endpoint in a sequence. @@ -186,7 +186,7 @@ Iterator connect(basic_socket& s, Iterator begin, template Iterator connect(basic_socket& s, Iterator begin, boost::system::error_code& ec, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #endif // !defined(BOOST_ASIO_NO_DEPRECATED) /// Establishes a socket connection by trying each endpoint in a sequence. @@ -312,8 +312,8 @@ template typename Protocol::endpoint connect(basic_socket& s, const EndpointSequence& endpoints, ConnectCondition connect_condition, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); /// Establishes a socket connection by trying each endpoint in a sequence. /** @@ -380,8 +380,8 @@ template & s, const EndpointSequence& endpoints, ConnectCondition connect_condition, boost::system::error_code& ec, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #if !defined(BOOST_ASIO_NO_DEPRECATED) /// (Deprecated: Use range overload.) Establishes a socket connection by trying @@ -423,7 +423,7 @@ template Iterator connect(basic_socket& s, Iterator begin, ConnectCondition connect_condition, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); /// (Deprecated: Use range overload.) Establishes a socket connection by trying /// each endpoint in a sequence. @@ -464,7 +464,7 @@ template Iterator connect(basic_socket& s, Iterator begin, ConnectCondition connect_condition, boost::system::error_code& ec, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #endif // !defined(BOOST_ASIO_NO_DEPRECATED) /// Establishes a socket connection by trying each endpoint in a sequence. @@ -676,8 +676,8 @@ async_connect(basic_socket& s, const EndpointSequence& endpoints, BOOST_ASIO_MOVE_ARG(RangeConnectHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #if !defined(BOOST_ASIO_NO_DEPRECATED) /// (Deprecated: Use range overload.) Asynchronously establishes a socket @@ -724,7 +724,7 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, async_connect(basic_socket& s, Iterator begin, BOOST_ASIO_MOVE_ARG(IteratorConnectHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #endif // !defined(BOOST_ASIO_NO_DEPRECATED) /// Asynchronously establishes a socket connection by trying each endpoint in a @@ -892,8 +892,8 @@ async_connect(basic_socket& s, const EndpointSequence& endpoints, ConnectCondition connect_condition, BOOST_ASIO_MOVE_ARG(RangeConnectHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #if !defined(BOOST_ASIO_NO_DEPRECATED) /// (Deprecated: Use range overload.) Asynchronously establishes a socket @@ -953,7 +953,7 @@ async_connect(basic_socket& s, Iterator begin, ConnectCondition connect_condition, BOOST_ASIO_MOVE_ARG(IteratorConnectHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #endif // !defined(BOOST_ASIO_NO_DEPRECATED) /// Asynchronously establishes a socket connection by trying each endpoint in a diff --git a/boost/asio/coroutine.hpp b/boost/asio/coroutine.hpp old mode 100755 new mode 100644 index c5ed11b251..3be129a4c4 --- a/boost/asio/coroutine.hpp +++ b/boost/asio/coroutine.hpp @@ -2,7 +2,7 @@ // coroutine.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/deadline_timer.hpp b/boost/asio/deadline_timer.hpp old mode 100755 new mode 100644 index 2805717f17..f764e51471 --- a/boost/asio/deadline_timer.hpp +++ b/boost/asio/deadline_timer.hpp @@ -2,7 +2,7 @@ // deadline_timer.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/defer.hpp b/boost/asio/defer.hpp old mode 100755 new mode 100644 index 7967f9dc63..b9537d5b5e --- a/boost/asio/defer.hpp +++ b/boost/asio/defer.hpp @@ -2,7 +2,7 @@ // defer.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -102,9 +102,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type* = 0); + >::type = 0); /// Submits a completion token or function object for execution. /** @@ -119,8 +119,8 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( BOOST_ASIO_MOVE_ARG(CompletionToken) token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename ExecutionContext::executor_type), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); } // namespace asio } // namespace boost diff --git a/boost/asio/detached.hpp b/boost/asio/detached.hpp old mode 100755 new mode 100644 index 7f384a4e99..0447a45c63 --- a/boost/asio/detached.hpp +++ b/boost/asio/detached.hpp @@ -2,7 +2,7 @@ // detached.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -62,9 +62,9 @@ public: /// that to construct the adapted executor. template executor_with_default(const OtherExecutor& ex, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT : InnerExecutor(ex) { } diff --git a/boost/asio/detail/array.hpp b/boost/asio/detail/array.hpp old mode 100755 new mode 100644 index 2cd7f4a65a..4763f427dc --- a/boost/asio/detail/array.hpp +++ b/boost/asio/detail/array.hpp @@ -2,7 +2,7 @@ // detail/array.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/array_fwd.hpp b/boost/asio/detail/array_fwd.hpp old mode 100755 new mode 100644 index ac2dd3ff7e..3ba0b2675c --- a/boost/asio/detail/array_fwd.hpp +++ b/boost/asio/detail/array_fwd.hpp @@ -2,7 +2,7 @@ // detail/array_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/assert.hpp b/boost/asio/detail/assert.hpp old mode 100755 new mode 100644 index 1c935754c2..0a3add07ea --- a/boost/asio/detail/assert.hpp +++ b/boost/asio/detail/assert.hpp @@ -2,7 +2,7 @@ // detail/assert.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/atomic_count.hpp b/boost/asio/detail/atomic_count.hpp old mode 100755 new mode 100644 index bd6643b588..1cd6f9d151 --- a/boost/asio/detail/atomic_count.hpp +++ b/boost/asio/detail/atomic_count.hpp @@ -2,7 +2,7 @@ // detail/atomic_count.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/base_from_completion_cond.hpp b/boost/asio/detail/base_from_completion_cond.hpp old mode 100755 new mode 100644 index c16491a68b..cf4a1b768b --- a/boost/asio/detail/base_from_completion_cond.hpp +++ b/boost/asio/detail/base_from_completion_cond.hpp @@ -2,7 +2,7 @@ // detail/base_from_completion_cond.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/bind_handler.hpp b/boost/asio/detail/bind_handler.hpp old mode 100755 new mode 100644 index bc28d7b9f0..dcf2cc1b13 --- a/boost/asio/detail/bind_handler.hpp +++ b/boost/asio/detail/bind_handler.hpp @@ -2,7 +2,7 @@ // detail/bind_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -853,6 +853,7 @@ struct associated_allocator, Allocator> template struct associated_executor, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; @@ -865,6 +866,7 @@ struct associated_executor, Executor> template struct associated_executor, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; @@ -904,6 +906,7 @@ struct associated_allocator< template struct associated_executor, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; @@ -916,6 +919,7 @@ struct associated_executor, Executor> template struct associated_executor, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; diff --git a/boost/asio/detail/blocking_executor_op.hpp b/boost/asio/detail/blocking_executor_op.hpp index 7ca1cfffb7..e36bb98975 100644 --- a/boost/asio/detail/blocking_executor_op.hpp +++ b/boost/asio/detail/blocking_executor_op.hpp @@ -2,7 +2,7 @@ // detail/blocking_executor_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/buffer_resize_guard.hpp b/boost/asio/detail/buffer_resize_guard.hpp old mode 100755 new mode 100644 index 3a7996f8a4..45da2db28d --- a/boost/asio/detail/buffer_resize_guard.hpp +++ b/boost/asio/detail/buffer_resize_guard.hpp @@ -2,7 +2,7 @@ // detail/buffer_resize_guard.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/buffer_sequence_adapter.hpp b/boost/asio/detail/buffer_sequence_adapter.hpp old mode 100755 new mode 100644 index 38276c05d7..ad07bd9a29 --- a/boost/asio/detail/buffer_sequence_adapter.hpp +++ b/boost/asio/detail/buffer_sequence_adapter.hpp @@ -2,7 +2,7 @@ // detail/buffer_sequence_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/buffered_stream_storage.hpp b/boost/asio/detail/buffered_stream_storage.hpp old mode 100755 new mode 100644 index d3a74e558b..eefccee336 --- a/boost/asio/detail/buffered_stream_storage.hpp +++ b/boost/asio/detail/buffered_stream_storage.hpp @@ -2,7 +2,7 @@ // detail/buffered_stream_storage.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/bulk_executor_op.hpp b/boost/asio/detail/bulk_executor_op.hpp index a6bc6ef8c0..866aaf864a 100644 --- a/boost/asio/detail/bulk_executor_op.hpp +++ b/boost/asio/detail/bulk_executor_op.hpp @@ -2,7 +2,7 @@ // detail/bulk_executor_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/call_stack.hpp b/boost/asio/detail/call_stack.hpp old mode 100755 new mode 100644 index abb8f1598e..e1860ed489 --- a/boost/asio/detail/call_stack.hpp +++ b/boost/asio/detail/call_stack.hpp @@ -2,7 +2,7 @@ // detail/call_stack.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/chrono.hpp b/boost/asio/detail/chrono.hpp old mode 100755 new mode 100644 index 6ba6982bdd..548910c5ff --- a/boost/asio/detail/chrono.hpp +++ b/boost/asio/detail/chrono.hpp @@ -2,7 +2,7 @@ // detail/chrono.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/chrono_time_traits.hpp b/boost/asio/detail/chrono_time_traits.hpp old mode 100755 new mode 100644 index acdd394525..11325657d6 --- a/boost/asio/detail/chrono_time_traits.hpp +++ b/boost/asio/detail/chrono_time_traits.hpp @@ -2,7 +2,7 @@ // detail/chrono_time_traits.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/completion_handler.hpp b/boost/asio/detail/completion_handler.hpp old mode 100755 new mode 100644 index 4d7ac23a3c..d641c9ffa8 --- a/boost/asio/detail/completion_handler.hpp +++ b/boost/asio/detail/completion_handler.hpp @@ -2,7 +2,7 @@ // detail/completion_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/concurrency_hint.hpp b/boost/asio/detail/concurrency_hint.hpp old mode 100755 new mode 100644 index c49a367fd6..f27112c48c --- a/boost/asio/detail/concurrency_hint.hpp +++ b/boost/asio/detail/concurrency_hint.hpp @@ -2,7 +2,7 @@ // detail/concurrency_hint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/conditionally_enabled_event.hpp b/boost/asio/detail/conditionally_enabled_event.hpp old mode 100755 new mode 100644 index 4fb3071ee8..f302536554 --- a/boost/asio/detail/conditionally_enabled_event.hpp +++ b/boost/asio/detail/conditionally_enabled_event.hpp @@ -2,7 +2,7 @@ // detail/conditionally_enabled_event.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/conditionally_enabled_mutex.hpp b/boost/asio/detail/conditionally_enabled_mutex.hpp old mode 100755 new mode 100644 index 072fece6fc..fa712dfadd --- a/boost/asio/detail/conditionally_enabled_mutex.hpp +++ b/boost/asio/detail/conditionally_enabled_mutex.hpp @@ -2,7 +2,7 @@ // detail/conditionally_enabled_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/config.hpp b/boost/asio/detail/config.hpp old mode 100755 new mode 100644 index f502213309..aa33a359a6 --- a/boost/asio/detail/config.hpp +++ b/boost/asio/detail/config.hpp @@ -2,7 +2,7 @@ // detail/config.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -401,7 +401,11 @@ # if !defined(BOOST_ASIO_DISABLE_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) # if (__cplusplus >= 201103) # define BOOST_ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS 1 -# endif // (__cplusplus >= 201103) +# elif defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1900 && _MSVC_LANG >= 201103) +# define BOOST_ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS 1 +# endif // (_MSC_VER >= 1900 && _MSVC_LANG >= 201103) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) #endif // !defined(BOOST_ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) @@ -429,13 +433,13 @@ # endif // __has_feature(__cxx_variable_templates__) # endif // (__cplusplus >= 201402) # endif // defined(__clang__) -# if defined(__GNUC__) +# if defined(__GNUC__) && !defined(__INTEL_COMPILER) # if (__GNUC__ >= 6) # if (__cplusplus >= 201402) # define BOOST_ASIO_HAS_VARIABLE_TEMPLATES 1 # endif // (__cplusplus >= 201402) # endif // (__GNUC__ >= 6) -# endif // defined(__GNUC__) +# endif // defined(__GNUC__) && !defined(__INTEL_COMPILER) # if defined(BOOST_ASIO_MSVC) # if (_MSC_VER >= 1901) # define BOOST_ASIO_HAS_VARIABLE_TEMPLATES 1 @@ -477,13 +481,13 @@ # define BOOST_ASIO_HAS_CONSTANT_EXPRESSION_SFINAE 1 # endif // (__cplusplus >= 201402) # endif // defined(__clang__) -# if defined(__GNUC__) +# if defined(__GNUC__) && !defined(__INTEL_COMPILER) # if (__GNUC__ >= 7) # if (__cplusplus >= 201402) # define BOOST_ASIO_HAS_CONSTANT_EXPRESSION_SFINAE 1 # endif // (__cplusplus >= 201402) # endif // (__GNUC__ >= 7) -# endif // defined(__GNUC__) +# endif // defined(__GNUC__) && !defined(__INTEL_COMPILER) # if defined(BOOST_ASIO_MSVC) # if (_MSC_VER >= 1901) # define BOOST_ASIO_HAS_CONSTANT_EXPRESSION_SFINAE 1 @@ -495,11 +499,11 @@ // Enable workarounds for lack of working expression SFINAE. #if !defined(BOOST_ASIO_HAS_WORKING_EXPRESSION_SFINAE) # if !defined(BOOST_ASIO_DISABLE_WORKING_EXPRESSION_SFINAE) -# if !defined(BOOST_ASIO_MSVC) +# if !defined(BOOST_ASIO_MSVC) && !defined(__INTEL_COMPILER) # if (__cplusplus >= 201103) # define BOOST_ASIO_HAS_WORKING_EXPRESSION_SFINAE 1 # endif // (__cplusplus >= 201103) -# endif // !defined(BOOST_ASIO_MSVC) +# endif // !defined(BOOST_ASIO_MSVC) && !defined(__INTEL_COMPILER) # endif // !defined(BOOST_ASIO_DISABLE_WORKING_EXPRESSION_SFINAE) #endif // !defined(BOOST_ASIO_HAS_WORKING_EXPRESSION_SFINAE) @@ -1473,13 +1477,9 @@ // UNIX domain sockets. #if !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) # if !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS) -# if !defined(BOOST_ASIO_WINDOWS) \ - && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) +# if !defined(BOOST_ASIO_WINDOWS_RUNTIME) # define BOOST_ASIO_HAS_LOCAL_SOCKETS 1 -# endif // !defined(BOOST_ASIO_WINDOWS) - // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) +# endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) # endif // !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS) #endif // !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) @@ -1754,7 +1754,9 @@ #if !defined(BOOST_ASIO_HAS_CO_AWAIT) # if !defined(BOOST_ASIO_DISABLE_CO_AWAIT) # if defined(BOOST_ASIO_MSVC) -# if (_MSC_FULL_VER >= 190023506) +# if (_MSC_VER >= 1928) && (_MSVC_LANG >= 201705) +# define BOOST_ASIO_HAS_CO_AWAIT 1 +# elif (_MSC_FULL_VER >= 190023506) # if defined(_RESUMABLE_FUNCTIONS_SUPPORTED) # define BOOST_ASIO_HAS_CO_AWAIT 1 # endif // defined(_RESUMABLE_FUNCTIONS_SUPPORTED) @@ -1779,6 +1781,11 @@ // Standard library support for coroutines. #if !defined(BOOST_ASIO_HAS_STD_COROUTINE) # if !defined(BOOST_ASIO_DISABLE_STD_COROUTINE) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1928) && (_MSVC_LANG >= 201705) +# define BOOST_ASIO_HAS_STD_COROUTINE 1 +# endif // (_MSC_VER >= 1928) && (_MSVC_LANG >= 201705) +# endif // defined(BOOST_ASIO_MSVC) # if defined(__GNUC__) # if (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902) # if __has_include() @@ -1803,4 +1810,40 @@ # define BOOST_ASIO_NODISCARD #endif // !defined(BOOST_ASIO_NODISCARD) +// Kernel support for MSG_NOSIGNAL. +#if !defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) +# if defined(__linux__) +# define BOOST_ASIO_HAS_MSG_NOSIGNAL 1 +# elif defined(_POSIX_VERSION) +# if (_POSIX_VERSION >= 200809L) +# define BOOST_ASIO_HAS_MSG_NOSIGNAL 1 +# endif // _POSIX_VERSION >= 200809L +# endif // defined(_POSIX_VERSION) +#endif // !defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) + +// Standard library support for std::hash. +#if !defined(BOOST_ASIO_HAS_STD_HASH) +# if !defined(BOOST_ASIO_DISABLE_STD_HASH) +# if defined(__clang__) +# if defined(BOOST_ASIO_HAS_CLANG_LIBCXX) +# define BOOST_ASIO_HAS_STD_HASH 1 +# elif (__cplusplus >= 201103) +# define BOOST_ASIO_HAS_STD_HASH 1 +# endif // (__cplusplus >= 201103) +# endif // defined(__clang__) +# if defined(__GNUC__) +# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) +# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_ASIO_HAS_STD_HASH 1 +# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) +# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) +# endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_HASH 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) +# endif // !defined(BOOST_ASIO_DISABLE_STD_HASH) +#endif // !defined(BOOST_ASIO_HAS_STD_HASH) + #endif // BOOST_ASIO_DETAIL_CONFIG_HPP diff --git a/boost/asio/detail/consuming_buffers.hpp b/boost/asio/detail/consuming_buffers.hpp old mode 100755 new mode 100644 index f341d8829f..3a091808d0 --- a/boost/asio/detail/consuming_buffers.hpp +++ b/boost/asio/detail/consuming_buffers.hpp @@ -2,7 +2,7 @@ // detail/consuming_buffers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/cstddef.hpp b/boost/asio/detail/cstddef.hpp old mode 100755 new mode 100644 index 7a8c875a17..0d16e3c7b5 --- a/boost/asio/detail/cstddef.hpp +++ b/boost/asio/detail/cstddef.hpp @@ -2,7 +2,7 @@ // detail/cstddef.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/cstdint.hpp b/boost/asio/detail/cstdint.hpp old mode 100755 new mode 100644 index 44bb33a108..f309bf8b42 --- a/boost/asio/detail/cstdint.hpp +++ b/boost/asio/detail/cstdint.hpp @@ -2,7 +2,7 @@ // detail/cstdint.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/date_time_fwd.hpp b/boost/asio/detail/date_time_fwd.hpp old mode 100755 new mode 100644 index 03e241bb02..b32ab3b55c --- a/boost/asio/detail/date_time_fwd.hpp +++ b/boost/asio/detail/date_time_fwd.hpp @@ -2,7 +2,7 @@ // detail/date_time_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/deadline_timer_service.hpp b/boost/asio/detail/deadline_timer_service.hpp old mode 100755 new mode 100644 index 02bf13acb2..78087a7204 --- a/boost/asio/detail/deadline_timer_service.hpp +++ b/boost/asio/detail/deadline_timer_service.hpp @@ -2,7 +2,7 @@ // detail/deadline_timer_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/dependent_type.hpp b/boost/asio/detail/dependent_type.hpp old mode 100755 new mode 100644 index 4a9a2f524b..ec5ab72544 --- a/boost/asio/detail/dependent_type.hpp +++ b/boost/asio/detail/dependent_type.hpp @@ -2,7 +2,7 @@ // detail/dependent_type.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/descriptor_ops.hpp b/boost/asio/detail/descriptor_ops.hpp old mode 100755 new mode 100644 index 7efbf82297..e1981b346e --- a/boost/asio/detail/descriptor_ops.hpp +++ b/boost/asio/detail/descriptor_ops.hpp @@ -2,7 +2,7 @@ // detail/descriptor_ops.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/descriptor_read_op.hpp b/boost/asio/detail/descriptor_read_op.hpp old mode 100755 new mode 100644 index f3bfe952cd..9d0805bbf5 --- a/boost/asio/detail/descriptor_read_op.hpp +++ b/boost/asio/detail/descriptor_read_op.hpp @@ -2,7 +2,7 @@ // detail/descriptor_read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/descriptor_write_op.hpp b/boost/asio/detail/descriptor_write_op.hpp old mode 100755 new mode 100644 index 776466492e..b063909321 --- a/boost/asio/detail/descriptor_write_op.hpp +++ b/boost/asio/detail/descriptor_write_op.hpp @@ -2,7 +2,7 @@ // detail/descriptor_write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/dev_poll_reactor.hpp b/boost/asio/detail/dev_poll_reactor.hpp old mode 100755 new mode 100644 index 097e342a61..6f775e59e6 --- a/boost/asio/detail/dev_poll_reactor.hpp +++ b/boost/asio/detail/dev_poll_reactor.hpp @@ -2,7 +2,7 @@ // detail/dev_poll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/epoll_reactor.hpp b/boost/asio/detail/epoll_reactor.hpp old mode 100755 new mode 100644 index 8531c6b808..61da052717 --- a/boost/asio/detail/epoll_reactor.hpp +++ b/boost/asio/detail/epoll_reactor.hpp @@ -2,7 +2,7 @@ // detail/epoll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/event.hpp b/boost/asio/detail/event.hpp old mode 100755 new mode 100644 index 90364a36ec..02049e3591 --- a/boost/asio/detail/event.hpp +++ b/boost/asio/detail/event.hpp @@ -2,7 +2,7 @@ // detail/event.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/eventfd_select_interrupter.hpp b/boost/asio/detail/eventfd_select_interrupter.hpp old mode 100755 new mode 100644 index 55a295216e..7f18389d6e --- a/boost/asio/detail/eventfd_select_interrupter.hpp +++ b/boost/asio/detail/eventfd_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/eventfd_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/executor_function.hpp b/boost/asio/detail/executor_function.hpp old mode 100755 new mode 100644 index 14e0440e66..bf6c9c1063 --- a/boost/asio/detail/executor_function.hpp +++ b/boost/asio/detail/executor_function.hpp @@ -2,7 +2,7 @@ // detail/executor_function.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -112,7 +113,7 @@ private: // Make the upcall if required. if (call) { - function(); + boost_asio_handler_invoke_helpers::invoke(function, function); } } diff --git a/boost/asio/detail/executor_op.hpp b/boost/asio/detail/executor_op.hpp old mode 100755 new mode 100644 index cb12023cf0..6a6c9761e1 --- a/boost/asio/detail/executor_op.hpp +++ b/boost/asio/detail/executor_op.hpp @@ -2,7 +2,7 @@ // detail/executor_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/fd_set_adapter.hpp b/boost/asio/detail/fd_set_adapter.hpp old mode 100755 new mode 100644 index f5373306ee..2764caf600 --- a/boost/asio/detail/fd_set_adapter.hpp +++ b/boost/asio/detail/fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/fenced_block.hpp b/boost/asio/detail/fenced_block.hpp old mode 100755 new mode 100644 index 4b9afdac5c..462be5e9fa --- a/boost/asio/detail/fenced_block.hpp +++ b/boost/asio/detail/fenced_block.hpp @@ -2,7 +2,7 @@ // detail/fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/functional.hpp b/boost/asio/detail/functional.hpp old mode 100755 new mode 100644 index 55657d9bae..e2996f7211 --- a/boost/asio/detail/functional.hpp +++ b/boost/asio/detail/functional.hpp @@ -2,7 +2,7 @@ // detail/functional.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/future.hpp b/boost/asio/detail/future.hpp old mode 100755 new mode 100644 index 046d417b25..ac3d33f6db --- a/boost/asio/detail/future.hpp +++ b/boost/asio/detail/future.hpp @@ -2,7 +2,7 @@ // detail/future.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/gcc_arm_fenced_block.hpp b/boost/asio/detail/gcc_arm_fenced_block.hpp old mode 100755 new mode 100644 index 4f146ce365..256b6aa047 --- a/boost/asio/detail/gcc_arm_fenced_block.hpp +++ b/boost/asio/detail/gcc_arm_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_arm_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/gcc_hppa_fenced_block.hpp b/boost/asio/detail/gcc_hppa_fenced_block.hpp old mode 100755 new mode 100644 index 4c4e779770..ef7a7b789e --- a/boost/asio/detail/gcc_hppa_fenced_block.hpp +++ b/boost/asio/detail/gcc_hppa_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_hppa_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/gcc_sync_fenced_block.hpp b/boost/asio/detail/gcc_sync_fenced_block.hpp old mode 100755 new mode 100644 index 23827448d0..16f87f6092 --- a/boost/asio/detail/gcc_sync_fenced_block.hpp +++ b/boost/asio/detail/gcc_sync_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_sync_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/gcc_x86_fenced_block.hpp b/boost/asio/detail/gcc_x86_fenced_block.hpp old mode 100755 new mode 100644 index 7fcbddd28e..5b55c7f99f --- a/boost/asio/detail/gcc_x86_fenced_block.hpp +++ b/boost/asio/detail/gcc_x86_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_x86_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/global.hpp b/boost/asio/detail/global.hpp old mode 100755 new mode 100644 index c750068dae..5fd53cce20 --- a/boost/asio/detail/global.hpp +++ b/boost/asio/detail/global.hpp @@ -2,7 +2,7 @@ // detail/global.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/handler_alloc_helpers.hpp b/boost/asio/detail/handler_alloc_helpers.hpp old mode 100755 new mode 100644 index 4d713940af..8dd7ee4a43 --- a/boost/asio/detail/handler_alloc_helpers.hpp +++ b/boost/asio/detail/handler_alloc_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_alloc_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -61,7 +61,7 @@ inline void* allocate(std::size_t s, Handler& h) (void)h; #if !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) return boost::asio::detail::thread_info_base::allocate( - boost::asio::detail::thread_context::thread_call_stack::top(), s); + boost::asio::detail::thread_context::top_of_thread_call_stack(), s); #else // !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) return ::operator new(size); #endif // !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) @@ -82,7 +82,7 @@ inline void deallocate(void* p, std::size_t s, Handler& h) (void)h; #if !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) boost::asio::detail::thread_info_base::deallocate( - boost::asio::detail::thread_context::thread_call_stack::top(), p, s); + boost::asio::detail::thread_context::top_of_thread_call_stack(), p, s); #else // !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) (void)s; ::operator delete(p); diff --git a/boost/asio/detail/handler_cont_helpers.hpp b/boost/asio/detail/handler_cont_helpers.hpp old mode 100755 new mode 100644 index b69712ad8b..ce0093657b --- a/boost/asio/detail/handler_cont_helpers.hpp +++ b/boost/asio/detail/handler_cont_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_cont_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/handler_invoke_helpers.hpp b/boost/asio/detail/handler_invoke_helpers.hpp old mode 100755 new mode 100644 index 35007e45cf..8c9acce4a5 --- a/boost/asio/detail/handler_invoke_helpers.hpp +++ b/boost/asio/detail/handler_invoke_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_invoke_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/handler_tracking.hpp b/boost/asio/detail/handler_tracking.hpp old mode 100755 new mode 100644 index 7873041243..a0cfde52f7 --- a/boost/asio/detail/handler_tracking.hpp +++ b/boost/asio/detail/handler_tracking.hpp @@ -2,7 +2,7 @@ // detail/handler_tracking.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/handler_type_requirements.hpp b/boost/asio/detail/handler_type_requirements.hpp old mode 100755 new mode 100644 index 89197126b9..c593b86870 --- a/boost/asio/detail/handler_type_requirements.hpp +++ b/boost/asio/detail/handler_type_requirements.hpp @@ -2,7 +2,7 @@ // detail/handler_type_requirements.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/handler_work.hpp b/boost/asio/detail/handler_work.hpp old mode 100755 new mode 100644 index b40b7ffe87..83eaa444eb --- a/boost/asio/detail/handler_work.hpp +++ b/boost/asio/detail/handler_work.hpp @@ -2,7 +2,7 @@ // detail/handler_work.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -35,6 +35,12 @@ namespace asio { class executor; class io_context; +#if !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +class any_io_executor; + +#endif // !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + namespace execution { #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) @@ -57,7 +63,7 @@ template ::type> { public: - explicit handler_work_base(const Executor& ex) BOOST_ASIO_NOEXCEPT + explicit handler_work_base(int, int, const Executor& ex) BOOST_ASIO_NOEXCEPT : executor_(ex), owns_work_(true) { @@ -192,7 +198,7 @@ class handler_work_base::type> { public: - explicit handler_work_base(const Executor&) + explicit handler_work_base(int, int, const Executor&) { } @@ -215,7 +221,7 @@ template class handler_work_base { public: - explicit handler_work_base(const Executor& ex) BOOST_ASIO_NOEXCEPT + explicit handler_work_base(int, int, const Executor& ex) BOOST_ASIO_NOEXCEPT #if !defined(BOOST_ASIO_NO_TYPEID) : executor_( ex.target_type() == typeid(typename IoContext::executor_type) @@ -305,7 +311,8 @@ public: #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) executor_type; - explicit handler_work_base(const executor_type& ex) BOOST_ASIO_NOEXCEPT + explicit handler_work_base(int, int, + const executor_type& ex) BOOST_ASIO_NOEXCEPT #if !defined(BOOST_ASIO_NO_TYPEID) : executor_( ex.target_type() == typeid(typename IoContext::executor_type) @@ -348,12 +355,79 @@ public: } template - void dispatch(Function& function, Handler& handler) + void dispatch(Function& function, Handler&) { execution::execute( - boost::asio::prefer(executor_, - execution::blocking.possibly, - execution::allocator((get_associated_allocator)(handler))), + boost::asio::prefer(executor_, execution::blocking.possibly), + BOOST_ASIO_MOVE_CAST(Function)(function)); + } + +private: + executor_type executor_; +}; + +#if !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +template +class handler_work_base::value + >::type> +{ +public: + typedef Executor executor_type; + + explicit handler_work_base(int, int, + const executor_type& ex) BOOST_ASIO_NOEXCEPT +#if !defined(BOOST_ASIO_NO_TYPEID) + : executor_( + ex.target_type() == typeid(typename IoContext::executor_type) + ? executor_type() + : boost::asio::prefer(ex, execution::outstanding_work.tracked)) +#else // !defined(BOOST_ASIO_NO_TYPEID) + : executor_(boost::asio::prefer(ex, execution::outstanding_work.tracked)) +#endif // !defined(BOOST_ASIO_NO_TYPEID) + { + } + + handler_work_base(const executor_type& ex, + const executor_type& candidate) BOOST_ASIO_NOEXCEPT + : executor_(ex != candidate ? ex : executor_type()) + { + } + + template + handler_work_base(const executor_type& ex, + const OtherExecutor&) BOOST_ASIO_NOEXCEPT + : executor_(boost::asio::prefer(ex, execution::outstanding_work.tracked)) + { + } + + handler_work_base(const handler_work_base& other) BOOST_ASIO_NOEXCEPT + : executor_(other.executor_) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) + handler_work_base(handler_work_base&& other) BOOST_ASIO_NOEXCEPT + : executor_(BOOST_ASIO_MOVE_CAST(executor_type)(other.executor_)) + { + } +#endif // defined(BOOST_ASIO_HAS_MOVE) + + bool owns_work() const BOOST_ASIO_NOEXCEPT + { + return !!executor_; + } + + template + void dispatch(Function& function, Handler&) + { + execution::execute( + boost::asio::prefer(executor_, execution::blocking.possibly), BOOST_ASIO_MOVE_CAST(Function)(function)); } @@ -361,6 +435,8 @@ private: executor_type executor_; }; +#endif // !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + template class handler_work : handler_work_base, @@ -373,7 +449,7 @@ public: Handler, IoExecutor>::type, IoExecutor> base2_type; handler_work(Handler& handler, const IoExecutor& io_ex) BOOST_ASIO_NOEXCEPT - : base1_type(io_ex), + : base1_type(0, 0, io_ex), base2_type(boost::asio::get_associated_executor(handler, io_ex), io_ex) { } @@ -410,7 +486,7 @@ public: typedef handler_work_base base1_type; handler_work(Handler&, const IoExecutor& io_ex) BOOST_ASIO_NOEXCEPT - : base1_type(io_ex) + : base1_type(0, 0, io_ex) { } diff --git a/boost/asio/detail/hash_map.hpp b/boost/asio/detail/hash_map.hpp old mode 100755 new mode 100644 index 57a2929787..a5d5f7ae4a --- a/boost/asio/detail/hash_map.hpp +++ b/boost/asio/detail/hash_map.hpp @@ -2,7 +2,7 @@ // detail/hash_map.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/buffer_sequence_adapter.ipp b/boost/asio/detail/impl/buffer_sequence_adapter.ipp old mode 100755 new mode 100644 index 4b640ba7c7..c0a878b004 --- a/boost/asio/detail/impl/buffer_sequence_adapter.ipp +++ b/boost/asio/detail/impl/buffer_sequence_adapter.ipp @@ -2,7 +2,7 @@ // detail/impl/buffer_sequence_adapter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/descriptor_ops.ipp b/boost/asio/detail/impl/descriptor_ops.ipp old mode 100755 new mode 100644 index 16c04f3eb8..4701286dcb --- a/boost/asio/detail/impl/descriptor_ops.ipp +++ b/boost/asio/detail/impl/descriptor_ops.ipp @@ -2,7 +2,7 @@ // detail/impl/descriptor_ops.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/dev_poll_reactor.hpp b/boost/asio/detail/impl/dev_poll_reactor.hpp old mode 100755 new mode 100644 index e0dfb0692a..87ed83edf4 --- a/boost/asio/detail/impl/dev_poll_reactor.hpp +++ b/boost/asio/detail/impl/dev_poll_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/dev_poll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/dev_poll_reactor.ipp b/boost/asio/detail/impl/dev_poll_reactor.ipp old mode 100755 new mode 100644 index 86d84c63e9..abd8bab170 --- a/boost/asio/detail/impl/dev_poll_reactor.ipp +++ b/boost/asio/detail/impl/dev_poll_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/dev_poll_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/epoll_reactor.hpp b/boost/asio/detail/impl/epoll_reactor.hpp old mode 100755 new mode 100644 index 0f1d7d4f79..70791c4617 --- a/boost/asio/detail/impl/epoll_reactor.hpp +++ b/boost/asio/detail/impl/epoll_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/epoll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/epoll_reactor.ipp b/boost/asio/detail/impl/epoll_reactor.ipp old mode 100755 new mode 100644 index 651b2d704f..b57da8581f --- a/boost/asio/detail/impl/epoll_reactor.ipp +++ b/boost/asio/detail/impl/epoll_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/epoll_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/boost/asio/detail/impl/eventfd_select_interrupter.ipp old mode 100755 new mode 100644 index f4c9e25979..6c499781fc --- a/boost/asio/detail/impl/eventfd_select_interrupter.ipp +++ b/boost/asio/detail/impl/eventfd_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/eventfd_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -23,11 +23,11 @@ #include #include #include -#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 +#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) # include -#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 +#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) # include -#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 +#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) #include #include #include @@ -46,14 +46,14 @@ eventfd_select_interrupter::eventfd_select_interrupter() void eventfd_select_interrupter::open_descriptors() { -#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 +#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0); if (read_descriptor_ != -1) { ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); } -#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 +#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) # if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK) write_descriptor_ = read_descriptor_ = ::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); @@ -70,7 +70,7 @@ void eventfd_select_interrupter::open_descriptors() ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); } } -#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 +#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) if (read_descriptor_ == -1) { @@ -153,7 +153,9 @@ bool eventfd_select_interrupter::reset() return false; if (errno == EINTR) continue; - if (errno == EWOULDBLOCK || errno == EAGAIN) + if (errno == EWOULDBLOCK) + return true; + if (errno == EAGAIN) return true; return false; } diff --git a/boost/asio/detail/impl/handler_tracking.ipp b/boost/asio/detail/impl/handler_tracking.ipp old mode 100755 new mode 100644 index f87924c6c3..b23f1a78aa --- a/boost/asio/detail/impl/handler_tracking.ipp +++ b/boost/asio/detail/impl/handler_tracking.ipp @@ -2,7 +2,7 @@ // detail/impl/handler_tracking.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/kqueue_reactor.hpp b/boost/asio/detail/impl/kqueue_reactor.hpp old mode 100755 new mode 100644 index bc29b84b5a..fa6db9b9f7 --- a/boost/asio/detail/impl/kqueue_reactor.hpp +++ b/boost/asio/detail/impl/kqueue_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/kqueue_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/impl/kqueue_reactor.ipp b/boost/asio/detail/impl/kqueue_reactor.ipp old mode 100755 new mode 100644 index 8807e0b12d..fe24cf8f71 --- a/boost/asio/detail/impl/kqueue_reactor.ipp +++ b/boost/asio/detail/impl/kqueue_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/kqueue_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/impl/null_event.ipp b/boost/asio/detail/impl/null_event.ipp old mode 100755 new mode 100644 index 516b2bed12..e36344d5d3 --- a/boost/asio/detail/impl/null_event.ipp +++ b/boost/asio/detail/impl/null_event.ipp @@ -2,7 +2,7 @@ // detail/impl/null_event.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/pipe_select_interrupter.ipp b/boost/asio/detail/impl/pipe_select_interrupter.ipp old mode 100755 new mode 100644 index dfa461ba43..f11af1a9de --- a/boost/asio/detail/impl/pipe_select_interrupter.ipp +++ b/boost/asio/detail/impl/pipe_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/pipe_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/posix_event.ipp b/boost/asio/detail/impl/posix_event.ipp old mode 100755 new mode 100644 index 66d05aa66d..fc6c86d527 --- a/boost/asio/detail/impl/posix_event.ipp +++ b/boost/asio/detail/impl/posix_event.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_event.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -38,10 +38,14 @@ posix_event::posix_event() #else // (defined(__MACH__) && defined(__APPLE__)) // || (defined(__ANDROID__) && (__ANDROID_API__ < 21)) ::pthread_condattr_t attr; - ::pthread_condattr_init(&attr); - int error = ::pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); + int error = ::pthread_condattr_init(&attr); if (error == 0) - error = ::pthread_cond_init(&cond_, &attr); + { + error = ::pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); + if (error == 0) + error = ::pthread_cond_init(&cond_, &attr); + ::pthread_condattr_destroy(&attr); + } #endif // (defined(__MACH__) && defined(__APPLE__)) // || (defined(__ANDROID__) && (__ANDROID_API__ < 21)) diff --git a/boost/asio/detail/impl/posix_mutex.ipp b/boost/asio/detail/impl/posix_mutex.ipp old mode 100755 new mode 100644 index 08f2fe4f87..82429aee94 --- a/boost/asio/detail/impl/posix_mutex.ipp +++ b/boost/asio/detail/impl/posix_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/posix_thread.ipp b/boost/asio/detail/impl/posix_thread.ipp old mode 100755 new mode 100644 index 2b7c097b28..4193302dcb --- a/boost/asio/detail/impl/posix_thread.ipp +++ b/boost/asio/detail/impl/posix_thread.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_thread.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/posix_tss_ptr.ipp b/boost/asio/detail/impl/posix_tss_ptr.ipp old mode 100755 new mode 100644 index 63eacee9ac..1d94dc15d2 --- a/boost/asio/detail/impl/posix_tss_ptr.ipp +++ b/boost/asio/detail/impl/posix_tss_ptr.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_tss_ptr.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/reactive_descriptor_service.ipp b/boost/asio/detail/impl/reactive_descriptor_service.ipp old mode 100755 new mode 100644 index 8f1a29ce3e..d46a92bb8d --- a/boost/asio/detail/impl/reactive_descriptor_service.ipp +++ b/boost/asio/detail/impl/reactive_descriptor_service.ipp @@ -2,7 +2,7 @@ // detail/impl/reactive_descriptor_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/reactive_serial_port_service.ipp b/boost/asio/detail/impl/reactive_serial_port_service.ipp old mode 100755 new mode 100644 index 32f749f3f3..bed7686052 --- a/boost/asio/detail/impl/reactive_serial_port_service.ipp +++ b/boost/asio/detail/impl/reactive_serial_port_service.ipp @@ -2,7 +2,7 @@ // detail/impl/reactive_serial_port_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/impl/reactive_socket_service_base.ipp b/boost/asio/detail/impl/reactive_socket_service_base.ipp old mode 100755 new mode 100644 index 4cf2eb1ab0..19e1049c49 --- a/boost/asio/detail/impl/reactive_socket_service_base.ipp +++ b/boost/asio/detail/impl/reactive_socket_service_base.ipp @@ -2,7 +2,7 @@ // detail/reactive_socket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/resolver_service_base.ipp b/boost/asio/detail/impl/resolver_service_base.ipp old mode 100755 new mode 100644 index 6bdb167de8..daf3fb0add --- a/boost/asio/detail/impl/resolver_service_base.ipp +++ b/boost/asio/detail/impl/resolver_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/resolver_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/scheduler.ipp b/boost/asio/detail/impl/scheduler.ipp old mode 100755 new mode 100644 index 44828f560d..089e36e8e8 --- a/boost/asio/detail/impl/scheduler.ipp +++ b/boost/asio/detail/impl/scheduler.ipp @@ -2,7 +2,7 @@ // detail/impl/scheduler.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -325,6 +325,11 @@ void scheduler::compensating_work_started() ++static_cast(this_thread)->private_outstanding_work; } +bool scheduler::can_dispatch() +{ + return thread_call_stack::contains(this) != 0; +} + void scheduler::capture_current_exception() { if (thread_info_base* this_thread = thread_call_stack::contains(this)) diff --git a/boost/asio/detail/impl/select_reactor.hpp b/boost/asio/detail/impl/select_reactor.hpp old mode 100755 new mode 100644 index 290d5e5488..57c8137a42 --- a/boost/asio/detail/impl/select_reactor.hpp +++ b/boost/asio/detail/impl/select_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/select_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/select_reactor.ipp b/boost/asio/detail/impl/select_reactor.ipp old mode 100755 new mode 100644 index 00b0fb5791..1e2fff4abf --- a/boost/asio/detail/impl/select_reactor.ipp +++ b/boost/asio/detail/impl/select_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/select_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/service_registry.hpp b/boost/asio/detail/impl/service_registry.hpp old mode 100755 new mode 100644 index 808ff2ffac..305786bdf7 --- a/boost/asio/detail/impl/service_registry.hpp +++ b/boost/asio/detail/impl/service_registry.hpp @@ -2,7 +2,7 @@ // detail/impl/service_registry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/service_registry.ipp b/boost/asio/detail/impl/service_registry.ipp old mode 100755 new mode 100644 index bbff0f98cd..f5f1b44064 --- a/boost/asio/detail/impl/service_registry.ipp +++ b/boost/asio/detail/impl/service_registry.ipp @@ -2,7 +2,7 @@ // detail/impl/service_registry.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/signal_set_service.ipp b/boost/asio/detail/impl/signal_set_service.ipp old mode 100755 new mode 100644 index 421f838705..f9f6d45940 --- a/boost/asio/detail/impl/signal_set_service.ipp +++ b/boost/asio/detail/impl/signal_set_service.ipp @@ -2,7 +2,7 @@ // detail/impl/signal_set_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/socket_ops.ipp b/boost/asio/detail/impl/socket_ops.ipp old mode 100755 new mode 100644 index ef4462e5ab..83bf30f62b --- a/boost/asio/detail/impl/socket_ops.ipp +++ b/boost/asio/detail/impl/socket_ops.ipp @@ -2,7 +2,7 @@ // detail/impl/socket_ops.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -1388,9 +1388,9 @@ signed_size_type send(socket_type s, const buf* bufs, size_t count, msghdr msg = msghdr(); msg.msg_iov = const_cast(bufs); msg.msg_iovlen = static_cast(count); -#if defined(__linux__) +#if defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) flags |= MSG_NOSIGNAL; -#endif // defined(__linux__) +#endif // defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) signed_size_type result = ::sendmsg(s, &msg, flags); get_last_error(ec, result < 0); return result; @@ -1419,9 +1419,9 @@ signed_size_type send1(socket_type s, const void* data, size_t size, ec.assign(0, ec.category()); return bytes_transferred; #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) -#if defined(__linux__) +#if defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) flags |= MSG_NOSIGNAL; -#endif // defined(__linux__) +#endif // defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) signed_size_type result = ::send(s, static_cast(data), size, flags); get_last_error(ec, result < 0); @@ -1617,9 +1617,9 @@ signed_size_type sendto(socket_type s, const buf* bufs, size_t count, msg.msg_namelen = static_cast(addrlen); msg.msg_iov = const_cast(bufs); msg.msg_iovlen = static_cast(count); -#if defined(__linux__) +#if defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) flags |= MSG_NOSIGNAL; -#endif // defined(__linux__) +#endif // defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) signed_size_type result = ::sendmsg(s, &msg, flags); get_last_error(ec, result < 0); return result; @@ -1657,9 +1657,9 @@ signed_size_type sendto1(socket_type s, const void* data, size_t size, ec.assign(0, ec.category()); return bytes_transferred; #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) -#if defined(__linux__) +#if defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) flags |= MSG_NOSIGNAL; -#endif // defined(__linux__) +#endif // defined(BOOST_ASIO_HAS_MSG_NOSIGNAL) signed_size_type result = call_sendto(&msghdr::msg_namelen, s, data, size, flags, addr, addrlen); get_last_error(ec, result < 0); @@ -1825,7 +1825,9 @@ socket_type socket(int af, int type, int protocol, return s; #elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__) socket_type s = ::socket(af, type, protocol); - get_last_error(ec, s < 0); + get_last_error(ec, s == invalid_socket); + if (s == invalid_socket) + return s; int optval = 1; int result = ::setsockopt(s, SOL_SOCKET, @@ -2544,7 +2546,7 @@ int inet_pton(int af, const char* src, void* dest, bytes[1] = static_cast(b1); bytes[2] = static_cast(b2); bytes[3] = static_cast(b3); - ec.assign(), ec.category()); + ec.assign(0, ec.category()); return 1; } else if (af == BOOST_ASIO_OS_DEF(AF_INET6)) diff --git a/boost/asio/detail/impl/socket_select_interrupter.ipp b/boost/asio/detail/impl/socket_select_interrupter.ipp old mode 100755 new mode 100644 index ef9c1c1659..d79df6519a --- a/boost/asio/detail/impl/socket_select_interrupter.ipp +++ b/boost/asio/detail/impl/socket_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/socket_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/strand_executor_service.hpp b/boost/asio/detail/impl/strand_executor_service.hpp old mode 100755 new mode 100644 index 494282cd90..3fdee1646e --- a/boost/asio/detail/impl/strand_executor_service.hpp +++ b/boost/asio/detail/impl/strand_executor_service.hpp @@ -2,7 +2,7 @@ // detail/impl/strand_executor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -15,7 +15,6 @@ # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) -#include #include #include #include @@ -104,13 +103,7 @@ public: ~on_invoker_exit() { - this_->impl_->mutex_->lock(); - this_->impl_->ready_queue_.push(this_->impl_->waiting_queue_); - bool more_handlers = this_->impl_->locked_ = - !this_->impl_->ready_queue_.empty(); - this_->impl_->mutex_->unlock(); - - if (more_handlers) + if (push_waiting_to_ready(this_->impl_)) { recycling_allocator allocator; execution::execute( @@ -125,21 +118,11 @@ public: void operator()() { - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl_.get()); - // Ensure the next handler, if any, is scheduled on block exit. on_invoker_exit on_exit = { this }; (void)on_exit; - // Run all ready handlers. No lock is required since the ready queue is - // accessed only within the strand. - boost::system::error_code ec; - while (scheduler_operation* o = impl_->ready_queue_.front()) - { - impl_->ready_queue_.pop(); - o->complete(impl_.get(), ec, 0); - } + run_ready_handlers(impl_); } private: @@ -189,13 +172,7 @@ public: ~on_invoker_exit() { - this_->impl_->mutex_->lock(); - this_->impl_->ready_queue_.push(this_->impl_->waiting_queue_); - bool more_handlers = this_->impl_->locked_ = - !this_->impl_->ready_queue_.empty(); - this_->impl_->mutex_->unlock(); - - if (more_handlers) + if (push_waiting_to_ready(this_->impl_)) { Executor ex(this_->work_.get_executor()); recycling_allocator allocator; @@ -206,21 +183,11 @@ public: void operator()() { - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl_.get()); - // Ensure the next handler, if any, is scheduled on block exit. on_invoker_exit on_exit = { this }; (void)on_exit; - // Run all ready handlers. No lock is required since the ready queue is - // accessed only within the strand. - boost::system::error_code ec; - while (scheduler_operation* o = impl_->ready_queue_.front()) - { - impl_->ready_queue_.pop(); - o->complete(impl_.get(), ec, 0); - } + run_ready_handlers(impl_); } private: @@ -263,7 +230,7 @@ void strand_executor_service::do_execute(const implementation_type& impl, // If the executor is not never-blocking, and we are already in the strand, // then the function can run immediately. if (boost::asio::query(ex, execution::blocking) != execution::blocking.never - && call_stack::contains(impl.get())) + && running_in_this_thread(impl)) { // Make a local, non-const copy of the function. function_type tmp(BOOST_ASIO_MOVE_CAST(Function)(function)); @@ -297,7 +264,7 @@ void strand_executor_service::dispatch(const implementation_type& impl, typedef typename decay::type function_type; // If we are already in the strand then the function can run immediately. - if (call_stack::contains(impl.get())) + if (running_in_this_thread(impl)) { // Make a local, non-const copy of the function. function_type tmp(BOOST_ASIO_MOVE_CAST(Function)(function)); diff --git a/boost/asio/detail/impl/strand_executor_service.ipp b/boost/asio/detail/impl/strand_executor_service.ipp old mode 100755 new mode 100644 index ae27352569..bc5b16b077 --- a/boost/asio/detail/impl/strand_executor_service.ipp +++ b/boost/asio/detail/impl/strand_executor_service.ipp @@ -2,7 +2,7 @@ // detail/impl/strand_executor_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -127,6 +127,30 @@ bool strand_executor_service::running_in_this_thread( return !!call_stack::contains(impl.get()); } +bool strand_executor_service::push_waiting_to_ready(implementation_type& impl) +{ + impl->mutex_->lock(); + impl->ready_queue_.push(impl->waiting_queue_); + bool more_handlers = impl->locked_ = !impl->ready_queue_.empty(); + impl->mutex_->unlock(); + return more_handlers; +} + +void strand_executor_service::run_ready_handlers(implementation_type& impl) +{ + // Indicate that this strand is executing on the current thread. + call_stack::context ctx(impl.get()); + + // Run all ready handlers. No lock is required since the ready queue is + // accessed only within the strand. + boost::system::error_code ec; + while (scheduler_operation* o = impl->ready_queue_.front()) + { + impl->ready_queue_.pop(); + o->complete(impl.get(), ec, 0); + } +} + } // namespace detail } // namespace asio } // namespace boost diff --git a/boost/asio/detail/impl/strand_service.hpp b/boost/asio/detail/impl/strand_service.hpp old mode 100755 new mode 100644 index fe95d630ae..6fcc3bd070 --- a/boost/asio/detail/impl/strand_service.hpp +++ b/boost/asio/detail/impl/strand_service.hpp @@ -2,7 +2,7 @@ // detail/impl/strand_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -15,7 +15,6 @@ # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) -#include #include #include #include @@ -34,29 +33,12 @@ inline strand_service::strand_impl::strand_impl() { } -struct strand_service::on_dispatch_exit -{ - io_context_impl* io_context_impl_; - strand_impl* impl_; - - ~on_dispatch_exit() - { - impl_->mutex_.lock(); - impl_->ready_queue_.push(impl_->waiting_queue_); - bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty(); - impl_->mutex_.unlock(); - - if (more_handlers) - io_context_impl_->post_immediate_completion(impl_, false); - } -}; - template void strand_service::dispatch(strand_service::implementation_type& impl, Handler& handler) { // If we are already in the strand then the handler can run immediately. - if (call_stack::contains(impl)) + if (running_in_this_thread(impl)) { fenced_block b(fenced_block::full); boost_asio_handler_invoke_helpers::invoke(handler, handler); @@ -72,21 +54,9 @@ void strand_service::dispatch(strand_service::implementation_type& impl, BOOST_ASIO_HANDLER_CREATION((this->context(), *p.p, "strand", impl, 0, "dispatch")); - bool dispatch_immediately = do_dispatch(impl, p.p); operation* o = p.p; p.v = p.p = 0; - - if (dispatch_immediately) - { - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl); - - // Ensure the next handler, if any, is scheduled on block exit. - on_dispatch_exit on_exit = { &io_context_impl_, impl }; - (void)on_exit; - - op::do_complete(&io_context_impl_, o, boost::system::error_code(), 0); - } + do_dispatch(impl, o); } // Request the io_context to invoke the given handler and return immediately. diff --git a/boost/asio/detail/impl/strand_service.ipp b/boost/asio/detail/impl/strand_service.ipp old mode 100755 new mode 100644 index 885bb0aa94..8ab70c2ddf --- a/boost/asio/detail/impl/strand_service.ipp +++ b/boost/asio/detail/impl/strand_service.ipp @@ -2,7 +2,7 @@ // detail/impl/strand_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -92,7 +92,24 @@ bool strand_service::running_in_this_thread( return call_stack::contains(impl) != 0; } -bool strand_service::do_dispatch(implementation_type& impl, operation* op) +struct strand_service::on_dispatch_exit +{ + io_context_impl* io_context_impl_; + strand_impl* impl_; + + ~on_dispatch_exit() + { + impl_->mutex_.lock(); + impl_->ready_queue_.push(impl_->waiting_queue_); + bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty(); + impl_->mutex_.unlock(); + + if (more_handlers) + io_context_impl_->post_immediate_completion(impl_, false); + } +}; + +void strand_service::do_dispatch(implementation_type& impl, operation* op) { // If we are running inside the io_context, and no other handler already // holds the strand lock, then the handler can run immediately. @@ -103,7 +120,16 @@ bool strand_service::do_dispatch(implementation_type& impl, operation* op) // Immediate invocation is allowed. impl->locked_ = true; impl->mutex_.unlock(); - return true; + + // Indicate that this strand is executing on the current thread. + call_stack::context ctx(impl); + + // Ensure the next handler, if any, is scheduled on block exit. + on_dispatch_exit on_exit = { &io_context_impl_, impl }; + (void)on_exit; + + op->complete(&io_context_impl_, boost::system::error_code(), 0); + return; } if (impl->locked_) @@ -121,8 +147,6 @@ bool strand_service::do_dispatch(implementation_type& impl, operation* op) impl->ready_queue_.push(op); io_context_impl_.post_immediate_completion(impl, false); } - - return false; } void strand_service::do_post(implementation_type& impl, diff --git a/boost/asio/detail/impl/thread_context.ipp b/boost/asio/detail/impl/thread_context.ipp new file mode 100644 index 0000000000..88c49da113 --- /dev/null +++ b/boost/asio/detail/impl/thread_context.ipp @@ -0,0 +1,37 @@ +// +// detail/impl/thread_context.ipp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2021 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_DETAIL_IMPL_THREAD_CONTEXT_IPP +#define BOOST_ASIO_DETAIL_IMPL_THREAD_CONTEXT_IPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +thread_info_base* thread_context::top_of_thread_call_stack() +{ + return thread_call_stack::top(); +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_DETAIL_IMPL_THREAD_CONTEXT_IPP diff --git a/boost/asio/detail/impl/throw_error.ipp b/boost/asio/detail/impl/throw_error.ipp old mode 100755 new mode 100644 index 06d30ffd17..7bdfd8b56b --- a/boost/asio/detail/impl/throw_error.ipp +++ b/boost/asio/detail/impl/throw_error.ipp @@ -2,7 +2,7 @@ // detail/impl/throw_error.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/timer_queue_ptime.ipp b/boost/asio/detail/impl/timer_queue_ptime.ipp old mode 100755 new mode 100644 index d2ae2f4306..31297ffcc0 --- a/boost/asio/detail/impl/timer_queue_ptime.ipp +++ b/boost/asio/detail/impl/timer_queue_ptime.ipp @@ -2,7 +2,7 @@ // detail/impl/timer_queue_ptime.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/timer_queue_set.ipp b/boost/asio/detail/impl/timer_queue_set.ipp old mode 100755 new mode 100644 index adc300f448..afd3506b7e --- a/boost/asio/detail/impl/timer_queue_set.ipp +++ b/boost/asio/detail/impl/timer_queue_set.ipp @@ -2,7 +2,7 @@ // detail/impl/timer_queue_set.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/win_event.ipp b/boost/asio/detail/impl/win_event.ipp old mode 100755 new mode 100644 index 2fb7ca4d27..67a6ffb3d5 --- a/boost/asio/detail/impl/win_event.ipp +++ b/boost/asio/detail/impl/win_event.ipp @@ -2,7 +2,7 @@ // detail/win_event.ipp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/win_iocp_handle_service.ipp b/boost/asio/detail/impl/win_iocp_handle_service.ipp old mode 100755 new mode 100644 index 8dba0afe61..4d65ed9ad3 --- a/boost/asio/detail/impl/win_iocp_handle_service.ipp +++ b/boost/asio/detail/impl/win_iocp_handle_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_handle_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/impl/win_iocp_io_context.hpp b/boost/asio/detail/impl/win_iocp_io_context.hpp old mode 100755 new mode 100644 index ef82848ac5..44e9ac4cd7 --- a/boost/asio/detail/impl/win_iocp_io_context.hpp +++ b/boost/asio/detail/impl/win_iocp_io_context.hpp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_io_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -77,6 +77,7 @@ std::size_t win_iocp_io_context::cancel_timer(timer_queue& queue, mutex::scoped_lock lock(dispatch_mutex_); op_queue ops; std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); + lock.unlock(); post_deferred_completions(ops); return n; } diff --git a/boost/asio/detail/impl/win_iocp_io_context.ipp b/boost/asio/detail/impl/win_iocp_io_context.ipp old mode 100755 new mode 100644 index bc9c1d2b28..4abce6c4cb --- a/boost/asio/detail/impl/win_iocp_io_context.ipp +++ b/boost/asio/detail/impl/win_iocp_io_context.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_io_context.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -288,6 +288,11 @@ void win_iocp_io_context::stop() } } +bool win_iocp_io_context::can_dispatch() +{ + return thread_call_stack::contains(this) != 0; +} + void win_iocp_io_context::capture_current_exception() { if (thread_info_base* this_thread = thread_call_stack::contains(this)) diff --git a/boost/asio/detail/impl/win_iocp_serial_port_service.ipp b/boost/asio/detail/impl/win_iocp_serial_port_service.ipp old mode 100755 new mode 100644 index aa1ac8a1bb..269abea8ee --- a/boost/asio/detail/impl/win_iocp_serial_port_service.ipp +++ b/boost/asio/detail/impl/win_iocp_serial_port_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_serial_port_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/impl/win_iocp_socket_service_base.ipp b/boost/asio/detail/impl/win_iocp_socket_service_base.ipp old mode 100755 new mode 100644 index 4e76a522c1..c4c0dff1dd --- a/boost/asio/detail/impl/win_iocp_socket_service_base.ipp +++ b/boost/asio/detail/impl/win_iocp_socket_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_socket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/win_mutex.ipp b/boost/asio/detail/impl/win_mutex.ipp old mode 100755 new mode 100644 index 0982286db7..72ddef8a84 --- a/boost/asio/detail/impl/win_mutex.ipp +++ b/boost/asio/detail/impl/win_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/win_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/win_object_handle_service.ipp b/boost/asio/detail/impl/win_object_handle_service.ipp old mode 100755 new mode 100644 index 68b9f2f7ca..b4e066c8ee --- a/boost/asio/detail/impl/win_object_handle_service.ipp +++ b/boost/asio/detail/impl/win_object_handle_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_object_handle_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/impl/win_static_mutex.ipp b/boost/asio/detail/impl/win_static_mutex.ipp old mode 100755 new mode 100644 index 8d161f4d5c..88a54b99be --- a/boost/asio/detail/impl/win_static_mutex.ipp +++ b/boost/asio/detail/impl/win_static_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/win_static_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/win_thread.ipp b/boost/asio/detail/impl/win_thread.ipp old mode 100755 new mode 100644 index 400aa93a8d..b901e49afc --- a/boost/asio/detail/impl/win_thread.ipp +++ b/boost/asio/detail/impl/win_thread.ipp @@ -2,7 +2,7 @@ // detail/impl/win_thread.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/win_tss_ptr.ipp b/boost/asio/detail/impl/win_tss_ptr.ipp old mode 100755 new mode 100644 index dce2a22a8b..c7a82a15d5 --- a/boost/asio/detail/impl/win_tss_ptr.ipp +++ b/boost/asio/detail/impl/win_tss_ptr.ipp @@ -2,7 +2,7 @@ // detail/impl/win_tss_ptr.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/winrt_ssocket_service_base.ipp b/boost/asio/detail/impl/winrt_ssocket_service_base.ipp old mode 100755 new mode 100644 index 0aa427db29..cecb16ceb8 --- a/boost/asio/detail/impl/winrt_ssocket_service_base.ipp +++ b/boost/asio/detail/impl/winrt_ssocket_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/winrt_ssocket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/winrt_timer_scheduler.hpp b/boost/asio/detail/impl/winrt_timer_scheduler.hpp old mode 100755 new mode 100644 index 908d6eb793..8cc5d3c6ad --- a/boost/asio/detail/impl/winrt_timer_scheduler.hpp +++ b/boost/asio/detail/impl/winrt_timer_scheduler.hpp @@ -2,7 +2,7 @@ // detail/impl/winrt_timer_scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/winrt_timer_scheduler.ipp b/boost/asio/detail/impl/winrt_timer_scheduler.ipp old mode 100755 new mode 100644 index 03101cdbde..a8ee666d15 --- a/boost/asio/detail/impl/winrt_timer_scheduler.ipp +++ b/boost/asio/detail/impl/winrt_timer_scheduler.ipp @@ -2,7 +2,7 @@ // detail/impl/winrt_timer_scheduler.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/impl/winsock_init.ipp b/boost/asio/detail/impl/winsock_init.ipp old mode 100755 new mode 100644 index 4e3c5b7782..a7e3ac9e81 --- a/boost/asio/detail/impl/winsock_init.ipp +++ b/boost/asio/detail/impl/winsock_init.ipp @@ -2,7 +2,7 @@ // detail/impl/winsock_init.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/io_control.hpp b/boost/asio/detail/io_control.hpp old mode 100755 new mode 100644 index 6f39b02f4f..cbf6d45d19 --- a/boost/asio/detail/io_control.hpp +++ b/boost/asio/detail/io_control.hpp @@ -2,7 +2,7 @@ // detail/io_control.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/io_object_impl.hpp b/boost/asio/detail/io_object_impl.hpp old mode 100755 new mode 100644 index 54a622d6a9..cb4cc89673 --- a/boost/asio/detail/io_object_impl.hpp +++ b/boost/asio/detail/io_object_impl.hpp @@ -2,7 +2,7 @@ // io_object_impl.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -44,7 +44,7 @@ public: typedef Executor executor_type; // Construct an I/O object using an executor. - explicit io_object_impl(const executor_type& ex) + explicit io_object_impl(int, const executor_type& ex) : service_(&boost::asio::use_service( io_object_impl::get_context(ex))), executor_(ex) @@ -54,9 +54,7 @@ public: // Construct an I/O object using an execution context. template - explicit io_object_impl(ExecutionContext& context, - typename enable_if::value>::type* = 0) + explicit io_object_impl(int, int, ExecutionContext& context) : service_(&boost::asio::use_service(context)), executor_(context.get_executor()) { @@ -99,8 +97,7 @@ public: service_->move_assign(implementation_, *other.service_, other.implementation_); executor_.~executor_type(); - new (&executor_) executor_type( - std::move(other.executor_)); + new (&executor_) executor_type(other.executor_); service_ = other.service_; } return *this; diff --git a/boost/asio/detail/is_buffer_sequence.hpp b/boost/asio/detail/is_buffer_sequence.hpp old mode 100755 new mode 100644 index efe067baed..53d33ad445 --- a/boost/asio/detail/is_buffer_sequence.hpp +++ b/boost/asio/detail/is_buffer_sequence.hpp @@ -2,7 +2,7 @@ // detail/is_buffer_sequence.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/is_executor.hpp b/boost/asio/detail/is_executor.hpp old mode 100755 new mode 100644 index e51cd14487..abd80dd27f --- a/boost/asio/detail/is_executor.hpp +++ b/boost/asio/detail/is_executor.hpp @@ -2,7 +2,7 @@ // detail/is_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/keyword_tss_ptr.hpp b/boost/asio/detail/keyword_tss_ptr.hpp old mode 100755 new mode 100644 index 3e2c5af091..68f296c9b1 --- a/boost/asio/detail/keyword_tss_ptr.hpp +++ b/boost/asio/detail/keyword_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/keyword_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/kqueue_reactor.hpp b/boost/asio/detail/kqueue_reactor.hpp old mode 100755 new mode 100644 index 309b92646c..0823a5e576 --- a/boost/asio/detail/kqueue_reactor.hpp +++ b/boost/asio/detail/kqueue_reactor.hpp @@ -2,7 +2,7 @@ // detail/kqueue_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/limits.hpp b/boost/asio/detail/limits.hpp old mode 100755 new mode 100644 diff --git a/boost/asio/detail/local_free_on_block_exit.hpp b/boost/asio/detail/local_free_on_block_exit.hpp old mode 100755 new mode 100644 index aec003c3af..e9e86fe45c --- a/boost/asio/detail/local_free_on_block_exit.hpp +++ b/boost/asio/detail/local_free_on_block_exit.hpp @@ -2,7 +2,7 @@ // detail/local_free_on_block_exit.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/macos_fenced_block.hpp b/boost/asio/detail/macos_fenced_block.hpp old mode 100755 new mode 100644 index b807803117..7dcd267adb --- a/boost/asio/detail/macos_fenced_block.hpp +++ b/boost/asio/detail/macos_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/macos_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/memory.hpp b/boost/asio/detail/memory.hpp old mode 100755 new mode 100644 index 438abceb67..2d2e3a6f8d --- a/boost/asio/detail/memory.hpp +++ b/boost/asio/detail/memory.hpp @@ -2,7 +2,7 @@ // detail/memory.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/mutex.hpp b/boost/asio/detail/mutex.hpp old mode 100755 new mode 100644 index 0d59719636..c5159dbe8b --- a/boost/asio/detail/mutex.hpp +++ b/boost/asio/detail/mutex.hpp @@ -2,7 +2,7 @@ // detail/mutex.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/non_const_lvalue.hpp b/boost/asio/detail/non_const_lvalue.hpp old mode 100755 new mode 100644 index 067624b1c5..5dad50ffb4 --- a/boost/asio/detail/non_const_lvalue.hpp +++ b/boost/asio/detail/non_const_lvalue.hpp @@ -2,7 +2,7 @@ // detail/non_const_lvalue.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/noncopyable.hpp b/boost/asio/detail/noncopyable.hpp old mode 100755 new mode 100644 index ed1e542aca..df95500956 --- a/boost/asio/detail/noncopyable.hpp +++ b/boost/asio/detail/noncopyable.hpp @@ -2,7 +2,7 @@ // detail/noncopyable.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_event.hpp b/boost/asio/detail/null_event.hpp old mode 100755 new mode 100644 index fa52981aa9..131fb3c9af --- a/boost/asio/detail/null_event.hpp +++ b/boost/asio/detail/null_event.hpp @@ -2,7 +2,7 @@ // detail/null_event.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_fenced_block.hpp b/boost/asio/detail/null_fenced_block.hpp old mode 100755 new mode 100644 index 162e0f02b5..6406bdcd45 --- a/boost/asio/detail/null_fenced_block.hpp +++ b/boost/asio/detail/null_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/null_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_global.hpp b/boost/asio/detail/null_global.hpp old mode 100755 new mode 100644 index c1de48534e..6a38b52865 --- a/boost/asio/detail/null_global.hpp +++ b/boost/asio/detail/null_global.hpp @@ -2,7 +2,7 @@ // detail/null_global.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_mutex.hpp b/boost/asio/detail/null_mutex.hpp old mode 100755 new mode 100644 index 0030e0cd71..81a5d27fa8 --- a/boost/asio/detail/null_mutex.hpp +++ b/boost/asio/detail/null_mutex.hpp @@ -2,7 +2,7 @@ // detail/null_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_reactor.hpp b/boost/asio/detail/null_reactor.hpp old mode 100755 new mode 100644 index 7a09610ade..0511731b56 --- a/boost/asio/detail/null_reactor.hpp +++ b/boost/asio/detail/null_reactor.hpp @@ -2,7 +2,7 @@ // detail/null_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_signal_blocker.hpp b/boost/asio/detail/null_signal_blocker.hpp old mode 100755 new mode 100644 index db545a0318..561ad6cf98 --- a/boost/asio/detail/null_signal_blocker.hpp +++ b/boost/asio/detail/null_signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/null_signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_socket_service.hpp b/boost/asio/detail/null_socket_service.hpp old mode 100755 new mode 100644 index 6b13e080a5..545a99cc23 --- a/boost/asio/detail/null_socket_service.hpp +++ b/boost/asio/detail/null_socket_service.hpp @@ -2,7 +2,7 @@ // detail/null_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_static_mutex.hpp b/boost/asio/detail/null_static_mutex.hpp old mode 100755 new mode 100644 index 20841b8175..9ebac46aea --- a/boost/asio/detail/null_static_mutex.hpp +++ b/boost/asio/detail/null_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/null_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_thread.hpp b/boost/asio/detail/null_thread.hpp old mode 100755 new mode 100644 index 4fe5841521..d0695516b3 --- a/boost/asio/detail/null_thread.hpp +++ b/boost/asio/detail/null_thread.hpp @@ -2,7 +2,7 @@ // detail/null_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/null_tss_ptr.hpp b/boost/asio/detail/null_tss_ptr.hpp old mode 100755 new mode 100644 index 04f5883d7d..f2980c882d --- a/boost/asio/detail/null_tss_ptr.hpp +++ b/boost/asio/detail/null_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/null_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/object_pool.hpp b/boost/asio/detail/object_pool.hpp old mode 100755 new mode 100644 index 26a2bb8bb3..1ee2b7379b --- a/boost/asio/detail/object_pool.hpp +++ b/boost/asio/detail/object_pool.hpp @@ -2,7 +2,7 @@ // detail/object_pool.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/old_win_sdk_compat.hpp b/boost/asio/detail/old_win_sdk_compat.hpp old mode 100755 new mode 100644 index 0329fb827f..7c9019cbf1 --- a/boost/asio/detail/old_win_sdk_compat.hpp +++ b/boost/asio/detail/old_win_sdk_compat.hpp @@ -2,7 +2,7 @@ // detail/old_win_sdk_compat.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/op_queue.hpp b/boost/asio/detail/op_queue.hpp old mode 100755 new mode 100644 index 9465853d1f..1b1557d571 --- a/boost/asio/detail/op_queue.hpp +++ b/boost/asio/detail/op_queue.hpp @@ -2,7 +2,7 @@ // detail/op_queue.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/operation.hpp b/boost/asio/detail/operation.hpp old mode 100755 new mode 100644 index de7a018681..40eff51143 --- a/boost/asio/detail/operation.hpp +++ b/boost/asio/detail/operation.hpp @@ -2,7 +2,7 @@ // detail/operation.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/pipe_select_interrupter.hpp b/boost/asio/detail/pipe_select_interrupter.hpp old mode 100755 new mode 100644 index c45235ad59..d1420b7271 --- a/boost/asio/detail/pipe_select_interrupter.hpp +++ b/boost/asio/detail/pipe_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/pipe_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/pop_options.hpp b/boost/asio/detail/pop_options.hpp old mode 100755 new mode 100644 index 982c42e4fe..5192967b76 --- a/boost/asio/detail/pop_options.hpp +++ b/boost/asio/detail/pop_options.hpp @@ -2,7 +2,7 @@ // detail/pop_options.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_event.hpp b/boost/asio/detail/posix_event.hpp old mode 100755 new mode 100644 index 10c920dbf3..c153643f92 --- a/boost/asio/detail/posix_event.hpp +++ b/boost/asio/detail/posix_event.hpp @@ -2,7 +2,7 @@ // detail/posix_event.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_fd_set_adapter.hpp b/boost/asio/detail/posix_fd_set_adapter.hpp old mode 100755 new mode 100644 index 3f66d98c16..89302ab689 --- a/boost/asio/detail/posix_fd_set_adapter.hpp +++ b/boost/asio/detail/posix_fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/posix_fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_global.hpp b/boost/asio/detail/posix_global.hpp old mode 100755 new mode 100644 index 284300127e..a9ac379d7b --- a/boost/asio/detail/posix_global.hpp +++ b/boost/asio/detail/posix_global.hpp @@ -2,7 +2,7 @@ // detail/posix_global.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_mutex.hpp b/boost/asio/detail/posix_mutex.hpp old mode 100755 new mode 100644 index 4c1cf15819..be66370063 --- a/boost/asio/detail/posix_mutex.hpp +++ b/boost/asio/detail/posix_mutex.hpp @@ -2,7 +2,7 @@ // detail/posix_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_signal_blocker.hpp b/boost/asio/detail/posix_signal_blocker.hpp old mode 100755 new mode 100644 index 0780bc8d8d..abd126e01e --- a/boost/asio/detail/posix_signal_blocker.hpp +++ b/boost/asio/detail/posix_signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/posix_signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_static_mutex.hpp b/boost/asio/detail/posix_static_mutex.hpp old mode 100755 new mode 100644 index 0a0d47b20b..d2d1187445 --- a/boost/asio/detail/posix_static_mutex.hpp +++ b/boost/asio/detail/posix_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/posix_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_thread.hpp b/boost/asio/detail/posix_thread.hpp old mode 100755 new mode 100644 index ea5212cda7..8b52c8a38a --- a/boost/asio/detail/posix_thread.hpp +++ b/boost/asio/detail/posix_thread.hpp @@ -2,7 +2,7 @@ // detail/posix_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/posix_tss_ptr.hpp b/boost/asio/detail/posix_tss_ptr.hpp old mode 100755 new mode 100644 index 813ff2495b..f014bfba76 --- a/boost/asio/detail/posix_tss_ptr.hpp +++ b/boost/asio/detail/posix_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/posix_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/push_options.hpp b/boost/asio/detail/push_options.hpp old mode 100755 new mode 100644 index 201f18a042..d658413223 --- a/boost/asio/detail/push_options.hpp +++ b/boost/asio/detail/push_options.hpp @@ -2,7 +2,7 @@ // detail/push_options.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -53,6 +53,9 @@ # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +# if (__clang_major__ >= 6) +# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" +# endif // (__clang_major__ >= 6) #elif defined(__GNUC__) @@ -82,6 +85,9 @@ # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4) +# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" +# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4) # if (__GNUC__ >= 7) # pragma GCC diagnostic ignored "-Wimplicit-fallthrough" # endif // (__GNUC__ >= 7) diff --git a/boost/asio/detail/reactive_descriptor_service.hpp b/boost/asio/detail/reactive_descriptor_service.hpp old mode 100755 new mode 100644 index 4ed42a26e4..b6cf08a783 --- a/boost/asio/detail/reactive_descriptor_service.hpp +++ b/boost/asio/detail/reactive_descriptor_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_descriptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_null_buffers_op.hpp b/boost/asio/detail/reactive_null_buffers_op.hpp old mode 100755 new mode 100644 index 87de33bb47..d591acbfa3 --- a/boost/asio/detail/reactive_null_buffers_op.hpp +++ b/boost/asio/detail/reactive_null_buffers_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_null_buffers_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_serial_port_service.hpp b/boost/asio/detail/reactive_serial_port_service.hpp old mode 100755 new mode 100644 index 776762fc39..cf9a77baf7 --- a/boost/asio/detail/reactive_serial_port_service.hpp +++ b/boost/asio/detail/reactive_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/reactive_socket_accept_op.hpp b/boost/asio/detail/reactive_socket_accept_op.hpp old mode 100755 new mode 100644 index 878ffc7e81..e60111c288 --- a/boost/asio/detail/reactive_socket_accept_op.hpp +++ b/boost/asio/detail/reactive_socket_accept_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_accept_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_connect_op.hpp b/boost/asio/detail/reactive_socket_connect_op.hpp old mode 100755 new mode 100644 index 81091b72c6..36a48a1d90 --- a/boost/asio/detail/reactive_socket_connect_op.hpp +++ b/boost/asio/detail/reactive_socket_connect_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_connect_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_recv_op.hpp b/boost/asio/detail/reactive_socket_recv_op.hpp old mode 100755 new mode 100644 index f58de9ad04..afee8ab5ae --- a/boost/asio/detail/reactive_socket_recv_op.hpp +++ b/boost/asio/detail/reactive_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_recvfrom_op.hpp b/boost/asio/detail/reactive_socket_recvfrom_op.hpp old mode 100755 new mode 100644 index b91dd02a65..41d57e7206 --- a/boost/asio/detail/reactive_socket_recvfrom_op.hpp +++ b/boost/asio/detail/reactive_socket_recvfrom_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recvfrom_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_recvmsg_op.hpp b/boost/asio/detail/reactive_socket_recvmsg_op.hpp old mode 100755 new mode 100644 index 15d5c7eacd..798feda7b1 --- a/boost/asio/detail/reactive_socket_recvmsg_op.hpp +++ b/boost/asio/detail/reactive_socket_recvmsg_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recvmsg_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_send_op.hpp b/boost/asio/detail/reactive_socket_send_op.hpp old mode 100755 new mode 100644 index 9840e4c431..03ff0e88e5 --- a/boost/asio/detail/reactive_socket_send_op.hpp +++ b/boost/asio/detail/reactive_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_sendto_op.hpp b/boost/asio/detail/reactive_socket_sendto_op.hpp old mode 100755 new mode 100644 index 834fe555d6..f6e8b33b86 --- a/boost/asio/detail/reactive_socket_sendto_op.hpp +++ b/boost/asio/detail/reactive_socket_sendto_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_sendto_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_service.hpp b/boost/asio/detail/reactive_socket_service.hpp old mode 100755 new mode 100644 index 74ca8ae00b..6f030f00a9 --- a/boost/asio/detail/reactive_socket_service.hpp +++ b/boost/asio/detail/reactive_socket_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_socket_service_base.hpp b/boost/asio/detail/reactive_socket_service_base.hpp old mode 100755 new mode 100644 index 29b379f013..fbe5dc390e --- a/boost/asio/detail/reactive_socket_service_base.hpp +++ b/boost/asio/detail/reactive_socket_service_base.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactive_wait_op.hpp b/boost/asio/detail/reactive_wait_op.hpp old mode 100755 new mode 100644 index 424c28a1b9..b9fdace49d --- a/boost/asio/detail/reactive_wait_op.hpp +++ b/boost/asio/detail/reactive_wait_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_wait_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactor.hpp b/boost/asio/detail/reactor.hpp old mode 100755 new mode 100644 index be08911ffa..b6bc3c245c --- a/boost/asio/detail/reactor.hpp +++ b/boost/asio/detail/reactor.hpp @@ -2,7 +2,7 @@ // detail/reactor.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactor_fwd.hpp b/boost/asio/detail/reactor_fwd.hpp old mode 100755 new mode 100644 index ae5f1609e8..41f144986b --- a/boost/asio/detail/reactor_fwd.hpp +++ b/boost/asio/detail/reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactor_op.hpp b/boost/asio/detail/reactor_op.hpp old mode 100755 new mode 100644 index 5985e9351b..eed3236eb9 --- a/boost/asio/detail/reactor_op.hpp +++ b/boost/asio/detail/reactor_op.hpp @@ -2,7 +2,7 @@ // detail/reactor_op.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/reactor_op_queue.hpp b/boost/asio/detail/reactor_op_queue.hpp old mode 100755 new mode 100644 index c85f98cf4f..51e2922927 --- a/boost/asio/detail/reactor_op_queue.hpp +++ b/boost/asio/detail/reactor_op_queue.hpp @@ -2,7 +2,7 @@ // detail/reactor_op_queue.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/recycling_allocator.hpp b/boost/asio/detail/recycling_allocator.hpp old mode 100755 new mode 100644 index 3fa9278577..b185d88c01 --- a/boost/asio/detail/recycling_allocator.hpp +++ b/boost/asio/detail/recycling_allocator.hpp @@ -2,7 +2,7 @@ // detail/recycling_allocator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -49,17 +49,15 @@ public: T* allocate(std::size_t n) { - typedef thread_context::thread_call_stack call_stack; void* p = thread_info_base::allocate(Purpose(), - call_stack::top(), sizeof(T) * n); + thread_context::top_of_thread_call_stack(), sizeof(T) * n); return static_cast(p); } void deallocate(T* p, std::size_t n) { - typedef thread_context::thread_call_stack call_stack; thread_info_base::deallocate(Purpose(), - call_stack::top(), p, sizeof(T) * n); + thread_context::top_of_thread_call_stack(), p, sizeof(T) * n); } }; diff --git a/boost/asio/detail/regex_fwd.hpp b/boost/asio/detail/regex_fwd.hpp old mode 100755 new mode 100644 index 64ff2ad7cc..fc0160c4bb --- a/boost/asio/detail/regex_fwd.hpp +++ b/boost/asio/detail/regex_fwd.hpp @@ -2,7 +2,7 @@ // detail/regex_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -18,7 +18,16 @@ #if defined(BOOST_ASIO_HAS_BOOST_REGEX) #include -#include +#include +#if BOOST_VERSION >= 107600 +# if defined(BOOST_REGEX_CXX03) +# include +# else // defined(BOOST_REGEX_CXX03) +# include +# endif // defined(BOOST_REGEX_CXX03) +#else // BOOST_VERSION >= 107600 +# include +#endif // BOOST_VERSION >= 107600 namespace boost { diff --git a/boost/asio/detail/resolve_endpoint_op.hpp b/boost/asio/detail/resolve_endpoint_op.hpp old mode 100755 new mode 100644 index 6d6e37cc20..1947642a79 --- a/boost/asio/detail/resolve_endpoint_op.hpp +++ b/boost/asio/detail/resolve_endpoint_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_endpoint_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/resolve_op.hpp b/boost/asio/detail/resolve_op.hpp old mode 100755 new mode 100644 index 682c8f0080..123a580b3a --- a/boost/asio/detail/resolve_op.hpp +++ b/boost/asio/detail/resolve_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_op.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/resolve_query_op.hpp b/boost/asio/detail/resolve_query_op.hpp old mode 100755 new mode 100644 index 2b2ca2d973..4191c39166 --- a/boost/asio/detail/resolve_query_op.hpp +++ b/boost/asio/detail/resolve_query_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_query_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -56,11 +56,11 @@ public: #endif resolve_query_op(socket_ops::weak_cancel_token_type cancel_token, - const query_type& query, scheduler_impl& sched, + const query_type& qry, scheduler_impl& sched, Handler& handler, const IoExecutor& io_ex) : resolve_op(&resolve_query_op::do_complete), cancel_token_(cancel_token), - query_(query), + query_(qry), scheduler_(sched), handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)), work_(handler_, io_ex), diff --git a/boost/asio/detail/resolver_service.hpp b/boost/asio/detail/resolver_service.hpp old mode 100755 new mode 100644 index dfde7011d0..46b01ecbae --- a/boost/asio/detail/resolver_service.hpp +++ b/boost/asio/detail/resolver_service.hpp @@ -2,7 +2,7 @@ // detail/resolver_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -72,29 +72,29 @@ public: } // Resolve a query to a list of entries. - results_type resolve(implementation_type&, const query_type& query, + results_type resolve(implementation_type&, const query_type& qry, boost::system::error_code& ec) { boost::asio::detail::addrinfo_type* address_info = 0; - socket_ops::getaddrinfo(query.host_name().c_str(), - query.service_name().c_str(), query.hints(), &address_info, ec); + socket_ops::getaddrinfo(qry.host_name().c_str(), + qry.service_name().c_str(), qry.hints(), &address_info, ec); auto_addrinfo auto_address_info(address_info); return ec ? results_type() : results_type::create( - address_info, query.host_name(), query.service_name()); + address_info, qry.host_name(), qry.service_name()); } // Asynchronously resolve a query to a list of entries. template - void async_resolve(implementation_type& impl, const query_type& query, + void async_resolve(implementation_type& impl, const query_type& qry, Handler& handler, const IoExecutor& io_ex) { // Allocate and construct an operation to wrap the handler. typedef resolve_query_op op; typename op::ptr p = { boost::asio::detail::addressof(handler), op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl, query, scheduler_, handler, io_ex); + p.p = new (p.v) op(impl, qry, scheduler_, handler, io_ex); BOOST_ASIO_HANDLER_CREATION((scheduler_.context(), *p.p, "resolver", &impl, 0, "async_resolve")); diff --git a/boost/asio/detail/resolver_service_base.hpp b/boost/asio/detail/resolver_service_base.hpp old mode 100755 new mode 100644 index 5c3fe5b49c..0d43bef91f --- a/boost/asio/detail/resolver_service_base.hpp +++ b/boost/asio/detail/resolver_service_base.hpp @@ -2,7 +2,7 @@ // detail/resolver_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -73,6 +73,21 @@ public: resolver_service_base& other_service, implementation_type& other_impl); + // Move-construct a new timer implementation. + void converting_move_construct(implementation_type& impl, + resolver_service_base&, implementation_type& other_impl) + { + move_construct(impl, other_impl); + } + + // Move-assign from another timer implementation. + void converting_move_assign(implementation_type& impl, + resolver_service_base& other_service, + implementation_type& other_impl) + { + move_assign(impl, other_service, other_impl); + } + // Cancel pending asynchronous operations. BOOST_ASIO_DECL void cancel(implementation_type& impl); diff --git a/boost/asio/detail/scheduler.hpp b/boost/asio/detail/scheduler.hpp old mode 100755 new mode 100644 index a71279bc75..dfff09e93e --- a/boost/asio/detail/scheduler.hpp +++ b/boost/asio/detail/scheduler.hpp @@ -2,7 +2,7 @@ // detail/scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -100,10 +100,7 @@ public: } // Return whether a handler can be dispatched immediately. - bool can_dispatch() - { - return thread_call_stack::contains(this) != 0; - } + BOOST_ASIO_DECL bool can_dispatch(); /// Capture the current exception so it can be rethrown from a run function. BOOST_ASIO_DECL void capture_current_exception(); diff --git a/boost/asio/detail/scheduler_operation.hpp b/boost/asio/detail/scheduler_operation.hpp old mode 100755 new mode 100644 index 3a37b76775..bbe231f1d2 --- a/boost/asio/detail/scheduler_operation.hpp +++ b/boost/asio/detail/scheduler_operation.hpp @@ -2,7 +2,7 @@ // detail/scheduler_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/scheduler_thread_info.hpp b/boost/asio/detail/scheduler_thread_info.hpp old mode 100755 new mode 100644 index 272a63d955..9202fbaed6 --- a/boost/asio/detail/scheduler_thread_info.hpp +++ b/boost/asio/detail/scheduler_thread_info.hpp @@ -2,7 +2,7 @@ // detail/scheduler_thread_info.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/scoped_lock.hpp b/boost/asio/detail/scoped_lock.hpp old mode 100755 new mode 100644 index bbf75887f0..71e072bf60 --- a/boost/asio/detail/scoped_lock.hpp +++ b/boost/asio/detail/scoped_lock.hpp @@ -2,7 +2,7 @@ // detail/scoped_lock.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/scoped_ptr.hpp b/boost/asio/detail/scoped_ptr.hpp old mode 100755 new mode 100644 index 39cbff11e6..f465890d11 --- a/boost/asio/detail/scoped_ptr.hpp +++ b/boost/asio/detail/scoped_ptr.hpp @@ -2,7 +2,7 @@ // detail/scoped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/select_interrupter.hpp b/boost/asio/detail/select_interrupter.hpp old mode 100755 new mode 100644 index 7f58f07a0b..485a66b949 --- a/boost/asio/detail/select_interrupter.hpp +++ b/boost/asio/detail/select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/select_reactor.hpp b/boost/asio/detail/select_reactor.hpp old mode 100755 new mode 100644 index afcb77544e..b5f0b782f5 --- a/boost/asio/detail/select_reactor.hpp +++ b/boost/asio/detail/select_reactor.hpp @@ -2,7 +2,7 @@ // detail/select_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/service_registry.hpp b/boost/asio/detail/service_registry.hpp old mode 100755 new mode 100644 index 589ecef638..68aac83032 --- a/boost/asio/detail/service_registry.hpp +++ b/boost/asio/detail/service_registry.hpp @@ -2,7 +2,7 @@ // detail/service_registry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/signal_blocker.hpp b/boost/asio/detail/signal_blocker.hpp old mode 100755 new mode 100644 index 29d96c99fb..d9aebc7d77 --- a/boost/asio/detail/signal_blocker.hpp +++ b/boost/asio/detail/signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/signal_handler.hpp b/boost/asio/detail/signal_handler.hpp old mode 100755 new mode 100644 index 459b81ab6e..8928c90af9 --- a/boost/asio/detail/signal_handler.hpp +++ b/boost/asio/detail/signal_handler.hpp @@ -2,7 +2,7 @@ // detail/signal_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/signal_init.hpp b/boost/asio/detail/signal_init.hpp old mode 100755 new mode 100644 index d60bcdd848..72d252b807 --- a/boost/asio/detail/signal_init.hpp +++ b/boost/asio/detail/signal_init.hpp @@ -2,7 +2,7 @@ // detail/signal_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/signal_op.hpp b/boost/asio/detail/signal_op.hpp old mode 100755 new mode 100644 index 2bc1fb57f9..ad05dd78f7 --- a/boost/asio/detail/signal_op.hpp +++ b/boost/asio/detail/signal_op.hpp @@ -2,7 +2,7 @@ // detail/signal_op.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/signal_set_service.hpp b/boost/asio/detail/signal_set_service.hpp old mode 100755 new mode 100644 index fe9b5bb3cf..8dfecb19f2 --- a/boost/asio/detail/signal_set_service.hpp +++ b/boost/asio/detail/signal_set_service.hpp @@ -2,7 +2,7 @@ // detail/signal_set_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/socket_holder.hpp b/boost/asio/detail/socket_holder.hpp old mode 100755 new mode 100644 index 978b39cb38..e941fc554e --- a/boost/asio/detail/socket_holder.hpp +++ b/boost/asio/detail/socket_holder.hpp @@ -2,7 +2,7 @@ // detail/socket_holder.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/socket_ops.hpp b/boost/asio/detail/socket_ops.hpp old mode 100755 new mode 100644 index 6f10188816..0bb20d6695 --- a/boost/asio/detail/socket_ops.hpp +++ b/boost/asio/detail/socket_ops.hpp @@ -2,7 +2,7 @@ // detail/socket_ops.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/socket_option.hpp b/boost/asio/detail/socket_option.hpp old mode 100755 new mode 100644 index 1607bb385b..5eba4776d5 --- a/boost/asio/detail/socket_option.hpp +++ b/boost/asio/detail/socket_option.hpp @@ -2,7 +2,7 @@ // detail/socket_option.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/socket_select_interrupter.hpp b/boost/asio/detail/socket_select_interrupter.hpp old mode 100755 new mode 100644 index 9dc2b7bcf8..382fb34619 --- a/boost/asio/detail/socket_select_interrupter.hpp +++ b/boost/asio/detail/socket_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/socket_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/socket_types.hpp b/boost/asio/detail/socket_types.hpp old mode 100755 new mode 100644 index 115e2ad540..4099deec37 --- a/boost/asio/detail/socket_types.hpp +++ b/boost/asio/detail/socket_types.hpp @@ -2,7 +2,7 @@ // detail/socket_types.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -207,6 +207,7 @@ typedef unsigned long ioctl_arg_type; typedef u_long u_long_type; typedef u_short u_short_type; typedef int signed_size_type; +struct sockaddr_un_type { u_short sun_family; char sun_path[108]; }; # define BOOST_ASIO_OS_DEF(c) BOOST_ASIO_OS_DEF_##c # define BOOST_ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC # define BOOST_ASIO_OS_DEF_AF_INET AF_INET diff --git a/boost/asio/detail/solaris_fenced_block.hpp b/boost/asio/detail/solaris_fenced_block.hpp old mode 100755 new mode 100644 index 56b7ba88e8..e87432ba73 --- a/boost/asio/detail/solaris_fenced_block.hpp +++ b/boost/asio/detail/solaris_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/solaris_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/source_location.hpp b/boost/asio/detail/source_location.hpp index e36ef8c60e..094bed3b85 100644 --- a/boost/asio/detail/source_location.hpp +++ b/boost/asio/detail/source_location.hpp @@ -2,7 +2,7 @@ // detail/source_location.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/static_mutex.hpp b/boost/asio/detail/static_mutex.hpp old mode 100755 new mode 100644 index e763104ac4..5851bd7b45 --- a/boost/asio/detail/static_mutex.hpp +++ b/boost/asio/detail/static_mutex.hpp @@ -2,7 +2,7 @@ // detail/static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/std_event.hpp b/boost/asio/detail/std_event.hpp old mode 100755 new mode 100644 index 32ad0441dd..68c8c8fe03 --- a/boost/asio/detail/std_event.hpp +++ b/boost/asio/detail/std_event.hpp @@ -2,7 +2,7 @@ // detail/std_event.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -76,7 +76,7 @@ public: // Unlock the mutex and signal one waiter who may destroy us. template - void unlock_and_signal_one(Lock& lock) + void unlock_and_signal_one_for_destruction(Lock& lock) { BOOST_ASIO_ASSERT(lock.locked()); state_ |= 1; diff --git a/boost/asio/detail/std_fenced_block.hpp b/boost/asio/detail/std_fenced_block.hpp old mode 100755 new mode 100644 index 40f1a9eeb7..1617c4f9d7 --- a/boost/asio/detail/std_fenced_block.hpp +++ b/boost/asio/detail/std_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/std_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/std_global.hpp b/boost/asio/detail/std_global.hpp old mode 100755 new mode 100644 index 75209fe0b9..f4127e4ef2 --- a/boost/asio/detail/std_global.hpp +++ b/boost/asio/detail/std_global.hpp @@ -2,7 +2,7 @@ // detail/std_global.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/std_mutex.hpp b/boost/asio/detail/std_mutex.hpp old mode 100755 new mode 100644 index 3ee7cdfd8a..cb2b0bd401 --- a/boost/asio/detail/std_mutex.hpp +++ b/boost/asio/detail/std_mutex.hpp @@ -2,7 +2,7 @@ // detail/std_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/std_static_mutex.hpp b/boost/asio/detail/std_static_mutex.hpp old mode 100755 new mode 100644 index ee34afcf5c..c872962625 --- a/boost/asio/detail/std_static_mutex.hpp +++ b/boost/asio/detail/std_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/std_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/std_thread.hpp b/boost/asio/detail/std_thread.hpp old mode 100755 new mode 100644 index 784655cc62..3d1d3d4969 --- a/boost/asio/detail/std_thread.hpp +++ b/boost/asio/detail/std_thread.hpp @@ -2,7 +2,7 @@ // detail/std_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/strand_executor_service.hpp b/boost/asio/detail/strand_executor_service.hpp old mode 100755 new mode 100644 index 2ec7be0243..bb84f884de --- a/boost/asio/detail/strand_executor_service.hpp +++ b/boost/asio/detail/strand_executor_service.hpp @@ -2,7 +2,7 @@ // detail/strand_executor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -132,6 +132,13 @@ private: BOOST_ASIO_DECL static bool enqueue(const implementation_type& impl, scheduler_operation* op); + // Transfers waiting handlers to the ready queue. Returns true if one or more + // handlers were transferred. + BOOST_ASIO_DECL static bool push_waiting_to_ready(implementation_type& impl); + + // Invokes all ready-to-run handlers. + BOOST_ASIO_DECL static void run_ready_handlers(implementation_type& impl); + // Helper function to request invocation of the given function. template static void do_execute(const implementation_type& impl, Executor& ex, diff --git a/boost/asio/detail/strand_service.hpp b/boost/asio/detail/strand_service.hpp old mode 100755 new mode 100644 index 17fdb749d9..bff9322416 --- a/boost/asio/detail/strand_service.hpp +++ b/boost/asio/detail/strand_service.hpp @@ -2,7 +2,7 @@ // detail/strand_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -97,11 +97,10 @@ public: const implementation_type& impl) const; private: - // Helper function to dispatch a handler. Returns true if the handler should - // be dispatched immediately. - BOOST_ASIO_DECL bool do_dispatch(implementation_type& impl, operation* op); + // Helper function to dispatch a handler. + BOOST_ASIO_DECL void do_dispatch(implementation_type& impl, operation* op); - // Helper fiunction to post a handler. + // Helper function to post a handler. BOOST_ASIO_DECL void do_post(implementation_type& impl, operation* op, bool is_continuation); diff --git a/boost/asio/detail/string_view.hpp b/boost/asio/detail/string_view.hpp old mode 100755 new mode 100644 index 7b2853c5d8..0a505a0ad4 --- a/boost/asio/detail/string_view.hpp +++ b/boost/asio/detail/string_view.hpp @@ -2,7 +2,7 @@ // detail/string_view.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/thread.hpp b/boost/asio/detail/thread.hpp old mode 100755 new mode 100644 index 6df93f9a71..42e23d3614 --- a/boost/asio/detail/thread.hpp +++ b/boost/asio/detail/thread.hpp @@ -2,7 +2,7 @@ // detail/thread.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -19,6 +19,8 @@ #if !defined(BOOST_ASIO_HAS_THREADS) # include +#elif defined(BOOST_ASIO_HAS_PTHREADS) +# include #elif defined(BOOST_ASIO_WINDOWS) # if defined(UNDER_CE) # include @@ -27,8 +29,6 @@ # else # include # endif -#elif defined(BOOST_ASIO_HAS_PTHREADS) -# include #elif defined(BOOST_ASIO_HAS_STD_THREAD) # include #else @@ -41,6 +41,8 @@ namespace detail { #if !defined(BOOST_ASIO_HAS_THREADS) typedef null_thread thread; +#elif defined(BOOST_ASIO_HAS_PTHREADS) +typedef posix_thread thread; #elif defined(BOOST_ASIO_WINDOWS) # if defined(UNDER_CE) typedef wince_thread thread; @@ -49,8 +51,6 @@ typedef winapp_thread thread; # else typedef win_thread thread; # endif -#elif defined(BOOST_ASIO_HAS_PTHREADS) -typedef posix_thread thread; #elif defined(BOOST_ASIO_HAS_STD_THREAD) typedef std_thread thread; #endif diff --git a/boost/asio/detail/thread_context.hpp b/boost/asio/detail/thread_context.hpp old mode 100755 new mode 100644 index 7460534809..6bfed361d1 --- a/boost/asio/detail/thread_context.hpp +++ b/boost/asio/detail/thread_context.hpp @@ -2,7 +2,7 @@ // detail/thread_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -31,6 +31,11 @@ class thread_info_base; class thread_context { public: + // Obtain a pointer to the top of the thread call stack. Returns null when + // not running inside a thread context. + BOOST_ASIO_DECL static thread_info_base* top_of_thread_call_stack(); + +protected: // Per-thread call stack to track the state of each thread in the context. typedef call_stack thread_call_stack; }; @@ -41,4 +46,8 @@ public: #include +#if defined(BOOST_ASIO_HEADER_ONLY) +# include +#endif // defined(BOOST_ASIO_HEADER_ONLY) + #endif // BOOST_ASIO_DETAIL_THREAD_CONTEXT_HPP diff --git a/boost/asio/detail/thread_group.hpp b/boost/asio/detail/thread_group.hpp old mode 100755 new mode 100644 index e3b50e6a72..0acaf6c4d8 --- a/boost/asio/detail/thread_group.hpp +++ b/boost/asio/detail/thread_group.hpp @@ -2,7 +2,7 @@ // detail/thread_group.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -19,6 +19,8 @@ #include #include +#include + namespace boost { namespace asio { namespace detail { @@ -94,4 +96,6 @@ private: } // namespace asio } // namespace boost +#include + #endif // BOOST_ASIO_DETAIL_THREAD_GROUP_HPP diff --git a/boost/asio/detail/thread_info_base.hpp b/boost/asio/detail/thread_info_base.hpp old mode 100755 new mode 100644 index 091be1394a..0bd70416ad --- a/boost/asio/detail/thread_info_base.hpp +++ b/boost/asio/detail/thread_info_base.hpp @@ -2,7 +2,7 @@ // detail/thread_info_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -66,7 +66,13 @@ public: ~thread_info_base() { for (int i = 0; i < max_mem_index; ++i) - ::operator delete(reusable_memory_[i]); + { + // The following test for non-null pointers is technically redundant, but + // it is significantly faster when using a tight io_context::poll() loop + // in latency sensitive applications. + if (reusable_memory_[i]) + ::operator delete(reusable_memory_[i]); + } } static void* allocate(thread_info_base* this_thread, std::size_t size) @@ -140,6 +146,7 @@ public: pending_exception_ = std::make_exception_ptr( multiple_exceptions(pending_exception_)); + break; default: break; } diff --git a/boost/asio/detail/throw_error.hpp b/boost/asio/detail/throw_error.hpp old mode 100755 new mode 100644 index 315a2f4d62..aa8aaf1133 --- a/boost/asio/detail/throw_error.hpp +++ b/boost/asio/detail/throw_error.hpp @@ -2,7 +2,7 @@ // detail/throw_error.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/throw_exception.hpp b/boost/asio/detail/throw_exception.hpp old mode 100755 new mode 100644 index df27ee685b..2dae79b207 --- a/boost/asio/detail/throw_exception.hpp +++ b/boost/asio/detail/throw_exception.hpp @@ -2,7 +2,7 @@ // detail/throw_exception.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/timer_queue.hpp b/boost/asio/detail/timer_queue.hpp old mode 100755 new mode 100644 index 773332f7e8..c8d573b99a --- a/boost/asio/detail/timer_queue.hpp +++ b/boost/asio/detail/timer_queue.hpp @@ -2,7 +2,7 @@ // detail/timer_queue.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/timer_queue_base.hpp b/boost/asio/detail/timer_queue_base.hpp old mode 100755 new mode 100644 index fdbd910193..0330579f10 --- a/boost/asio/detail/timer_queue_base.hpp +++ b/boost/asio/detail/timer_queue_base.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/timer_queue_ptime.hpp b/boost/asio/detail/timer_queue_ptime.hpp old mode 100755 new mode 100644 index e058a1e916..2e4980d652 --- a/boost/asio/detail/timer_queue_ptime.hpp +++ b/boost/asio/detail/timer_queue_ptime.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_ptime.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/timer_queue_set.hpp b/boost/asio/detail/timer_queue_set.hpp old mode 100755 new mode 100644 index a073b8fccb..53ad1a8d34 --- a/boost/asio/detail/timer_queue_set.hpp +++ b/boost/asio/detail/timer_queue_set.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_set.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/timer_scheduler.hpp b/boost/asio/detail/timer_scheduler.hpp old mode 100755 new mode 100644 index 7125044b83..0522043e6b --- a/boost/asio/detail/timer_scheduler.hpp +++ b/boost/asio/detail/timer_scheduler.hpp @@ -2,7 +2,7 @@ // detail/timer_scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/timer_scheduler_fwd.hpp b/boost/asio/detail/timer_scheduler_fwd.hpp old mode 100755 new mode 100644 index 465f4e962a..e10bacc37d --- a/boost/asio/detail/timer_scheduler_fwd.hpp +++ b/boost/asio/detail/timer_scheduler_fwd.hpp @@ -2,7 +2,7 @@ // detail/timer_scheduler_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/tss_ptr.hpp b/boost/asio/detail/tss_ptr.hpp old mode 100755 new mode 100644 index d569961e60..a32c2f106a --- a/boost/asio/detail/tss_ptr.hpp +++ b/boost/asio/detail/tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/type_traits.hpp b/boost/asio/detail/type_traits.hpp old mode 100755 new mode 100644 index ba1a4d1486..e477d38043 --- a/boost/asio/detail/type_traits.hpp +++ b/boost/asio/detail/type_traits.hpp @@ -2,7 +2,7 @@ // detail/type_traits.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -144,6 +144,14 @@ template struct conjunction : #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) +struct defaulted_constraint +{ + BOOST_ASIO_CONSTEXPR defaulted_constraint() {} +}; + +template +struct constraint : enable_if {}; + } // namespace asio } // namespace boost diff --git a/boost/asio/detail/variadic_templates.hpp b/boost/asio/detail/variadic_templates.hpp old mode 100755 new mode 100644 index 9522c2978a..5fbe3e39bb --- a/boost/asio/detail/variadic_templates.hpp +++ b/boost/asio/detail/variadic_templates.hpp @@ -2,7 +2,7 @@ // detail/variadic_templates.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/wait_handler.hpp b/boost/asio/detail/wait_handler.hpp old mode 100755 new mode 100644 index 3f732640b4..4075543e10 --- a/boost/asio/detail/wait_handler.hpp +++ b/boost/asio/detail/wait_handler.hpp @@ -2,7 +2,7 @@ // detail/wait_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/wait_op.hpp b/boost/asio/detail/wait_op.hpp old mode 100755 new mode 100644 index 9a75af96f9..23ab8f0bbc --- a/boost/asio/detail/wait_op.hpp +++ b/boost/asio/detail/wait_op.hpp @@ -2,7 +2,7 @@ // detail/wait_op.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_event.hpp b/boost/asio/detail/win_event.hpp old mode 100755 new mode 100644 index 74e2f89dbf..9928bd2cc6 --- a/boost/asio/detail/win_event.hpp +++ b/boost/asio/detail/win_event.hpp @@ -2,7 +2,7 @@ // detail/win_event.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_fd_set_adapter.hpp b/boost/asio/detail/win_fd_set_adapter.hpp old mode 100755 new mode 100644 index 609c7d9630..3ace61360f --- a/boost/asio/detail/win_fd_set_adapter.hpp +++ b/boost/asio/detail/win_fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/win_fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_fenced_block.hpp b/boost/asio/detail/win_fenced_block.hpp old mode 100755 new mode 100644 index 14177eac76..ff556e4957 --- a/boost/asio/detail/win_fenced_block.hpp +++ b/boost/asio/detail/win_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/win_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_global.hpp b/boost/asio/detail/win_global.hpp old mode 100755 new mode 100644 index dad5ed03b2..a58013691e --- a/boost/asio/detail/win_global.hpp +++ b/boost/asio/detail/win_global.hpp @@ -2,7 +2,7 @@ // detail/win_global.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_handle_read_op.hpp b/boost/asio/detail/win_iocp_handle_read_op.hpp old mode 100755 new mode 100644 index 13369f7301..82e96238d6 --- a/boost/asio/detail/win_iocp_handle_read_op.hpp +++ b/boost/asio/detail/win_iocp_handle_read_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/win_iocp_handle_service.hpp b/boost/asio/detail/win_iocp_handle_service.hpp old mode 100755 new mode 100644 index 945ef2c4a0..93abb752a7 --- a/boost/asio/detail/win_iocp_handle_service.hpp +++ b/boost/asio/detail/win_iocp_handle_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/win_iocp_handle_write_op.hpp b/boost/asio/detail/win_iocp_handle_write_op.hpp old mode 100755 new mode 100644 index e1706f1609..9dd34417fe --- a/boost/asio/detail/win_iocp_handle_write_op.hpp +++ b/boost/asio/detail/win_iocp_handle_write_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/win_iocp_io_context.hpp b/boost/asio/detail/win_iocp_io_context.hpp old mode 100755 new mode 100644 index 049cdbcf2c..517dbd5f70 --- a/boost/asio/detail/win_iocp_io_context.hpp +++ b/boost/asio/detail/win_iocp_io_context.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_io_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -110,10 +110,7 @@ public: } // Return whether a handler can be dispatched immediately. - bool can_dispatch() - { - return thread_call_stack::contains(this) != 0; - } + BOOST_ASIO_DECL bool can_dispatch(); /// Capture the current exception so it can be rethrown from a run function. BOOST_ASIO_DECL void capture_current_exception(); diff --git a/boost/asio/detail/win_iocp_null_buffers_op.hpp b/boost/asio/detail/win_iocp_null_buffers_op.hpp old mode 100755 new mode 100644 index ec636dbd41..5980568cac --- a/boost/asio/detail/win_iocp_null_buffers_op.hpp +++ b/boost/asio/detail/win_iocp_null_buffers_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_null_buffers_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_operation.hpp b/boost/asio/detail/win_iocp_operation.hpp old mode 100755 new mode 100644 index c35336a3e5..910e962de4 --- a/boost/asio/detail/win_iocp_operation.hpp +++ b/boost/asio/detail/win_iocp_operation.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_overlapped_op.hpp b/boost/asio/detail/win_iocp_overlapped_op.hpp old mode 100755 new mode 100644 index be3f29297e..eaf228390f --- a/boost/asio/detail/win_iocp_overlapped_op.hpp +++ b/boost/asio/detail/win_iocp_overlapped_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_overlapped_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_overlapped_ptr.hpp b/boost/asio/detail/win_iocp_overlapped_ptr.hpp old mode 100755 new mode 100644 index dfadaa9776..250e6d4774 --- a/boost/asio/detail/win_iocp_overlapped_ptr.hpp +++ b/boost/asio/detail/win_iocp_overlapped_ptr.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_overlapped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_serial_port_service.hpp b/boost/asio/detail/win_iocp_serial_port_service.hpp old mode 100755 new mode 100644 index 5b54b0db52..6d9b3a0b6f --- a/boost/asio/detail/win_iocp_serial_port_service.hpp +++ b/boost/asio/detail/win_iocp_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/win_iocp_socket_accept_op.hpp b/boost/asio/detail/win_iocp_socket_accept_op.hpp old mode 100755 new mode 100644 index eac8f77d27..46f81504cf --- a/boost/asio/detail/win_iocp_socket_accept_op.hpp +++ b/boost/asio/detail/win_iocp_socket_accept_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_accept_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_connect_op.hpp b/boost/asio/detail/win_iocp_socket_connect_op.hpp old mode 100755 new mode 100644 index 67d94b7c70..ba85c93cf4 --- a/boost/asio/detail/win_iocp_socket_connect_op.hpp +++ b/boost/asio/detail/win_iocp_socket_connect_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_connect_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_recv_op.hpp b/boost/asio/detail/win_iocp_socket_recv_op.hpp old mode 100755 new mode 100644 index 520678cb5f..0e29b34d39 --- a/boost/asio/detail/win_iocp_socket_recv_op.hpp +++ b/boost/asio/detail/win_iocp_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp b/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp old mode 100755 new mode 100644 index 27524f7ca8..df36fc0329 --- a/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp +++ b/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recvfrom_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp b/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp old mode 100755 new mode 100644 index 62dee6b8aa..9dfad9b006 --- a/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp +++ b/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recvmsg_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_send_op.hpp b/boost/asio/detail/win_iocp_socket_send_op.hpp old mode 100755 new mode 100644 index 6d20d74148..f54aeb8a12 --- a/boost/asio/detail/win_iocp_socket_send_op.hpp +++ b/boost/asio/detail/win_iocp_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_service.hpp b/boost/asio/detail/win_iocp_socket_service.hpp old mode 100755 new mode 100644 index 7d17de207b..16335a510f --- a/boost/asio/detail/win_iocp_socket_service.hpp +++ b/boost/asio/detail/win_iocp_socket_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_socket_service_base.hpp b/boost/asio/detail/win_iocp_socket_service_base.hpp old mode 100755 new mode 100644 index b771d3f361..6cfb30af7a --- a/boost/asio/detail/win_iocp_socket_service_base.hpp +++ b/boost/asio/detail/win_iocp_socket_service_base.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_thread_info.hpp b/boost/asio/detail/win_iocp_thread_info.hpp old mode 100755 new mode 100644 index eaa25dcd70..3bab06c256 --- a/boost/asio/detail/win_iocp_thread_info.hpp +++ b/boost/asio/detail/win_iocp_thread_info.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_thread_info.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_iocp_wait_op.hpp b/boost/asio/detail/win_iocp_wait_op.hpp old mode 100755 new mode 100644 index 54d4220613..f08092a7dd --- a/boost/asio/detail/win_iocp_wait_op.hpp +++ b/boost/asio/detail/win_iocp_wait_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_wait_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_mutex.hpp b/boost/asio/detail/win_mutex.hpp old mode 100755 new mode 100644 index 707598fe7f..e4ac87df49 --- a/boost/asio/detail/win_mutex.hpp +++ b/boost/asio/detail/win_mutex.hpp @@ -2,7 +2,7 @@ // detail/win_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_object_handle_service.hpp b/boost/asio/detail/win_object_handle_service.hpp old mode 100755 new mode 100644 index f1d4805d66..678bb85329 --- a/boost/asio/detail/win_object_handle_service.hpp +++ b/boost/asio/detail/win_object_handle_service.hpp @@ -2,7 +2,7 @@ // detail/win_object_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/detail/win_static_mutex.hpp b/boost/asio/detail/win_static_mutex.hpp old mode 100755 new mode 100644 index c999bcd31b..e2af539c6a --- a/boost/asio/detail/win_static_mutex.hpp +++ b/boost/asio/detail/win_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/win_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_thread.hpp b/boost/asio/detail/win_thread.hpp old mode 100755 new mode 100644 index 28a808504d..83e34cc18d --- a/boost/asio/detail/win_thread.hpp +++ b/boost/asio/detail/win_thread.hpp @@ -2,7 +2,7 @@ // detail/win_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/win_tss_ptr.hpp b/boost/asio/detail/win_tss_ptr.hpp old mode 100755 new mode 100644 index 83693bc128..ad9030eedf --- a/boost/asio/detail/win_tss_ptr.hpp +++ b/boost/asio/detail/win_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/win_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winapp_thread.hpp b/boost/asio/detail/winapp_thread.hpp old mode 100755 new mode 100644 index 804b681c81..416ade7829 --- a/boost/asio/detail/winapp_thread.hpp +++ b/boost/asio/detail/winapp_thread.hpp @@ -2,7 +2,7 @@ // detail/winapp_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/wince_thread.hpp b/boost/asio/detail/wince_thread.hpp old mode 100755 new mode 100644 index 37c543dc8b..38541f219b --- a/boost/asio/detail/wince_thread.hpp +++ b/boost/asio/detail/wince_thread.hpp @@ -2,7 +2,7 @@ // detail/wince_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_async_manager.hpp b/boost/asio/detail/winrt_async_manager.hpp old mode 100755 new mode 100644 index 5ef6406e62..fd4e4c7498 --- a/boost/asio/detail/winrt_async_manager.hpp +++ b/boost/asio/detail/winrt_async_manager.hpp @@ -2,7 +2,7 @@ // detail/winrt_async_manager.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_async_op.hpp b/boost/asio/detail/winrt_async_op.hpp old mode 100755 new mode 100644 index 5c1ad262b0..7e158675e9 --- a/boost/asio/detail/winrt_async_op.hpp +++ b/boost/asio/detail/winrt_async_op.hpp @@ -2,7 +2,7 @@ // detail/winrt_async_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_resolve_op.hpp b/boost/asio/detail/winrt_resolve_op.hpp old mode 100755 new mode 100644 index d75fbefd36..ea5c0e21eb --- a/boost/asio/detail/winrt_resolve_op.hpp +++ b/boost/asio/detail/winrt_resolve_op.hpp @@ -2,7 +2,7 @@ // detail/winrt_resolve_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_resolver_service.hpp b/boost/asio/detail/winrt_resolver_service.hpp old mode 100755 new mode 100644 index cc5a59eb19..f5c422df1b --- a/boost/asio/detail/winrt_resolver_service.hpp +++ b/boost/asio/detail/winrt_resolver_service.hpp @@ -2,7 +2,7 @@ // detail/winrt_resolver_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_socket_connect_op.hpp b/boost/asio/detail/winrt_socket_connect_op.hpp old mode 100755 new mode 100644 index 7cd6e8e88f..cd4d69bf56 --- a/boost/asio/detail/winrt_socket_connect_op.hpp +++ b/boost/asio/detail/winrt_socket_connect_op.hpp @@ -2,7 +2,7 @@ // detail/winrt_socket_connect_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_socket_recv_op.hpp b/boost/asio/detail/winrt_socket_recv_op.hpp old mode 100755 new mode 100644 index 80cb056bd9..291087bfbf --- a/boost/asio/detail/winrt_socket_recv_op.hpp +++ b/boost/asio/detail/winrt_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/winrt_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_socket_send_op.hpp b/boost/asio/detail/winrt_socket_send_op.hpp old mode 100755 new mode 100644 index f9624d04a5..d2deee3aa2 --- a/boost/asio/detail/winrt_socket_send_op.hpp +++ b/boost/asio/detail/winrt_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/winrt_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_ssocket_service.hpp b/boost/asio/detail/winrt_ssocket_service.hpp old mode 100755 new mode 100644 index c34021108c..ffae16408d --- a/boost/asio/detail/winrt_ssocket_service.hpp +++ b/boost/asio/detail/winrt_ssocket_service.hpp @@ -2,7 +2,7 @@ // detail/winrt_ssocket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_ssocket_service_base.hpp b/boost/asio/detail/winrt_ssocket_service_base.hpp old mode 100755 new mode 100644 index 55265e50c0..e6b000f3db --- a/boost/asio/detail/winrt_ssocket_service_base.hpp +++ b/boost/asio/detail/winrt_ssocket_service_base.hpp @@ -2,7 +2,7 @@ // detail/winrt_ssocket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_timer_scheduler.hpp b/boost/asio/detail/winrt_timer_scheduler.hpp old mode 100755 new mode 100644 index 8ef2f35c83..71a6874c19 --- a/boost/asio/detail/winrt_timer_scheduler.hpp +++ b/boost/asio/detail/winrt_timer_scheduler.hpp @@ -2,7 +2,7 @@ // detail/winrt_timer_scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winrt_utils.hpp b/boost/asio/detail/winrt_utils.hpp old mode 100755 new mode 100644 index 71c59c4353..0d6667860c --- a/boost/asio/detail/winrt_utils.hpp +++ b/boost/asio/detail/winrt_utils.hpp @@ -2,7 +2,7 @@ // detail/winrt_utils.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/winsock_init.hpp b/boost/asio/detail/winsock_init.hpp old mode 100755 new mode 100644 index 750ee3714e..75dab5e52a --- a/boost/asio/detail/winsock_init.hpp +++ b/boost/asio/detail/winsock_init.hpp @@ -2,7 +2,7 @@ // detail/winsock_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/work_dispatcher.hpp b/boost/asio/detail/work_dispatcher.hpp old mode 100755 new mode 100644 index f45a16e4fe..6dba3caf33 --- a/boost/asio/detail/work_dispatcher.hpp +++ b/boost/asio/detail/work_dispatcher.hpp @@ -2,7 +2,7 @@ // detail/work_dispatcher.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/detail/wrapped_handler.hpp b/boost/asio/detail/wrapped_handler.hpp old mode 100755 new mode 100644 index 3441223e38..ece3a5df0b --- a/boost/asio/detail/wrapped_handler.hpp +++ b/boost/asio/detail/wrapped_handler.hpp @@ -2,7 +2,7 @@ // detail/wrapped_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/dispatch.hpp b/boost/asio/dispatch.hpp old mode 100755 new mode 100644 index bf278f1303..3151990376 --- a/boost/asio/dispatch.hpp +++ b/boost/asio/dispatch.hpp @@ -2,7 +2,7 @@ // dispatch.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -92,9 +92,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type* = 0); + >::type = 0); /// Submits a completion token or function object for execution. /** @@ -110,8 +110,8 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( BOOST_ASIO_MOVE_ARG(CompletionToken) token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename ExecutionContext::executor_type), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); } // namespace asio } // namespace boost diff --git a/boost/asio/error.hpp b/boost/asio/error.hpp old mode 100755 new mode 100644 index 2d2b3395bb..7481c73163 --- a/boost/asio/error.hpp +++ b/boost/asio/error.hpp @@ -2,7 +2,7 @@ // error.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution.hpp b/boost/asio/execution.hpp index bbef767a84..b44182728d 100644 --- a/boost/asio/execution.hpp +++ b/boost/asio/execution.hpp @@ -2,7 +2,7 @@ // execution.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/allocator.hpp b/boost/asio/execution/allocator.hpp index e07214f9b1..fe1c6f8198 100644 --- a/boost/asio/execution/allocator.hpp +++ b/boost/asio/execution/allocator.hpp @@ -2,7 +2,7 @@ // execution/allocator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -81,23 +81,63 @@ struct allocator_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, allocator_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -135,8 +175,18 @@ struct allocator_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -146,16 +196,46 @@ struct allocator_t { } + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, allocator_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -204,8 +284,16 @@ template struct is_applicable_property > : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -219,20 +307,20 @@ namespace traits { template struct static_query, typename enable_if< - traits::query_static_constexpr_member >::is_valid + execution::allocator_t::template + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member >::result_type result_type; + typedef typename execution::allocator_t::template + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member >::value(); + return execution::allocator_t::template + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/any_executor.hpp b/boost/asio/execution/any_executor.hpp index 9c7018c883..da5991a81b 100644 --- a/boost/asio/execution/any_executor.hpp +++ b/boost/asio/execution/any_executor.hpp @@ -2,7 +2,7 @@ // execution/any_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -620,7 +620,11 @@ public: return static_cast(target_); } +#if !defined(BOOST_ASIO_NO_TYPEID) const std::type_info& target_type() const +#else // !defined(BOOST_ASIO_NO_TYPEID) + const void* target_type() const +#endif // !defined(BOOST_ASIO_NO_TYPEID) { return target_fns_->target_type(); } @@ -800,16 +804,27 @@ protected: struct target_fns { +#if !defined(BOOST_ASIO_NO_TYPEID) const std::type_info& (*target_type)(); +#else // !defined(BOOST_ASIO_NO_TYPEID) + const void* (*target_type)(); +#endif // !defined(BOOST_ASIO_NO_TYPEID) bool (*equal)(const any_executor_base&, const any_executor_base&); void (*execute)(const any_executor_base&, BOOST_ASIO_MOVE_ARG(function)); void (*blocking_execute)(const any_executor_base&, function_view); }; +#if !defined(BOOST_ASIO_NO_TYPEID) static const std::type_info& target_type_void() { return typeid(void); } +#else // !defined(BOOST_ASIO_NO_TYPEID) + static const void* target_type_void() + { + return 0; + } +#endif // !defined(BOOST_ASIO_NO_TYPEID) static bool equal_void(const any_executor_base&, const any_executor_base&) { @@ -845,11 +860,20 @@ protected: return &fns; } +#if !defined(BOOST_ASIO_NO_TYPEID) template static const std::type_info& target_type_ex() { return typeid(Ex); } +#else // !defined(BOOST_ASIO_NO_TYPEID) + template + static const void* target_type_ex() + { + static int unique_id; + return &unique_id; + } +#endif // !defined(BOOST_ASIO_NO_TYPEID) template static bool equal_ex(const any_executor_base& ex1, @@ -1280,39 +1304,65 @@ public: { return any_executor_base::equality_helper(other); } -}; -inline bool operator==(const any_executor<>& a, - const any_executor<>& b) BOOST_ASIO_NOEXCEPT -{ - return a.equality_helper(b); -} + template + friend typename enable_if< + is_same::value + || is_same::value, + bool + >::type operator==(const AnyExecutor1& a, + const AnyExecutor2& b) BOOST_ASIO_NOEXCEPT + { + return static_cast(a).equality_helper(b); + } -inline bool operator==(const any_executor<>& a, nullptr_t) BOOST_ASIO_NOEXCEPT -{ - return !a; -} + template + friend typename enable_if< + is_same::value, + bool + >::type operator==(const AnyExecutor& a, nullptr_t) BOOST_ASIO_NOEXCEPT + { + return !a; + } -inline bool operator==(nullptr_t, const any_executor<>& b) BOOST_ASIO_NOEXCEPT -{ - return !b; -} + template + friend typename enable_if< + is_same::value, + bool + >::type operator==(nullptr_t, const AnyExecutor& b) BOOST_ASIO_NOEXCEPT + { + return !b; + } -inline bool operator!=(const any_executor<>& a, - const any_executor<>& b) BOOST_ASIO_NOEXCEPT -{ - return !a.equality_helper(b); -} + template + friend typename enable_if< + is_same::value + || is_same::value, + bool + >::type operator!=(const AnyExecutor1& a, + const AnyExecutor2& b) BOOST_ASIO_NOEXCEPT + { + return !static_cast(a).equality_helper(b); + } -inline bool operator!=(const any_executor<>& a, nullptr_t) BOOST_ASIO_NOEXCEPT -{ - return !!a; -} + template + friend typename enable_if< + is_same::value, + bool + >::type operator!=(const AnyExecutor& a, nullptr_t) BOOST_ASIO_NOEXCEPT + { + return !!a; + } -inline bool operator!=(nullptr_t, const any_executor<>& b) BOOST_ASIO_NOEXCEPT -{ - return !!b; -} + template + friend typename enable_if< + is_same::value, + bool + >::type operator!=(nullptr_t, const AnyExecutor& b) BOOST_ASIO_NOEXCEPT + { + return !!b; + } +}; inline void swap(any_executor<>& a, any_executor<>& b) BOOST_ASIO_NOEXCEPT { @@ -1452,6 +1502,64 @@ public: return any_executor_base::equality_helper(other); } + template + friend typename enable_if< + is_same::value + || is_same::value, + bool + >::type operator==(const AnyExecutor1& a, + const AnyExecutor2& b) BOOST_ASIO_NOEXCEPT + { + return static_cast(a).equality_helper(b); + } + + template + friend typename enable_if< + is_same::value, + bool + >::type operator==(const AnyExecutor& a, nullptr_t) BOOST_ASIO_NOEXCEPT + { + return !a; + } + + template + friend typename enable_if< + is_same::value, + bool + >::type operator==(nullptr_t, const AnyExecutor& b) BOOST_ASIO_NOEXCEPT + { + return !b; + } + + template + friend typename enable_if< + is_same::value + || is_same::value, + bool + >::type operator!=(const AnyExecutor1& a, + const AnyExecutor2& b) BOOST_ASIO_NOEXCEPT + { + return !static_cast(a).equality_helper(b); + } + + template + friend typename enable_if< + is_same::value, + bool + >::type operator!=(const AnyExecutor& a, nullptr_t) BOOST_ASIO_NOEXCEPT + { + return !!a; + } + + template + friend typename enable_if< + is_same::value, + bool + >::type operator!=(nullptr_t, const AnyExecutor& b) BOOST_ASIO_NOEXCEPT + { + return !!b; + } + template struct find_convertible_property : detail::supportable_properties< @@ -1596,48 +1704,6 @@ public: const prop_fns* prop_fns_; }; -template -inline bool operator==(const any_executor& a, - const any_executor& b) BOOST_ASIO_NOEXCEPT -{ - return a.equality_helper(b); -} - -template -inline bool operator==(const any_executor& a, - nullptr_t) BOOST_ASIO_NOEXCEPT -{ - return !a; -} - -template -inline bool operator==(nullptr_t, - const any_executor& b) BOOST_ASIO_NOEXCEPT -{ - return !b; -} - -template -inline bool operator!=(const any_executor& a, - const any_executor& b) BOOST_ASIO_NOEXCEPT -{ - return !a.equality_helper(b); -} - -template -inline bool operator!=(const any_executor& a, - nullptr_t) BOOST_ASIO_NOEXCEPT -{ - return !!a; -} - -template -inline bool operator!=(nullptr_t, - const any_executor& b) BOOST_ASIO_NOEXCEPT -{ - return !!b; -} - template inline void swap(any_executor& a, any_executor& b) BOOST_ASIO_NOEXCEPT @@ -1851,6 +1917,64 @@ inline void swap(any_executor& a, return any_executor_base::equality_helper(other); \ } \ \ + template \ + friend typename enable_if< \ + is_same::value \ + || is_same::value, \ + bool \ + >::type operator==(const AnyExecutor1& a, \ + const AnyExecutor2& b) BOOST_ASIO_NOEXCEPT \ + { \ + return static_cast(a).equality_helper(b); \ + } \ + \ + template \ + friend typename enable_if< \ + is_same::value, \ + bool \ + >::type operator==(const AnyExecutor& a, nullptr_t) BOOST_ASIO_NOEXCEPT \ + { \ + return !a; \ + } \ + \ + template \ + friend typename enable_if< \ + is_same::value, \ + bool \ + >::type operator==(nullptr_t, const AnyExecutor& b) BOOST_ASIO_NOEXCEPT \ + { \ + return !b; \ + } \ + \ + template \ + friend typename enable_if< \ + is_same::value \ + || is_same::value, \ + bool \ + >::type operator!=(const AnyExecutor1& a, \ + const AnyExecutor2& b) BOOST_ASIO_NOEXCEPT \ + { \ + return !static_cast(a).equality_helper(b); \ + } \ + \ + template \ + friend typename enable_if< \ + is_same::value, \ + bool \ + >::type operator!=(const AnyExecutor& a, nullptr_t) BOOST_ASIO_NOEXCEPT \ + { \ + return !!a; \ + } \ + \ + template \ + friend typename enable_if< \ + is_same::value, \ + bool \ + >::type operator!=(nullptr_t, const AnyExecutor& b) BOOST_ASIO_NOEXCEPT \ + { \ + return !!b; \ + } \ + \ template \ struct find_convertible_property : \ detail::supportable_properties< \ @@ -1990,48 +2114,6 @@ inline void swap(any_executor& a, }; \ \ template \ - inline bool operator==(const any_executor& a, \ - const any_executor& b) BOOST_ASIO_NOEXCEPT \ - { \ - return a.equality_helper(b); \ - } \ - \ - template \ - inline bool operator==(const any_executor& a, \ - nullptr_t) BOOST_ASIO_NOEXCEPT \ - { \ - return !a; \ - } \ - \ - template \ - inline bool operator==(nullptr_t, \ - const any_executor& b) BOOST_ASIO_NOEXCEPT \ - { \ - return !b; \ - } \ - \ - template \ - inline bool operator!=(const any_executor& a, \ - const any_executor& b) BOOST_ASIO_NOEXCEPT \ - { \ - return !a.equality_helper(b); \ - } \ - \ - template \ - inline bool operator!=(const any_executor& a, \ - nullptr_t) BOOST_ASIO_NOEXCEPT \ - { \ - return !!a; \ - } \ - \ - template \ - inline bool operator!=(nullptr_t, \ - const any_executor& b) BOOST_ASIO_NOEXCEPT \ - { \ - return !!b; \ - } \ - \ - template \ inline void swap(any_executor& a, \ any_executor& b) BOOST_ASIO_NOEXCEPT \ { \ diff --git a/boost/asio/execution/bad_executor.hpp b/boost/asio/execution/bad_executor.hpp index c73d8763f8..9fa399091a 100644 --- a/boost/asio/execution/bad_executor.hpp +++ b/boost/asio/execution/bad_executor.hpp @@ -2,7 +2,7 @@ // execution/bad_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/blocking.hpp b/boost/asio/execution/blocking.hpp index a14b493ef1..b261937c74 100644 --- a/boost/asio/execution/blocking.hpp +++ b/boost/asio/execution/blocking.hpp @@ -2,7 +2,7 @@ // execution/blocking.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -211,8 +211,18 @@ struct blocking_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -243,16 +253,74 @@ struct blocking_t { } + template + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) const + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_member : + traits::query_member::type, blocking_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, blocking_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template @@ -260,9 +328,13 @@ struct blocking_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -273,10 +345,16 @@ struct blocking_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -287,11 +365,19 @@ struct blocking_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -344,7 +430,9 @@ struct blocking_t const Executor& ex, convertible_from_blocking_t, typename enable_if< !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -364,8 +452,12 @@ struct blocking_t const Executor& ex, convertible_from_blocking_t, typename enable_if< !can_query::value - && !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + !can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -421,8 +513,18 @@ struct possibly_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -433,26 +535,44 @@ struct possibly_t { } + template + struct query_member : + traits::query_member< + typename blocking_t::template proxy::type, possibly_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename blocking_t::template static_proxy::type, possibly_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template static BOOST_ASIO_CONSTEXPR possibly_t static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - && !can_query >::value + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::query_free::is_valid + >::type* = 0, + typename enable_if< + !can_query >::value + >::type* = 0, + typename enable_if< + !can_query >::value >::type* = 0) BOOST_ASIO_NOEXCEPT { return possibly_t(); @@ -650,8 +770,18 @@ struct always_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -662,16 +792,26 @@ struct always_t { } + template + struct query_member : + traits::query_member< + typename blocking_t::template proxy::type, always_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename blocking_t::template static_proxy::type, always_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -726,7 +866,9 @@ struct always_t const Executor& e, const always_t&, typename enable_if< is_executor::value - && traits::static_require< + >::type* = 0, + typename enable_if< + traits::static_require< const Executor&, blocking_adaptation::allowed_t<0> >::is_valid @@ -749,8 +891,18 @@ struct never_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -761,16 +913,26 @@ struct never_t { } + template + struct query_member : + traits::query_member< + typename blocking_t::template proxy::type, never_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename blocking_t::template static_proxy::type, never_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -846,8 +1008,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -855,8 +1025,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -864,8 +1042,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -873,8 +1059,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -934,28 +1128,29 @@ struct query_free_default struct static_query::is_valid + execution::detail::blocking_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::blocking_t::query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking_t<0>:: + query_member::is_valid && traits::static_query::is_valid >::type> { @@ -974,8 +1169,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && traits::static_query::is_valid >::type> @@ -995,8 +1192,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && !traits::static_query::is_valid && traits::static_query::is_valid @@ -1017,29 +1216,30 @@ struct static_query struct static_query::is_valid + execution::detail::blocking::possibly_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking::possibly_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::blocking::possibly_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking::possibly_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking::possibly_t<0>:: + query_member::is_valid && !traits::query_free::is_valid && !can_query::value && !can_query::value @@ -1059,40 +1259,40 @@ struct static_query struct static_query::is_valid + execution::detail::blocking::always_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking::always_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::blocking::always_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid + execution::detail::blocking::never_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking::never_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::blocking::never_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/blocking_adaptation.hpp b/boost/asio/execution/blocking_adaptation.hpp index 157953e743..d13f9322b3 100644 --- a/boost/asio/execution/blocking_adaptation.hpp +++ b/boost/asio/execution/blocking_adaptation.hpp @@ -2,7 +2,7 @@ // execution/blocking_adaptation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -167,8 +167,18 @@ struct blocking_adaptation_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -193,20 +203,74 @@ struct blocking_adaptation_t { } + template + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) const + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_member : + traits::query_member::type, blocking_adaptation_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, blocking_adaptation_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, blocking_adaptation_t>::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member< - T, blocking_adaptation_t - >::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member< - T, blocking_adaptation_t>::value(); + return query_static_constexpr_member::value(); } template @@ -214,10 +278,13 @@ struct blocking_adaptation_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member< - T, blocking_adaptation_t>::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -228,11 +295,16 @@ struct blocking_adaptation_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member< - T, blocking_adaptation_t>::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -290,7 +362,9 @@ struct blocking_adaptation_t const Executor& ex, convertible_from_blocking_adaptation_t, typename enable_if< !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -345,8 +419,18 @@ struct disallowed_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -357,25 +441,43 @@ struct disallowed_t { } + template + struct query_member : + traits::query_member< + typename blocking_adaptation_t::template proxy::type, + disallowed_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename blocking_adaptation_t::template static_proxy::type, + disallowed_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template static BOOST_ASIO_CONSTEXPR disallowed_t static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::query_free::is_valid + >::type* = 0, + typename enable_if< + !can_query >::value >::type* = 0) BOOST_ASIO_NOEXCEPT { return disallowed_t(); @@ -529,8 +631,18 @@ struct allowed_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -541,16 +653,28 @@ struct allowed_t { } + template + struct query_member : + traits::query_member< + typename blocking_adaptation_t::template proxy::type, + allowed_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename blocking_adaptation_t::template static_proxy::type, + allowed_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -674,8 +798,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -683,8 +815,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -692,8 +832,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -738,30 +886,30 @@ struct query_free_default struct static_query::is_valid + execution::detail::blocking_adaptation_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking_adaptation_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::blocking_adaptation_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking_adaptation_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking_adaptation_t<0>:: + query_member::is_valid && traits::static_query::is_valid >::type> @@ -782,10 +930,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking_adaptation_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking_adaptation_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && traits::static_query struct static_query::is_valid + execution::detail::blocking_adaptation::disallowed_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking_adaptation::disallowed_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::blocking_adaptation::disallowed_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::blocking_adaptation::disallowed_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::blocking_adaptation::disallowed_t<0>:: + query_member::is_valid && !traits::query_free::is_valid && !can_query::value @@ -851,20 +999,20 @@ struct static_query struct static_query::is_valid + execution::detail::blocking_adaptation::allowed_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::blocking_adaptation::allowed_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::blocking_adaptation::allowed_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/bulk_execute.hpp b/boost/asio/execution/bulk_execute.hpp index 536c689084..2979822e25 100644 --- a/boost/asio/execution/bulk_execute.hpp +++ b/boost/asio/execution/bulk_execute.hpp @@ -2,7 +2,7 @@ // execution/bulk_execute.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -126,7 +126,8 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -137,15 +138,15 @@ struct call_traits template struct call_traits::value - && - bulk_execute_member::is_valid - && - is_sender< - typename bulk_execute_member::result_type - >::value - ) + is_convertible::value + >::type, + typename enable_if< + bulk_execute_member::is_valid + >::type, + typename enable_if< + is_sender< + typename bulk_execute_member::result_type + >::value >::type> : bulk_execute_member { @@ -155,17 +156,18 @@ struct call_traits struct call_traits::value - && - !bulk_execute_member::is_valid - && - bulk_execute_free::is_valid - && - is_sender< - typename bulk_execute_free::result_type - >::value - ) + is_convertible::value + >::type, + typename enable_if< + !bulk_execute_member::is_valid + >::type, + typename enable_if< + bulk_execute_free::is_valid + >::type, + typename enable_if< + is_sender< + typename bulk_execute_free::result_type + >::value >::type> : bulk_execute_free { @@ -175,26 +177,29 @@ struct call_traits struct call_traits::value - && - !bulk_execute_member::is_valid - && - !bulk_execute_free::is_valid - && - is_sender::value - && - is_same< - typename result_of< - F(typename executor_index::type>::type) - >::type, - typename result_of< - F(typename executor_index::type>::type) - >::type - >::value - && - static_require::is_valid - ) + is_convertible::value + >::type, + typename enable_if< + !bulk_execute_member::is_valid + >::type, + typename enable_if< + !bulk_execute_free::is_valid + >::type, + typename enable_if< + is_sender::value + >::type, + typename enable_if< + is_same< + typename result_of< + F(typename executor_index::type>::type) + >::type, + typename result_of< + F(typename executor_index::type>::type) + >::type + >::value + >::type, + typename enable_if< + static_require::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); diff --git a/boost/asio/execution/bulk_guarantee.hpp b/boost/asio/execution/bulk_guarantee.hpp index f4435a8cb6..b5f638ba25 100644 --- a/boost/asio/execution/bulk_guarantee.hpp +++ b/boost/asio/execution/bulk_guarantee.hpp @@ -2,7 +2,7 @@ // execution/bulk_guarantee.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -199,8 +199,18 @@ struct bulk_guarantee_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -231,17 +241,74 @@ struct bulk_guarantee_t { } + template + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) const + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_member : + traits::query_member::type, bulk_guarantee_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, bulk_guarantee_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, bulk_guarantee_t>::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template @@ -249,9 +316,13 @@ struct bulk_guarantee_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -262,10 +333,16 @@ struct bulk_guarantee_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -276,11 +353,19 @@ struct bulk_guarantee_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -335,7 +420,9 @@ struct bulk_guarantee_t const Executor& ex, convertible_from_bulk_guarantee_t, typename enable_if< !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -356,8 +443,12 @@ struct bulk_guarantee_t const Executor& ex, convertible_from_bulk_guarantee_t, typename enable_if< !can_query::value - && !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + !can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -416,8 +507,18 @@ struct unsequenced_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -428,26 +529,46 @@ struct unsequenced_t { } + template + struct query_member : + traits::query_member< + typename bulk_guarantee_t::template proxy::type, + unsequenced_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename bulk_guarantee_t::template static_proxy::type, + unsequenced_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template static BOOST_ASIO_CONSTEXPR unsequenced_t static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - && !can_query >::value + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::query_free::is_valid + >::type* = 0, + typename enable_if< + !can_query >::value + >::type* = 0, + typename enable_if< + !can_query >::value >::type* = 0) BOOST_ASIO_NOEXCEPT { return unsequenced_t(); @@ -514,8 +635,18 @@ struct sequenced_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -526,16 +657,28 @@ struct sequenced_t { } + template + struct query_member : + traits::query_member< + typename bulk_guarantee_t::template proxy::type, + sequenced_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename bulk_guarantee_t::template static_proxy::type, + sequenced_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -599,8 +742,18 @@ struct parallel_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -611,16 +764,28 @@ struct parallel_t { } + template + struct query_member : + traits::query_member< + typename bulk_guarantee_t::template proxy::type, + parallel_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename bulk_guarantee_t::template static_proxy::type, + parallel_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -698,8 +863,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -707,8 +880,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -716,8 +897,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -725,8 +914,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -786,30 +983,30 @@ struct query_free_default struct static_query::is_valid + execution::detail::bulk_guarantee_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::bulk_guarantee_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::bulk_guarantee_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::bulk_guarantee_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::bulk_guarantee_t<0>:: + query_member::is_valid && traits::static_query::is_valid >::type> @@ -830,10 +1027,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::bulk_guarantee_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::bulk_guarantee_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && traits::static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::bulk_guarantee_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::bulk_guarantee_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && !traits::static_query struct static_query::is_valid + execution::detail::bulk_guarantee::unsequenced_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::bulk_guarantee::unsequenced_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::bulk_guarantee::unsequenced_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::bulk_guarantee::unsequenced_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::bulk_guarantee::unsequenced_t<0>:: + query_member::is_valid && !traits::query_free::is_valid && !can_query::value @@ -928,40 +1125,40 @@ struct static_query struct static_query::is_valid + execution::detail::bulk_guarantee::sequenced_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::bulk_guarantee::sequenced_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::bulk_guarantee::sequenced_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid + execution::detail::bulk_guarantee::parallel_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::bulk_guarantee::parallel_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::bulk_guarantee::parallel_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/connect.hpp b/boost/asio/execution/connect.hpp index 47cbe3c037..efaabee239 100644 --- a/boost/asio/execution/connect.hpp +++ b/boost/asio/execution/connect.hpp @@ -2,7 +2,7 @@ // execution/connect.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -159,7 +159,8 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -170,13 +171,13 @@ struct call_traits template struct call_traits::is_valid - && - is_operation_state::result_type>::value - && - is_sender::type>::value - ) + connect_member::is_valid + >::type, + typename enable_if< + is_operation_state::result_type>::value + >::type, + typename enable_if< + is_sender::type>::value >::type> : connect_member { @@ -186,15 +187,16 @@ struct call_traits struct call_traits::is_valid - && - connect_free::is_valid - && - is_operation_state::result_type>::value - && - is_sender::type>::value - ) + !connect_member::is_valid + >::type, + typename enable_if< + connect_free::is_valid + >::type, + typename enable_if< + is_operation_state::result_type>::value + >::type, + typename enable_if< + is_sender::type>::value >::type> : connect_free { @@ -204,24 +206,25 @@ struct call_traits struct call_traits::is_valid - && - !connect_free::is_valid - && - is_receiver::value - && - conditional< - !is_as_receiver< - typename remove_cvref::type - >::value, - is_executor_of< - typename remove_cvref::type, - as_invocable::type, S> - >, - false_type - >::type::value - ) + !connect_member::is_valid + >::type, + typename enable_if< + !connect_free::is_valid + >::type, + typename enable_if< + is_receiver::value + >::type, + typename enable_if< + conditional< + !is_as_receiver< + typename remove_cvref::type + >::value, + is_executor_of< + typename remove_cvref::type, + as_invocable::type, S> + >, + false_type + >::type::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); diff --git a/boost/asio/execution/context.hpp b/boost/asio/execution/context.hpp index 1c660786fb..e429ebc003 100644 --- a/boost/asio/execution/context.hpp +++ b/boost/asio/execution/context.hpp @@ -2,7 +2,7 @@ // execution/context.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -72,8 +72,18 @@ struct context_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -87,16 +97,46 @@ struct context_t { } + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, context_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -140,8 +180,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -155,20 +203,20 @@ namespace traits { template struct static_query::is_valid + execution::detail::context_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::context_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::context_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/context_as.hpp b/boost/asio/execution/context_as.hpp index b2f11be4aa..eec57763f6 100644 --- a/boost/asio/execution/context_as.hpp +++ b/boost/asio/execution/context_as.hpp @@ -2,7 +2,7 @@ // execution/context_as.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -71,8 +71,18 @@ struct context_as_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -92,12 +102,12 @@ struct context_as_t && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename context_t::query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + context_t::query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return context_t::query_static_constexpr_member::value(); } template ())> @@ -111,7 +121,9 @@ struct context_as_t const Executor& ex, const context_as_t&, typename enable_if< is_same::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -151,8 +163,16 @@ template struct is_applicable_property > : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; diff --git a/boost/asio/execution/detail/as_invocable.hpp b/boost/asio/execution/detail/as_invocable.hpp index 28ead3f6da..b262d5faa0 100644 --- a/boost/asio/execution/detail/as_invocable.hpp +++ b/boost/asio/execution/detail/as_invocable.hpp @@ -2,7 +2,7 @@ // execution/detail/as_invocable.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/detail/as_operation.hpp b/boost/asio/execution/detail/as_operation.hpp index 0891683146..7a0796ba61 100644 --- a/boost/asio/execution/detail/as_operation.hpp +++ b/boost/asio/execution/detail/as_operation.hpp @@ -2,7 +2,7 @@ // execution/detail/as_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/detail/as_receiver.hpp b/boost/asio/execution/detail/as_receiver.hpp index 3349eab5f3..114b2d02e2 100644 --- a/boost/asio/execution/detail/as_receiver.hpp +++ b/boost/asio/execution/detail/as_receiver.hpp @@ -2,7 +2,7 @@ // execution/detail/as_receiver.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/detail/bulk_sender.hpp b/boost/asio/execution/detail/bulk_sender.hpp index 4daa8b5789..104dc9451d 100644 --- a/boost/asio/execution/detail/bulk_sender.hpp +++ b/boost/asio/execution/detail/bulk_sender.hpp @@ -2,7 +2,7 @@ // execution/detail/bulk_sender.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/detail/submit_receiver.hpp b/boost/asio/execution/detail/submit_receiver.hpp index 94ec9e31cb..dddac5857f 100644 --- a/boost/asio/execution/detail/submit_receiver.hpp +++ b/boost/asio/execution/detail/submit_receiver.hpp @@ -2,7 +2,7 @@ // execution/detail/submit_receiver.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/detail/void_receiver.hpp b/boost/asio/execution/detail/void_receiver.hpp index cc54cc350e..0958137228 100644 --- a/boost/asio/execution/detail/void_receiver.hpp +++ b/boost/asio/execution/detail/void_receiver.hpp @@ -2,7 +2,7 @@ // execution/detail/void_receiver.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/execute.hpp b/boost/asio/execution/execute.hpp index 2730cbf279..3c42ce22e0 100644 --- a/boost/asio/execution/execute.hpp +++ b/boost/asio/execution/execute.hpp @@ -2,7 +2,7 @@ // execution/execute.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -102,6 +102,7 @@ using boost::asio::result_of; using boost::asio::traits::execute_free; using boost::asio::traits::execute_member; using boost::asio::true_type; +using boost::asio::void_type; void execute(); @@ -113,61 +114,52 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); }; -template -struct call_traits +struct call_traits::is_valid - ) + execute_member::type, F>::is_valid >::type> : - execute_member + execute_member::type, F> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); }; -template -struct call_traits +struct call_traits, F>::is_valid + >::type, typename enable_if< - ( - !execute_member::is_valid - && - execute_free::is_valid - ) + execute_free::is_valid >::type> : execute_free { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free); }; -template -struct call_traits +struct call_traits::type, F>::is_valid + >::type, typename enable_if< - ( - !execute_member::is_valid - && - !execute_free::is_valid - && - conditional::type&()>::type - >::type::value - && - conditional< - !is_as_invocable< - typename decay::type - >::value, - is_sender_to< - T, - as_receiver::type, T> - >, - false_type - >::type::value - ) + !execute_free::is_valid + >::type, + typename void_type< + typename result_of::type&()>::type + >::type, + typename enable_if< + !is_as_invocable::type>::value + >::type, + typename enable_if< + is_sender_to::type, T> >::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); @@ -178,44 +170,68 @@ struct call_traits + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + struct type + { + template + auto execute(BOOST_ASIO_MOVE_ARG(F) f) + noexcept( + noexcept( + declval::type>().execute( + BOOST_ASIO_MOVE_CAST(F)(f)) + ) + ) + -> decltype( + declval::type>().execute( + BOOST_ASIO_MOVE_CAST(F)(f)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + }; + template BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type + call_traits::overload == call_member, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(F) f) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t).execute(BOOST_ASIO_MOVE_CAST(F)(f)); } template BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type + call_traits::overload == call_free, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(F) f) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return execute(BOOST_ASIO_MOVE_CAST(T)(t), BOOST_ASIO_MOVE_CAST(F)(f)); } template BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type + call_traits::overload == adapter, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(F) f) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return boost::asio::execution::detail::submit_helper( BOOST_ASIO_MOVE_CAST(T)(t), @@ -244,11 +260,14 @@ static BOOST_ASIO_CONSTEXPR const asio_execution_execute_fn::impl& } // namespace +typedef asio_execution_execute_fn::impl execute_t; + template struct can_execute : integral_constant::overload != - asio_execution_execute_fn::ill_formed> + asio_execution_execute_fn::call_traits< + execute_t, T, void(F)>::overload != + asio_execution_execute_fn::ill_formed> { }; diff --git a/boost/asio/execution/executor.hpp b/boost/asio/execution/executor.hpp index b34c4f69f9..b1d8bf0ed8 100644 --- a/boost/asio/execution/executor.hpp +++ b/boost/asio/execution/executor.hpp @@ -2,7 +2,7 @@ // execution/executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -36,34 +36,48 @@ namespace asio { namespace execution { namespace detail { -template -struct is_executor_of_impl_base : - integral_constant::type&()>::type - >::type::value - && is_constructible::type, F>::value - && is_move_constructible::type>::value -#if defined(BOOST_ASIO_HAS_NOEXCEPT) - && is_nothrow_copy_constructible::value - && is_nothrow_destructible::value -#else // defined(BOOST_ASIO_HAS_NOEXCEPT) - && is_copy_constructible::value - && is_destructible::value -#endif // defined(BOOST_ASIO_HAS_NOEXCEPT) - && traits::equality_comparable::is_valid - && traits::equality_comparable::is_noexcept - > +template +struct is_executor_of_impl : false_type { }; template -struct is_executor_of_impl : - conditional< - can_execute::value, - is_executor_of_impl_base, - false_type - >::type +struct is_executor_of_impl::type, F>::value + >::type, + typename void_type< + typename result_of::type&()>::type + >::type, + typename enable_if< + is_constructible::type, F>::value + >::type, + typename enable_if< + is_move_constructible::type>::value + >::type, +#if defined(BOOST_ASIO_HAS_NOEXCEPT) + typename enable_if< + is_nothrow_copy_constructible::value + >::type, + typename enable_if< + is_nothrow_destructible::value + >::type, +#else // defined(BOOST_ASIO_HAS_NOEXCEPT) + typename enable_if< + is_copy_constructible::value + >::type, + typename enable_if< + is_destructible::value + >::type, +#endif // defined(BOOST_ASIO_HAS_NOEXCEPT) + typename enable_if< + traits::equality_comparable::is_valid + >::type, + typename enable_if< + traits::equality_comparable::is_noexcept + >::type> : true_type { }; diff --git a/boost/asio/execution/impl/bad_executor.ipp b/boost/asio/execution/impl/bad_executor.ipp index 4729a64bb1..9b76cc1191 100644 --- a/boost/asio/execution/impl/bad_executor.ipp +++ b/boost/asio/execution/impl/bad_executor.ipp @@ -2,7 +2,7 @@ // exection/impl/bad_executor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/impl/receiver_invocation_error.ipp b/boost/asio/execution/impl/receiver_invocation_error.ipp index ea3022bd40..c6ebb70d4a 100644 --- a/boost/asio/execution/impl/receiver_invocation_error.ipp +++ b/boost/asio/execution/impl/receiver_invocation_error.ipp @@ -2,7 +2,7 @@ // exection/impl/receiver_invocation_error.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/invocable_archetype.hpp b/boost/asio/execution/invocable_archetype.hpp index 65f90b2715..49edebaec1 100644 --- a/boost/asio/execution/invocable_archetype.hpp +++ b/boost/asio/execution/invocable_archetype.hpp @@ -2,7 +2,7 @@ // execution/invocable_archetype.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/mapping.hpp b/boost/asio/execution/mapping.hpp index 3b9fc1c9c9..2b102401b4 100644 --- a/boost/asio/execution/mapping.hpp +++ b/boost/asio/execution/mapping.hpp @@ -2,7 +2,7 @@ // execution/mapping.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -195,8 +195,18 @@ struct mapping_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -227,16 +237,74 @@ struct mapping_t { } + template + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) const + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_member : + traits::query_member::type, mapping_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, mapping_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template @@ -244,9 +312,13 @@ struct mapping_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -257,10 +329,16 @@ struct mapping_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -271,11 +349,19 @@ struct mapping_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -328,7 +414,9 @@ struct mapping_t const Executor& ex, convertible_from_mapping_t, typename enable_if< !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -348,8 +436,12 @@ struct mapping_t const Executor& ex, convertible_from_mapping_t, typename enable_if< !can_query::value - && !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + !can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -405,8 +497,18 @@ struct thread_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -417,26 +519,44 @@ struct thread_t { } + template + struct query_member : + traits::query_member< + typename mapping_t::template proxy::type, thread_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename mapping_t::template static_proxy::type, thread_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template static BOOST_ASIO_CONSTEXPR thread_t static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - && !can_query >::value + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::query_free::is_valid + >::type* = 0, + typename enable_if< + !can_query >::value + >::type* = 0, + typename enable_if< + !can_query >::value >::type* = 0) BOOST_ASIO_NOEXCEPT { return thread_t(); @@ -479,8 +599,18 @@ struct new_thread_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -491,16 +621,26 @@ struct new_thread_t { } + template + struct query_member : + traits::query_member< + typename mapping_t::template proxy::type, new_thread_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename mapping_t::template static_proxy::type, new_thread_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -540,8 +680,18 @@ struct other_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -552,16 +702,26 @@ struct other_t { } + template + struct query_member : + traits::query_member< + typename mapping_t::template proxy::type, other_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename mapping_t::template static_proxy::type, other_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -614,8 +774,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -623,8 +791,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -632,8 +808,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -641,8 +825,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -702,28 +894,30 @@ struct query_free_default struct static_query::is_valid + execution::detail::mapping_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::mapping_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::mapping_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::mapping_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::mapping_t<0>:: + query_member::is_valid && traits::static_query::is_valid >::type> { @@ -742,8 +936,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::mapping_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::mapping_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && traits::static_query::is_valid >::type> @@ -763,8 +959,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::mapping_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::mapping_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && !traits::static_query::is_valid && traits::static_query::is_valid @@ -785,29 +983,30 @@ struct static_query struct static_query::is_valid + execution::detail::mapping::thread_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::mapping::thread_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::mapping::thread_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::mapping::thread_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::mapping::thread_t<0>:: + query_member::is_valid && !traits::query_free::is_valid && !can_query::value && !can_query::value @@ -827,40 +1026,40 @@ struct static_query struct static_query::is_valid + execution::detail::mapping::new_thread_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::mapping::new_thread_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::mapping::new_thread_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid + execution::detail::mapping::other_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::mapping::other_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::mapping::other_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/occupancy.hpp b/boost/asio/execution/occupancy.hpp index 388decec49..f9b12334d6 100644 --- a/boost/asio/execution/occupancy.hpp +++ b/boost/asio/execution/occupancy.hpp @@ -2,7 +2,7 @@ // execution/occupancy.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -68,8 +68,18 @@ struct occupancy_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -80,16 +90,46 @@ struct occupancy_t { } + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, occupancy_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -133,8 +173,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -148,20 +196,20 @@ namespace traits { template struct static_query::is_valid + execution::detail::occupancy_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::occupancy_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::occupancy_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/operation_state.hpp b/boost/asio/execution/operation_state.hpp index 62fa237e67..26964c4791 100644 --- a/boost/asio/execution/operation_state.hpp +++ b/boost/asio/execution/operation_state.hpp @@ -2,7 +2,7 @@ // execution/operation_state.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/outstanding_work.hpp b/boost/asio/execution/outstanding_work.hpp index 507d5d3f01..ef25c60079 100644 --- a/boost/asio/execution/outstanding_work.hpp +++ b/boost/asio/execution/outstanding_work.hpp @@ -2,7 +2,7 @@ // execution/outstanding_work.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -161,8 +161,18 @@ struct outstanding_work_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -187,20 +197,74 @@ struct outstanding_work_t { } + template + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) const + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_member : + traits::query_member::type, outstanding_work_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, outstanding_work_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, outstanding_work_t>::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member< - T, outstanding_work_t - >::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member< - T, outstanding_work_t>::value(); + return query_static_constexpr_member::value(); } template @@ -208,10 +272,13 @@ struct outstanding_work_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member< - T, outstanding_work_t>::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -222,11 +289,16 @@ struct outstanding_work_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member< - T, outstanding_work_t>::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -283,7 +355,9 @@ struct outstanding_work_t const Executor& ex, convertible_from_outstanding_work_t, typename enable_if< !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -338,8 +412,18 @@ struct untracked_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -350,25 +434,42 @@ struct untracked_t { } + template + struct query_member : + traits::query_member< + typename outstanding_work_t::template proxy::type, untracked_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename outstanding_work_t::template static_proxy::type, + untracked_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template static BOOST_ASIO_CONSTEXPR untracked_t static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::query_free::is_valid + >::type* = 0, + typename enable_if< + !can_query >::value >::type* = 0) BOOST_ASIO_NOEXCEPT { return untracked_t(); @@ -411,8 +512,18 @@ struct tracked_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -423,16 +534,27 @@ struct tracked_t { } + template + struct query_member : + traits::query_member< + typename outstanding_work_t::template proxy::type, tracked_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename outstanding_work_t::template static_proxy::type, + tracked_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template ())> @@ -486,8 +608,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -495,8 +625,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -504,8 +642,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -550,30 +696,30 @@ struct query_free_default struct static_query::is_valid + execution::detail::outstanding_work_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::outstanding_work_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::outstanding_work_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::outstanding_work_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::outstanding_work_t<0>:: + query_member::is_valid && traits::static_query::is_valid >::type> @@ -594,10 +740,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::outstanding_work_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::outstanding_work_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && traits::static_query struct static_query::is_valid + execution::detail::outstanding_work::untracked_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::outstanding_work::untracked_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::outstanding_work::untracked_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::outstanding_work::untracked_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::outstanding_work::untracked_t<0>:: + query_member::is_valid && !traits::query_free::is_valid && !can_query::value @@ -663,20 +809,20 @@ struct static_query struct static_query::is_valid + execution::detail::outstanding_work::tracked_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::outstanding_work::tracked_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::outstanding_work::tracked_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/prefer_only.hpp b/boost/asio/execution/prefer_only.hpp index 8efca06ef3..d0e8fc83c7 100644 --- a/boost/asio/execution/prefer_only.hpp +++ b/boost/asio/execution/prefer_only.hpp @@ -2,7 +2,7 @@ // execution/prefer_only.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -221,7 +221,9 @@ struct prefer_only : prefer(const Executor& ex, const prefer_only& p, typename enable_if< is_same::value - && can_prefer::value + >::type* = 0, + typename enable_if< + can_prefer::value >::type* = 0) #if !defined(BOOST_ASIO_MSVC) \ && !defined(__clang__) // Clang crashes if noexcept is used here. @@ -239,7 +241,9 @@ struct prefer_only : query(const Executor& ex, const prefer_only& p, typename enable_if< is_same::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(BOOST_ASIO_MSVC) \ && !defined(__clang__) // Clang crashes if noexcept is used here. diff --git a/boost/asio/execution/receiver.hpp b/boost/asio/execution/receiver.hpp index 22d640050a..80d78fc723 100644 --- a/boost/asio/execution/receiver.hpp +++ b/boost/asio/execution/receiver.hpp @@ -2,7 +2,7 @@ // execution/receiver.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/receiver_invocation_error.hpp b/boost/asio/execution/receiver_invocation_error.hpp index 576f3b0d2e..2d3d6a29ce 100644 --- a/boost/asio/execution/receiver_invocation_error.hpp +++ b/boost/asio/execution/receiver_invocation_error.hpp @@ -2,7 +2,7 @@ // execution/receiver_invocation_error.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/relationship.hpp b/boost/asio/execution/relationship.hpp index 71a7b7f27b..bc8d014f1a 100644 --- a/boost/asio/execution/relationship.hpp +++ b/boost/asio/execution/relationship.hpp @@ -2,7 +2,7 @@ // execution/relationship.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -160,8 +160,18 @@ struct relationship_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); @@ -186,20 +196,74 @@ struct relationship_t { } + template + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) const + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + + template + struct static_proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + struct type + { + template + static constexpr auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + conditional::type::query(BOOST_ASIO_MOVE_CAST(P)(p)) + ) + { + return T::query(BOOST_ASIO_MOVE_CAST(P)(p)); + } + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) + }; + + template + struct query_member : + traits::query_member::type, relationship_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename static_proxy::type, relationship_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, relationship_t>::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member< - T, relationship_t - >::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member< - T, relationship_t>::value(); + return query_static_constexpr_member::value(); } template @@ -207,10 +271,13 @@ struct relationship_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member< - T, relationship_t>::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -221,11 +288,16 @@ struct relationship_t typename traits::static_query::result_type static_query( typename enable_if< - !traits::query_static_constexpr_member< - T, relationship_t>::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::static_query::is_valid + >::type* = 0, + typename enable_if< + traits::static_query::is_valid >::type* = 0) BOOST_ASIO_NOEXCEPT { return traits::static_query::value(); @@ -281,7 +353,9 @@ struct relationship_t const Executor& ex, convertible_from_relationship_t, typename enable_if< !can_query::value - && can_query::value + >::type* = 0, + typename enable_if< + can_query::value >::type* = 0) #if !defined(__clang__) // Clang crashes if noexcept is used here. #if defined(BOOST_ASIO_MSVC) // Visual C++ wants the type to be qualified. @@ -336,8 +410,18 @@ struct fork_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -348,25 +432,41 @@ struct fork_t { } + template + struct query_member : + traits::query_member< + typename relationship_t::template proxy::type, fork_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename relationship_t::template static_proxy::type, fork_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template static BOOST_ASIO_CONSTEXPR fork_t static_query( typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value + !query_static_constexpr_member::is_valid + >::type* = 0, + typename enable_if< + !query_member::is_valid + >::type* = 0, + typename enable_if< + !traits::query_free::is_valid + >::type* = 0, + typename enable_if< + !can_query >::value >::type* = 0) BOOST_ASIO_NOEXCEPT { return fork_t(); @@ -409,8 +509,18 @@ struct continuation_t #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) template BOOST_ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); + is_applicable_property_v = ( + is_executor::value + || conditional< + is_executor::value, + false_type, + is_sender + >::type::value + || conditional< + is_executor::value, + false_type, + is_scheduler + >::type::value)); #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES) BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); @@ -421,16 +531,27 @@ struct continuation_t { } + template + struct query_member : + traits::query_member< + typename relationship_t::template proxy::type, continuation_t> {}; + + template + struct query_static_constexpr_member : + traits::query_static_constexpr_member< + typename relationship_t::template static_proxy::type, + continuation_t> {}; + #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) template static BOOST_ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type + typename query_static_constexpr_member::result_type static_query() BOOST_ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) + query_static_constexpr_member::is_noexcept)) { - return traits::query_static_constexpr_member::value(); + return query_static_constexpr_member::value(); } template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -494,8 +623,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -503,8 +640,16 @@ template struct is_applicable_property : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> + || conditional< + execution::is_executor::value, + false_type, + execution::is_sender + >::type::value + || conditional< + execution::is_executor::value, + false_type, + execution::is_scheduler + >::type::value> { }; @@ -549,30 +694,30 @@ struct query_free_default struct static_query::is_valid + execution::detail::relationship_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::relationship_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::relationship_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::relationship_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::relationship_t<0>:: + query_member::is_valid && traits::static_query::is_valid >::type> @@ -593,10 +738,10 @@ struct static_query struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::relationship_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::relationship_t<0>:: + query_member::is_valid && !traits::static_query::is_valid && traits::static_query struct static_query::is_valid + execution::detail::relationship::fork_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::relationship::fork_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::relationship::fork_t<0>:: + query_static_constexpr_member::value(); } }; template struct static_query::is_valid - && !traits::query_member::is_valid + !execution::detail::relationship::fork_t<0>:: + query_static_constexpr_member::is_valid + && !execution::detail::relationship::fork_t<0>:: + query_member::is_valid && !traits::query_free::is_valid && !can_query::value @@ -662,20 +807,20 @@ struct static_query struct static_query::is_valid + execution::detail::relationship::continuation_t<0>:: + query_static_constexpr_member::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef typename traits::query_static_constexpr_member::result_type result_type; + typedef typename execution::detail::relationship::continuation_t<0>:: + query_static_constexpr_member::result_type result_type; static BOOST_ASIO_CONSTEXPR result_type value() { - return traits::query_static_constexpr_member::value(); + return execution::detail::relationship::continuation_t<0>:: + query_static_constexpr_member::value(); } }; diff --git a/boost/asio/execution/schedule.hpp b/boost/asio/execution/schedule.hpp index 4eabc5c4ee..acb95465b4 100644 --- a/boost/asio/execution/schedule.hpp +++ b/boost/asio/execution/schedule.hpp @@ -2,7 +2,7 @@ // execution/schedule.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -88,7 +88,7 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -99,9 +99,7 @@ struct call_traits template struct call_traits::is_valid - ) + schedule_member::is_valid >::type> : schedule_member { @@ -111,11 +109,10 @@ struct call_traits struct call_traits::is_valid - && - schedule_free::is_valid - ) + !schedule_member::is_valid + >::type, + typename enable_if< + schedule_free::is_valid >::type> : schedule_free { @@ -125,13 +122,13 @@ struct call_traits struct call_traits::is_valid - && - !schedule_free::is_valid - && - is_executor::type>::value - ) + !schedule_member::is_valid + >::type, + typename enable_if< + !schedule_free::is_valid + >::type, + typename enable_if< + is_executor::type>::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = identity); diff --git a/boost/asio/execution/scheduler.hpp b/boost/asio/execution/scheduler.hpp index 70c61505cd..984b8200d5 100644 --- a/boost/asio/execution/scheduler.hpp +++ b/boost/asio/execution/scheduler.hpp @@ -2,7 +2,7 @@ // execution/scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/sender.hpp b/boost/asio/execution/sender.hpp index 90dd498890..ba7f4d2c48 100644 --- a/boost/asio/execution/sender.hpp +++ b/boost/asio/execution/sender.hpp @@ -2,7 +2,7 @@ // execution/sender.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/execution/set_done.hpp b/boost/asio/execution/set_done.hpp index afb9e1600e..28f2206ed4 100644 --- a/boost/asio/execution/set_done.hpp +++ b/boost/asio/execution/set_done.hpp @@ -2,7 +2,7 @@ // execution/set_done.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -85,7 +85,7 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -96,9 +96,7 @@ struct call_traits template struct call_traits::is_valid - ) + set_done_member::is_valid >::type> : set_done_member { @@ -108,11 +106,10 @@ struct call_traits struct call_traits::is_valid - && - set_done_free::is_valid - ) + !set_done_member::is_valid + >::type, + typename enable_if< + set_done_free::is_valid >::type> : set_done_free { diff --git a/boost/asio/execution/set_error.hpp b/boost/asio/execution/set_error.hpp index ecc0d41ca0..94d0b73c9c 100644 --- a/boost/asio/execution/set_error.hpp +++ b/boost/asio/execution/set_error.hpp @@ -2,7 +2,7 @@ // execution/set_error.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -85,7 +85,7 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -96,9 +96,7 @@ struct call_traits template struct call_traits::is_valid - ) + set_error_member::is_valid >::type> : set_error_member { @@ -108,11 +106,10 @@ struct call_traits struct call_traits::is_valid - && - set_error_free::is_valid - ) + !set_error_member::is_valid + >::type, + typename enable_if< + set_error_free::is_valid >::type> : set_error_free { diff --git a/boost/asio/execution/set_value.hpp b/boost/asio/execution/set_value.hpp index a1b7ab596b..b313f07514 100644 --- a/boost/asio/execution/set_value.hpp +++ b/boost/asio/execution/set_value.hpp @@ -2,7 +2,7 @@ // execution/set_value.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -88,7 +88,7 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -99,9 +99,7 @@ struct call_traits template struct call_traits::is_valid - ) + set_value_member::is_valid >::type> : set_value_member { @@ -111,11 +109,10 @@ struct call_traits struct call_traits::is_valid - && - set_value_free::is_valid - ) + !set_value_member::is_valid + >::type, + typename enable_if< + set_value_free::is_valid >::type> : set_value_free { diff --git a/boost/asio/execution/start.hpp b/boost/asio/execution/start.hpp index 7ceea6f8d3..6ea0ee0e8e 100644 --- a/boost/asio/execution/start.hpp +++ b/boost/asio/execution/start.hpp @@ -2,7 +2,7 @@ // execution/start.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -82,7 +82,7 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -93,9 +93,7 @@ struct call_traits template struct call_traits::is_valid - ) + start_member::is_valid >::type> : start_member { @@ -105,11 +103,10 @@ struct call_traits struct call_traits::is_valid - && - start_free::is_valid - ) + !start_member::is_valid + >::type, + typename enable_if< + start_free::is_valid >::type> : start_free { diff --git a/boost/asio/execution/submit.hpp b/boost/asio/execution/submit.hpp index 27329132ba..da29e71eb5 100644 --- a/boost/asio/execution/submit.hpp +++ b/boost/asio/execution/submit.hpp @@ -2,7 +2,7 @@ // execution/submit.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -127,7 +127,8 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -138,11 +139,10 @@ struct call_traits template struct call_traits::is_valid - && - is_sender_to::value - ) + submit_member::is_valid + >::type, + typename enable_if< + is_sender_to::value >::type> : submit_member { @@ -152,13 +152,13 @@ struct call_traits struct call_traits::is_valid - && - submit_free::is_valid - && - is_sender_to::value - ) + !submit_member::is_valid + >::type, + typename enable_if< + submit_free::is_valid + >::type, + typename enable_if< + is_sender_to::value >::type> : submit_free { @@ -168,13 +168,13 @@ struct call_traits struct call_traits::is_valid - && - !submit_free::is_valid - && - is_sender_to::value - ) + !submit_member::is_valid + >::type, + typename enable_if< + !submit_free::is_valid + >::type, + typename enable_if< + is_sender_to::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); diff --git a/boost/asio/execution_context.hpp b/boost/asio/execution_context.hpp old mode 100755 new mode 100644 index ffb1a2a5c5..4e73b61632 --- a/boost/asio/execution_context.hpp +++ b/boost/asio/execution_context.hpp @@ -2,7 +2,7 @@ // execution_context.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/executor.hpp b/boost/asio/executor.hpp old mode 100755 new mode 100644 index 4f259cef3b..77437726d4 --- a/boost/asio/executor.hpp +++ b/boost/asio/executor.hpp @@ -2,7 +2,7 @@ // executor.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/executor_work_guard.hpp b/boost/asio/executor_work_guard.hpp old mode 100755 new mode 100644 index 7d8ca480b6..5811f36934 --- a/boost/asio/executor_work_guard.hpp +++ b/boost/asio/executor_work_guard.hpp @@ -2,7 +2,7 @@ // executor_work_guard.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -32,7 +32,7 @@ namespace asio { #if !defined(BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL) #define BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL -template +template class executor_work_guard; #endif // !defined(BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL) @@ -42,7 +42,7 @@ class executor_work_guard; #if defined(GENERATING_DOCUMENTATION) template #else // defined(GENERATING_DOCUMENTATION) -template +template #endif // defined(GENERATING_DOCUMENTATION) class executor_work_guard { @@ -130,7 +130,10 @@ private: template class executor_work_guard::value && execution::is_executor::value + !is_executor::value + >::type, + typename enable_if< + execution::is_executor::value >::type> { public: @@ -218,9 +221,9 @@ private: /// Create an @ref executor_work_guard object. template inline executor_work_guard make_work_guard(const Executor& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { return executor_work_guard(ex); } @@ -229,9 +232,9 @@ inline executor_work_guard make_work_guard(const Executor& ex, template inline executor_work_guard make_work_guard(ExecutionContext& ctx, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { return executor_work_guard( ctx.get_executor()); @@ -241,10 +244,15 @@ make_work_guard(ExecutionContext& ctx, template inline executor_work_guard::type> make_work_guard(const T& t, - typename enable_if< - !is_executor::value && !execution::is_executor::value - && !is_convertible::value>::type* = 0) + typename constraint< + !is_executor::value + >::type = 0, + typename constraint< + !execution::is_executor::value + >::type = 0, + typename constraint< + !is_convertible::value + >::type = 0) { return executor_work_guard::type>( associated_executor::get(t)); @@ -254,9 +262,9 @@ make_work_guard(const T& t, template inline executor_work_guard::type> make_work_guard(const T& t, const Executor& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { return executor_work_guard::type>( associated_executor::get(t, ex)); @@ -267,11 +275,18 @@ template inline executor_work_guard::type> make_work_guard(const T& t, ExecutionContext& ctx, - typename enable_if< - !is_executor::value && !execution::is_executor::value - && !is_convertible::value - && is_convertible::value - >::type* = 0) + typename constraint< + !is_executor::value + >::type = 0, + typename constraint< + !execution::is_executor::value + >::type = 0, + typename constraint< + !is_convertible::value + >::type = 0, + typename constraint< + is_convertible::value + >::type = 0) { return executor_work_guard::type>( diff --git a/boost/asio/experimental/as_single.hpp b/boost/asio/experimental/as_single.hpp new file mode 100644 index 0000000000..1bb1cb888c --- /dev/null +++ b/boost/asio/experimental/as_single.hpp @@ -0,0 +1,137 @@ +// +// experimental/as_single.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2021 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_EXPERIMENTAL_AS_SINGLE_HPP +#define BOOST_ASIO_EXPERIMENTAL_AS_SINGLE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include +#include + +#include + +namespace boost { +namespace asio { +namespace experimental { + +/// Completion token type used to specify that the completion handler +/// arguments should be combined into a single argument. +/** + * The as_single_t class is used to indicate that any arguments to the + * completion handler should be combined and passed as a single argument. + * If there is already one argument, that argument is passed as-is. If + * there is more than argument, the arguments are first moved into a + * @c std::tuple and that tuple is then passed to the completion handler. + */ +template +class as_single_t +{ +public: + /// Tag type used to prevent the "default" constructor from being used for + /// conversions. + struct default_constructor_tag {}; + + /// Default constructor. + /** + * This constructor is only valid if the underlying completion token is + * default constructible and move constructible. The underlying completion + * token is itself defaulted as an argument to allow it to capture a source + * location. + */ + BOOST_ASIO_CONSTEXPR as_single_t( + default_constructor_tag = default_constructor_tag(), + CompletionToken token = CompletionToken()) + : token_(BOOST_ASIO_MOVE_CAST(CompletionToken)(token)) + { + } + + /// Constructor. + template + BOOST_ASIO_CONSTEXPR explicit as_single_t( + BOOST_ASIO_MOVE_ARG(T) completion_token) + : token_(BOOST_ASIO_MOVE_CAST(T)(completion_token)) + { + } + + /// Adapts an executor to add the @c as_single_t completion token as the + /// default. + template + struct executor_with_default : InnerExecutor + { + /// Specify @c as_single_t as the default completion token type. + typedef as_single_t default_completion_token_type; + + /// Construct the adapted executor from the inner executor type. + executor_with_default(const InnerExecutor& ex) BOOST_ASIO_NOEXCEPT + : InnerExecutor(ex) + { + } + + /// Convert the specified executor to the inner executor type, then use + /// that to construct the adapted executor. + template + executor_with_default(const OtherExecutor& ex, + typename constraint< + is_convertible::value + >::type = 0) BOOST_ASIO_NOEXCEPT + : InnerExecutor(ex) + { + } + }; + + /// Type alias to adapt an I/O object to use @c as_single_t as its + /// default completion token type. +#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) \ + || defined(GENERATING_DOCUMENTATION) + template + using as_default_on_t = typename T::template rebind_executor< + executor_with_default >::other; +#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) + // || defined(GENERATING_DOCUMENTATION) + + /// Function helper to adapt an I/O object to use @c as_single_t as its + /// default completion token type. + template + static typename decay::type::template rebind_executor< + executor_with_default::type::executor_type> + >::other + as_default_on(BOOST_ASIO_MOVE_ARG(T) object) + { + return typename decay::type::template rebind_executor< + executor_with_default::type::executor_type> + >::other(BOOST_ASIO_MOVE_CAST(T)(object)); + } + +//private: + CompletionToken token_; +}; + +/// Create a completion token to specify that the completion handler arguments +/// should be combined into a single argument. +template +inline BOOST_ASIO_CONSTEXPR as_single_t::type> +as_single(BOOST_ASIO_MOVE_ARG(CompletionToken) completion_token) +{ + return as_single_t::type>( + BOOST_ASIO_MOVE_CAST(CompletionToken)(completion_token)); +} + +} // namespace experimental +} // namespace asio +} // namespace boost + +#include + +#include + +#endif // BOOST_ASIO_EXPERIMENTAL_AS_SINGLE_HPP diff --git a/boost/asio/experimental/impl/as_single.hpp b/boost/asio/experimental/impl/as_single.hpp new file mode 100644 index 0000000000..336e9a19c6 --- /dev/null +++ b/boost/asio/experimental/impl/as_single.hpp @@ -0,0 +1,245 @@ +// +// experimental/impl/as_single.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2021 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_IMPL_EXPERIMENTAL_AS_SINGLE_HPP +#define BOOST_ASIO_IMPL_EXPERIMENTAL_AS_SINGLE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace experimental { +namespace detail { + +// Class to adapt a as_single_t as a completion handler. +template +class as_single_handler +{ +public: + typedef void result_type; + + template + as_single_handler(as_single_t e) + : handler_(BOOST_ASIO_MOVE_CAST(CompletionToken)(e.token_)) + { + } + + template + as_single_handler(BOOST_ASIO_MOVE_ARG(RedirectedHandler) h) + : handler_(BOOST_ASIO_MOVE_CAST(RedirectedHandler)(h)) + { + } + + void operator()() + { + handler_(); + } + + template + void operator()(BOOST_ASIO_MOVE_ARG(Arg) arg) + { + handler_(BOOST_ASIO_MOVE_CAST(Arg)(arg)); + } + + template + void operator()(BOOST_ASIO_MOVE_ARG(Args)... args) + { + handler_(std::make_tuple(BOOST_ASIO_MOVE_CAST(Args)(args)...)); + } + +//private: + Handler handler_; +}; + +template +inline asio_handler_allocate_is_deprecated +asio_handler_allocate(std::size_t size, + as_single_handler* this_handler) +{ +#if defined(BOOST_ASIO_NO_DEPRECATED) + boost_asio_handler_alloc_helpers::allocate(size, this_handler->handler_); + return asio_handler_allocate_is_no_longer_used(); +#else // defined(BOOST_ASIO_NO_DEPRECATED) + return boost_asio_handler_alloc_helpers::allocate( + size, this_handler->handler_); +#endif // defined(BOOST_ASIO_NO_DEPRECATED) +} + +template +inline asio_handler_deallocate_is_deprecated +asio_handler_deallocate(void* pointer, std::size_t size, + as_single_handler* this_handler) +{ + boost_asio_handler_alloc_helpers::deallocate( + pointer, size, this_handler->handler_); +#if defined(BOOST_ASIO_NO_DEPRECATED) + return asio_handler_deallocate_is_no_longer_used(); +#endif // defined(BOOST_ASIO_NO_DEPRECATED) +} + +template +inline bool asio_handler_is_continuation( + as_single_handler* this_handler) +{ + return boost_asio_handler_cont_helpers::is_continuation( + this_handler->handler_); +} + +template +inline asio_handler_invoke_is_deprecated +asio_handler_invoke(Function& function, + as_single_handler* this_handler) +{ + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); +#if defined(BOOST_ASIO_NO_DEPRECATED) + return asio_handler_invoke_is_no_longer_used(); +#endif // defined(BOOST_ASIO_NO_DEPRECATED) +} + +template +inline asio_handler_invoke_is_deprecated +asio_handler_invoke(const Function& function, + as_single_handler* this_handler) +{ + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); +#if defined(BOOST_ASIO_NO_DEPRECATED) + return asio_handler_invoke_is_no_longer_used(); +#endif // defined(BOOST_ASIO_NO_DEPRECATED) +} + +template +struct as_single_signature +{ + typedef Signature type; +}; + +template +struct as_single_signature +{ + typedef R type(); +}; + +template +struct as_single_signature +{ + typedef R type(Arg); +}; + +template +struct as_single_signature +{ + typedef R type(std::tuple::type...>); +}; + +} // namespace detail +} // namespace experimental + +#if !defined(GENERATING_DOCUMENTATION) + +template +struct async_result, Signature> +{ + typedef typename async_result::type> + ::return_type return_type; + + template + struct init_wrapper + { + init_wrapper(Initiation init) + : initiation_(BOOST_ASIO_MOVE_CAST(Initiation)(init)) + { + } + + template + void operator()( + BOOST_ASIO_MOVE_ARG(Handler) handler, + BOOST_ASIO_MOVE_ARG(Args)... args) + { + BOOST_ASIO_MOVE_CAST(Initiation)(initiation_)( + experimental::detail::as_single_handler< + typename decay::type>( + BOOST_ASIO_MOVE_CAST(Handler)(handler)), + BOOST_ASIO_MOVE_CAST(Args)(args)...); + } + + Initiation initiation_; + }; + + template + static return_type initiate( + BOOST_ASIO_MOVE_ARG(Initiation) initiation, + BOOST_ASIO_MOVE_ARG(RawCompletionToken) token, + BOOST_ASIO_MOVE_ARG(Args)... args) + { + return async_initiate::type>( + init_wrapper::type>( + BOOST_ASIO_MOVE_CAST(Initiation)(initiation)), + token.token_, BOOST_ASIO_MOVE_CAST(Args)(args)...); + } +}; + +template +struct associated_executor< + experimental::detail::as_single_handler, Executor> + : detail::associated_executor_forwarding_base +{ + typedef typename associated_executor::type type; + + static type get( + const experimental::detail::as_single_handler& h, + const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT + { + return associated_executor::get(h.handler_, ex); + } +}; + +template +struct associated_allocator< + experimental::detail::as_single_handler, Allocator> +{ + typedef typename associated_allocator::type type; + + static type get( + const experimental::detail::as_single_handler& h, + const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT + { + return associated_allocator::get(h.handler_, a); + } +}; + +#endif // !defined(GENERATING_DOCUMENTATION) + +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_IMPL_EXPERIMENTAL_AS_SINGLE_HPP diff --git a/boost/asio/generic/basic_endpoint.hpp b/boost/asio/generic/basic_endpoint.hpp old mode 100755 new mode 100644 index 01bff52ec5..e79f9a6b88 --- a/boost/asio/generic/basic_endpoint.hpp +++ b/boost/asio/generic/basic_endpoint.hpp @@ -2,7 +2,7 @@ // generic/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/generic/datagram_protocol.hpp b/boost/asio/generic/datagram_protocol.hpp old mode 100755 new mode 100644 index ccbaf5df10..bb0b0a4d73 --- a/boost/asio/generic/datagram_protocol.hpp +++ b/boost/asio/generic/datagram_protocol.hpp @@ -2,7 +2,7 @@ // generic/datagram_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/generic/detail/endpoint.hpp b/boost/asio/generic/detail/endpoint.hpp old mode 100755 new mode 100644 index 92b510702d..893c93fb49 --- a/boost/asio/generic/detail/endpoint.hpp +++ b/boost/asio/generic/detail/endpoint.hpp @@ -2,7 +2,7 @@ // generic/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/generic/detail/impl/endpoint.ipp b/boost/asio/generic/detail/impl/endpoint.ipp old mode 100755 new mode 100644 index f9a02639eb..e518304f7d --- a/boost/asio/generic/detail/impl/endpoint.ipp +++ b/boost/asio/generic/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // generic/detail/impl/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/generic/raw_protocol.hpp b/boost/asio/generic/raw_protocol.hpp old mode 100755 new mode 100644 index 253dd4a197..e5759f0053 --- a/boost/asio/generic/raw_protocol.hpp +++ b/boost/asio/generic/raw_protocol.hpp @@ -2,7 +2,7 @@ // generic/raw_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/generic/seq_packet_protocol.hpp b/boost/asio/generic/seq_packet_protocol.hpp old mode 100755 new mode 100644 index f648570e9f..54106e92e3 --- a/boost/asio/generic/seq_packet_protocol.hpp +++ b/boost/asio/generic/seq_packet_protocol.hpp @@ -2,7 +2,7 @@ // generic/seq_packet_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/generic/stream_protocol.hpp b/boost/asio/generic/stream_protocol.hpp old mode 100755 new mode 100644 index d095a403c4..0c3eb8eb5f --- a/boost/asio/generic/stream_protocol.hpp +++ b/boost/asio/generic/stream_protocol.hpp @@ -2,7 +2,7 @@ // generic/stream_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/handler_alloc_hook.hpp b/boost/asio/handler_alloc_hook.hpp old mode 100755 new mode 100644 index c1f53b6e7c..b311e43132 --- a/boost/asio/handler_alloc_hook.hpp +++ b/boost/asio/handler_alloc_hook.hpp @@ -2,7 +2,7 @@ // handler_alloc_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/handler_continuation_hook.hpp b/boost/asio/handler_continuation_hook.hpp old mode 100755 new mode 100644 index dc81a62515..02ff4d718e --- a/boost/asio/handler_continuation_hook.hpp +++ b/boost/asio/handler_continuation_hook.hpp @@ -2,7 +2,7 @@ // handler_continuation_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/handler_invoke_hook.hpp b/boost/asio/handler_invoke_hook.hpp old mode 100755 new mode 100644 index 4b4a4518d7..92a1b4250c --- a/boost/asio/handler_invoke_hook.hpp +++ b/boost/asio/handler_invoke_hook.hpp @@ -2,7 +2,7 @@ // handler_invoke_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/high_resolution_timer.hpp b/boost/asio/high_resolution_timer.hpp old mode 100755 new mode 100644 index 575c612e7e..ff221a919e --- a/boost/asio/high_resolution_timer.hpp +++ b/boost/asio/high_resolution_timer.hpp @@ -2,7 +2,7 @@ // high_resolution_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/awaitable.hpp b/boost/asio/impl/awaitable.hpp old mode 100755 new mode 100644 index 0823bd56e1..eeb8f24056 --- a/boost/asio/impl/awaitable.hpp +++ b/boost/asio/impl/awaitable.hpp @@ -2,7 +2,7 @@ // impl/awaitable.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -78,7 +78,7 @@ public: { return boost::asio::detail::thread_info_base::allocate( boost::asio::detail::thread_info_base::awaitable_frame_tag(), - boost::asio::detail::thread_context::thread_call_stack::top(), + boost::asio::detail::thread_context::top_of_thread_call_stack(), size); } @@ -86,7 +86,7 @@ public: { boost::asio::detail::thread_info_base::deallocate( boost::asio::detail::thread_info_base::awaitable_frame_tag(), - boost::asio::detail::thread_context::thread_call_stack::top(), + boost::asio::detail::thread_context::top_of_thread_call_stack(), pointer, size); } #endif // !defined(BOOST_ASIO_DISABLE_AWAITABLE_FRAME_RECYCLING) @@ -112,7 +112,7 @@ public: void await_suspend(coroutine_handle) noexcept { - this_->pop_frame(); + this->this_->pop_frame(); } void await_resume() const noexcept diff --git a/boost/asio/impl/buffered_read_stream.hpp b/boost/asio/impl/buffered_read_stream.hpp old mode 100755 new mode 100644 index 73f1049b5c..2a1362b5fc --- a/boost/asio/impl/buffered_read_stream.hpp +++ b/boost/asio/impl/buffered_read_stream.hpp @@ -2,7 +2,7 @@ // impl/buffered_read_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -219,6 +219,7 @@ struct associated_allocator< template struct associated_executor< detail::buffered_fill_handler, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; @@ -470,6 +471,7 @@ template , Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; diff --git a/boost/asio/impl/buffered_write_stream.hpp b/boost/asio/impl/buffered_write_stream.hpp old mode 100755 new mode 100644 index cf33911f03..e900da1967 --- a/boost/asio/impl/buffered_write_stream.hpp +++ b/boost/asio/impl/buffered_write_stream.hpp @@ -2,7 +2,7 @@ // impl/buffered_write_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -199,6 +199,7 @@ struct associated_allocator< template struct associated_executor< detail::buffered_flush_handler, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; @@ -456,6 +457,7 @@ template , Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; diff --git a/boost/asio/impl/co_spawn.hpp b/boost/asio/impl/co_spawn.hpp old mode 100755 new mode 100644 index 85bee9a013..d678bdf5d1 --- a/boost/asio/impl/co_spawn.hpp +++ b/boost/asio/impl/co_spawn.hpp @@ -2,7 +2,7 @@ // impl/co_spawn.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -199,10 +199,10 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE( CompletionToken, void(std::exception_ptr, T)) co_spawn(const Executor& ex, awaitable a, CompletionToken&& token, - typename enable_if< + typename constraint< (is_executor::value || execution::is_executor::value) && is_convertible::value - >::type*) + >::type) { return async_initiate( detail::initiate_co_spawn(AwaitableExecutor(ex)), @@ -216,10 +216,10 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE( CompletionToken, void(std::exception_ptr)) co_spawn(const Executor& ex, awaitable a, CompletionToken&& token, - typename enable_if< + typename constraint< (is_executor::value || execution::is_executor::value) && is_convertible::value - >::type*) + >::type) { return async_initiate( detail::initiate_co_spawn(AwaitableExecutor(ex)), @@ -234,11 +234,11 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE( CompletionToken, void(std::exception_ptr, T)) co_spawn(ExecutionContext& ctx, awaitable a, CompletionToken&& token, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type*) + >::type) { return (co_spawn)(ctx.get_executor(), std::move(a), std::forward(token)); @@ -251,11 +251,11 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE( CompletionToken, void(std::exception_ptr)) co_spawn(ExecutionContext& ctx, awaitable a, CompletionToken&& token, - typename enable_if< + typename constraint< is_convertible::value && is_convertible::value - >::type*) + >::type) { return (co_spawn)(ctx.get_executor(), std::move(a), std::forward(token)); @@ -267,9 +267,9 @@ template ::type>::type) co_spawn(const Executor& ex, F&& f, CompletionToken&& token, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type*) + >::type) { return async_initiate::type>::type>( @@ -284,9 +284,9 @@ template ::type>::type) co_spawn(ExecutionContext& ctx, F&& f, CompletionToken&& token, - typename enable_if< + typename constraint< is_convertible::value - >::type*) + >::type) { return (co_spawn)(ctx.get_executor(), std::forward(f), std::forward(token)); diff --git a/boost/asio/impl/compose.hpp b/boost/asio/impl/compose.hpp old mode 100755 new mode 100644 index 8b2bbd9da3..e5559c1785 --- a/boost/asio/impl/compose.hpp +++ b/boost/asio/impl/compose.hpp @@ -2,7 +2,7 @@ // impl/compose.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -501,7 +501,9 @@ namespace detail get_composed_io_executor(IoObject& io_object, typename enable_if< !is_executor::value - && !execution::is_executor::value + >::type* = 0, + typename enable_if< + !execution::is_executor::value >::type* = 0) { return io_object.get_executor(); diff --git a/boost/asio/impl/connect.hpp b/boost/asio/impl/connect.hpp old mode 100755 new mode 100644 index f24a739a46..231ef3d48b --- a/boost/asio/impl/connect.hpp +++ b/boost/asio/impl/connect.hpp @@ -2,7 +2,7 @@ // impl/connect.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -106,8 +106,8 @@ namespace detail template typename Protocol::endpoint connect(basic_socket& s, const EndpointSequence& endpoints, - typename enable_if::value>::type*) + typename constraint::value>::type) { boost::system::error_code ec; typename Protocol::endpoint result = connect(s, endpoints, ec); @@ -118,8 +118,8 @@ typename Protocol::endpoint connect(basic_socket& s, template typename Protocol::endpoint connect(basic_socket& s, const EndpointSequence& endpoints, boost::system::error_code& ec, - typename enable_if::value>::type*) + typename constraint::value>::type) { return detail::deref_connect_result( connect(s, endpoints.begin(), endpoints.end(), @@ -129,7 +129,7 @@ typename Protocol::endpoint connect(basic_socket& s, #if !defined(BOOST_ASIO_NO_DEPRECATED) template Iterator connect(basic_socket& s, Iterator begin, - typename enable_if::value>::type*) + typename constraint::value>::type) { boost::system::error_code ec; Iterator result = connect(s, begin, ec); @@ -140,7 +140,7 @@ Iterator connect(basic_socket& s, Iterator begin, template inline Iterator connect(basic_socket& s, Iterator begin, boost::system::error_code& ec, - typename enable_if::value>::type*) + typename constraint::value>::type) { return connect(s, begin, Iterator(), detail::default_connect_condition(), ec); } @@ -167,8 +167,8 @@ template typename Protocol::endpoint connect(basic_socket& s, const EndpointSequence& endpoints, ConnectCondition connect_condition, - typename enable_if::value>::type*) + typename constraint::value>::type) { boost::system::error_code ec; typename Protocol::endpoint result = connect( @@ -182,8 +182,8 @@ template & s, const EndpointSequence& endpoints, ConnectCondition connect_condition, boost::system::error_code& ec, - typename enable_if::value>::type*) + typename constraint::value>::type) { return detail::deref_connect_result( connect(s, endpoints.begin(), endpoints.end(), @@ -195,7 +195,7 @@ template Iterator connect(basic_socket& s, Iterator begin, ConnectCondition connect_condition, - typename enable_if::value>::type*) + typename constraint::value>::type) { boost::system::error_code ec; Iterator result = connect(s, begin, connect_condition, ec); @@ -208,7 +208,7 @@ template & s, Iterator begin, ConnectCondition connect_condition, boost::system::error_code& ec, - typename enable_if::value>::type*) + typename constraint::value>::type) { return connect(s, begin, Iterator(), connect_condition, ec); } @@ -817,8 +817,8 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(RangeConnectHandler, async_connect(basic_socket& s, const EndpointSequence& endpoints, BOOST_ASIO_MOVE_ARG(RangeConnectHandler) handler, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( @@ -834,7 +834,7 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, void (boost::system::error_code, Iterator)) async_connect(basic_socket& s, Iterator begin, BOOST_ASIO_MOVE_ARG(IteratorConnectHandler) handler, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( @@ -866,8 +866,8 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(RangeConnectHandler, async_connect(basic_socket& s, const EndpointSequence& endpoints, ConnectCondition connect_condition, BOOST_ASIO_MOVE_ARG(RangeConnectHandler) handler, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( @@ -885,7 +885,7 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, async_connect(basic_socket& s, Iterator begin, ConnectCondition connect_condition, BOOST_ASIO_MOVE_ARG(IteratorConnectHandler) handler, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( diff --git a/boost/asio/impl/defer.hpp b/boost/asio/impl/defer.hpp old mode 100755 new mode 100644 index 71f6a8828e..7537afe29f --- a/boost/asio/impl/defer.hpp +++ b/boost/asio/impl/defer.hpp @@ -2,7 +2,7 @@ // impl/defer.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -104,7 +104,8 @@ public: execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< !detail::is_work_dispatcher_required< typename decay::type, Executor @@ -130,7 +131,8 @@ public: execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< detail::is_work_dispatcher_required< typename decay::type, Executor @@ -161,7 +163,8 @@ public: !execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< !detail::is_work_dispatcher_required< typename decay::type, Executor @@ -182,7 +185,8 @@ public: !execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< detail::is_work_dispatcher_required< typename decay::type, Executor @@ -221,9 +225,9 @@ template BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token, - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type*) + >::type) { return async_initiate( detail::initiate_defer_with_executor(ex), token); @@ -233,8 +237,8 @@ template inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(CompletionToken) token, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( detail::initiate_defer_with_executor< diff --git a/boost/asio/impl/detached.hpp b/boost/asio/impl/detached.hpp old mode 100755 new mode 100644 index 3329c05e2c..38e057cc78 --- a/boost/asio/impl/detached.hpp +++ b/boost/asio/impl/detached.hpp @@ -2,7 +2,7 @@ // impl/detached.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/dispatch.hpp b/boost/asio/impl/dispatch.hpp old mode 100755 new mode 100644 index d401aab2e7..d0357d4d36 --- a/boost/asio/impl/dispatch.hpp +++ b/boost/asio/impl/dispatch.hpp @@ -2,7 +2,7 @@ // impl/dispatch.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -101,7 +101,8 @@ public: execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< !detail::is_work_dispatcher_required< typename decay::type, Executor @@ -126,7 +127,8 @@ public: execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< detail::is_work_dispatcher_required< typename decay::type, Executor @@ -156,7 +158,8 @@ public: !execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< !detail::is_work_dispatcher_required< typename decay::type, Executor @@ -177,7 +180,8 @@ public: !execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< detail::is_work_dispatcher_required< typename decay::type, Executor @@ -216,9 +220,9 @@ template BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token, - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type*) + >::type) { return async_initiate( detail::initiate_dispatch_with_executor(ex), token); @@ -228,8 +232,8 @@ template inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(CompletionToken) token, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( detail::initiate_dispatch_with_executor< diff --git a/boost/asio/impl/error.ipp b/boost/asio/impl/error.ipp old mode 100755 new mode 100644 index 5526208aee..b357e22126 --- a/boost/asio/impl/error.ipp +++ b/boost/asio/impl/error.ipp @@ -2,7 +2,7 @@ // impl/error.ipp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/execution_context.hpp b/boost/asio/impl/execution_context.hpp old mode 100755 new mode 100644 index b8ea6c4827..66874c0425 --- a/boost/asio/impl/execution_context.hpp +++ b/boost/asio/impl/execution_context.hpp @@ -2,7 +2,7 @@ // impl/execution_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/execution_context.ipp b/boost/asio/impl/execution_context.ipp old mode 100755 new mode 100644 index 4ce039ae02..41a6741b27 --- a/boost/asio/impl/execution_context.ipp +++ b/boost/asio/impl/execution_context.ipp @@ -2,7 +2,7 @@ // impl/execution_context.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/executor.hpp b/boost/asio/impl/executor.hpp old mode 100755 new mode 100644 index 261ca26347..964bb53e44 --- a/boost/asio/impl/executor.hpp +++ b/boost/asio/impl/executor.hpp @@ -2,7 +2,7 @@ // impl/executor.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -22,7 +22,6 @@ #include #include #include -#include #include #include diff --git a/boost/asio/impl/executor.ipp b/boost/asio/impl/executor.ipp old mode 100755 new mode 100644 index 340578d6e6..5083dcb1b8 --- a/boost/asio/impl/executor.ipp +++ b/boost/asio/impl/executor.ipp @@ -2,7 +2,7 @@ // impl/executor.ipp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/handler_alloc_hook.ipp b/boost/asio/impl/handler_alloc_hook.ipp old mode 100755 new mode 100644 index 1e5ca9f81a..531769bc97 --- a/boost/asio/impl/handler_alloc_hook.ipp +++ b/boost/asio/impl/handler_alloc_hook.ipp @@ -2,7 +2,7 @@ // impl/handler_alloc_hook.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -33,7 +33,7 @@ asio_handler_allocate(std::size_t size, ...) return asio_handler_allocate_is_no_longer_used(); #elif !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) return detail::thread_info_base::allocate( - detail::thread_context::thread_call_stack::top(), size); + detail::thread_context::top_of_thread_call_stack(), size); #else // !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) return ::operator new(size); #endif // !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) @@ -48,7 +48,7 @@ asio_handler_deallocate(void* pointer, std::size_t size, ...) return asio_handler_deallocate_is_no_longer_used(); #elif !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) detail::thread_info_base::deallocate( - detail::thread_context::thread_call_stack::top(), pointer, size); + detail::thread_context::top_of_thread_call_stack(), pointer, size); #else // !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) (void)size; ::operator delete(pointer); diff --git a/boost/asio/impl/io_context.hpp b/boost/asio/impl/io_context.hpp old mode 100755 new mode 100644 index d5f30d1bd8..0b4148916e --- a/boost/asio/impl/io_context.hpp +++ b/boost/asio/impl/io_context.hpp @@ -2,7 +2,7 @@ // impl/io_context.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -245,11 +244,16 @@ io_context::basic_executor_type::operator=( { if (this != &other) { + io_context* old_io_context = io_context_; io_context_ = other.io_context_; allocator_ = std::move(other.allocator_); bits_ = other.bits_; if (Bits & outstanding_work_tracked) + { other.io_context_ = 0; + if (old_io_context) + old_io_context->impl_.work_finished(); + } } return *this; } diff --git a/boost/asio/impl/io_context.ipp b/boost/asio/impl/io_context.ipp old mode 100755 new mode 100644 index 5668d3968c..02ec0455f2 --- a/boost/asio/impl/io_context.ipp +++ b/boost/asio/impl/io_context.ipp @@ -2,7 +2,7 @@ // impl/io_context.ipp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/multiple_exceptions.ipp b/boost/asio/impl/multiple_exceptions.ipp index c8530bb912..02d4972216 100644 --- a/boost/asio/impl/multiple_exceptions.ipp +++ b/boost/asio/impl/multiple_exceptions.ipp @@ -2,7 +2,7 @@ // impl/multiple_exceptions.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/post.hpp b/boost/asio/impl/post.hpp old mode 100755 new mode 100644 index 7b3ec93248..b85965c8b3 --- a/boost/asio/impl/post.hpp +++ b/boost/asio/impl/post.hpp @@ -2,7 +2,7 @@ // impl/post.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -104,7 +104,8 @@ public: execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< !detail::is_work_dispatcher_required< typename decay::type, Executor @@ -130,7 +131,8 @@ public: execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< detail::is_work_dispatcher_required< typename decay::type, Executor @@ -161,7 +163,8 @@ public: !execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< !detail::is_work_dispatcher_required< typename decay::type, Executor @@ -182,7 +185,8 @@ public: !execution::is_executor< typename conditional::type >::value - && + >::type* = 0, + typename enable_if< detail::is_work_dispatcher_required< typename decay::type, Executor @@ -221,9 +225,9 @@ template BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) post( const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token, - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type*) + >::type) { return async_initiate( detail::initiate_post_with_executor(ex), token); @@ -233,8 +237,8 @@ template inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) post( ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(CompletionToken) token, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_initiate( detail::initiate_post_with_executor< diff --git a/boost/asio/impl/read.hpp b/boost/asio/impl/read.hpp old mode 100755 new mode 100644 index e26f466180..aec2afc5de --- a/boost/asio/impl/read.hpp +++ b/boost/asio/impl/read.hpp @@ -2,7 +2,7 @@ // impl/read.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -58,7 +58,7 @@ namespace detail else break; } - return tmp.total_consumed();; + return tmp.total_consumed(); } } // namespace detail @@ -66,9 +66,9 @@ template std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type*) + >::type) { return detail::read_buffer_sequence(s, buffers, boost::asio::buffer_sequence_begin(buffers), @@ -77,9 +77,9 @@ std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, template inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read(s, buffers, transfer_all(), ec); @@ -90,9 +90,9 @@ inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, template inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type*) + >::type) { return read(s, buffers, transfer_all(), ec); } @@ -101,9 +101,9 @@ template inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read(s, buffers, @@ -119,10 +119,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { typename decay::type b( BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers)); @@ -151,10 +153,12 @@ std::size_t read(SyncReadStream& s, template inline std::size_t read(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read(s, @@ -167,10 +171,12 @@ template inline std::size_t read(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return read(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), transfer_all(), ec); @@ -181,10 +187,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read(s, @@ -240,9 +248,9 @@ template std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { DynamicBuffer_v2& b = buffers; @@ -272,9 +280,9 @@ std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, template inline std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read(s, @@ -286,9 +294,9 @@ inline std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, template inline std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return read(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), transfer_all(), ec); @@ -298,9 +306,9 @@ template inline std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read(s, @@ -565,9 +573,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read(AsyncReadStream& s, const MutableBufferSequence& buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type*) + >::type) { return async_initiate( @@ -582,9 +590,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void (boost::system::error_code, std::size_t)) async_read(AsyncReadStream& s, const MutableBufferSequence& buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type*) + >::type) { return async_initiate( @@ -845,10 +853,12 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_read(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), @@ -865,10 +875,12 @@ async_read(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_initiate( @@ -1167,9 +1179,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void (boost::system::error_code, std::size_t)) async_read(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_read(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), @@ -1185,9 +1197,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read(AsyncReadStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_initiate( diff --git a/boost/asio/impl/read_at.hpp b/boost/asio/impl/read_at.hpp old mode 100755 new mode 100644 index d8d4d99b33..64f1953051 --- a/boost/asio/impl/read_at.hpp +++ b/boost/asio/impl/read_at.hpp @@ -2,7 +2,7 @@ // impl/read_at.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -62,7 +62,7 @@ namespace detail else break; } - return tmp.total_consumed();; + return tmp.total_consumed(); } } // namespace detail diff --git a/boost/asio/impl/read_until.hpp b/boost/asio/impl/read_until.hpp old mode 100755 new mode 100644 index b0fc1b636e..2b0185816f --- a/boost/asio/impl/read_until.hpp +++ b/boost/asio/impl/read_until.hpp @@ -2,7 +2,7 @@ // impl/read_until.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -78,10 +78,12 @@ namespace detail template inline std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -94,10 +96,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { typename decay::type b( BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers)); @@ -148,10 +152,12 @@ template inline std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -164,10 +170,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { typename decay::type b( BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers)); @@ -230,10 +238,12 @@ template inline std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, const boost::regex& expr, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -246,10 +256,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, const boost::regex& expr, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { typename decay::type b( BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers)); @@ -314,11 +326,15 @@ template ::value - && is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + is_dynamic_buffer_v1::type>::value + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -333,11 +349,15 @@ template ::value - && is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + is_dynamic_buffer_v1::type>::value + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { typename decay::type b( BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers)); @@ -444,7 +464,7 @@ inline std::size_t read_until(SyncReadStream& s, template inline std::size_t read_until(SyncReadStream& s, boost::asio::basic_streambuf& b, MatchCondition match_condition, - typename enable_if::value>::type*) + typename constraint::value>::type) { return read_until(s, basic_streambuf_ref(b), match_condition); } @@ -453,7 +473,7 @@ template inline std::size_t read_until(SyncReadStream& s, boost::asio::basic_streambuf& b, MatchCondition match_condition, boost::system::error_code& ec, - typename enable_if::value>::type*) + typename constraint::value>::type) { return read_until(s, basic_streambuf_ref(b), match_condition, ec); } @@ -465,9 +485,9 @@ inline std::size_t read_until(SyncReadStream& s, template inline std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -479,9 +499,9 @@ inline std::size_t read_until(SyncReadStream& s, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { DynamicBuffer_v2& b = buffers; @@ -534,9 +554,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, template inline std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -548,9 +568,9 @@ inline std::size_t read_until(SyncReadStream& s, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { DynamicBuffer_v2& b = buffers; @@ -615,9 +635,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, template inline std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, const boost::regex& expr, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -629,9 +649,9 @@ inline std::size_t read_until(SyncReadStream& s, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, const boost::regex& expr, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { DynamicBuffer_v2& b = buffers; @@ -698,10 +718,12 @@ template inline std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, MatchCondition match_condition, - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v2::value - >::type*) + >::type, + typename constraint< + is_dynamic_buffer_v2::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = read_until(s, @@ -715,10 +737,12 @@ template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, MatchCondition match_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v2::value - >::type*) + >::type, + typename constraint< + is_dynamic_buffer_v2::value + >::type) { DynamicBuffer_v2& b = buffers; @@ -1062,10 +1086,12 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_initiate( @@ -1370,10 +1396,12 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_initiate( @@ -1684,10 +1712,12 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, const boost::regex& expr, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_initiate( @@ -1996,11 +2026,15 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + is_dynamic_buffer_v1::type>::value + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_initiate( @@ -2062,7 +2096,7 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read_until(AsyncReadStream& s, boost::asio::basic_streambuf& b, MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if::value>::type*) + typename constraint::value>::type) { return async_read_until(s, basic_streambuf_ref(b), match_condition, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); @@ -2363,9 +2397,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void (boost::system::error_code, std::size_t)) async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_initiate( @@ -2678,9 +2712,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_initiate( @@ -2998,9 +3032,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void (boost::system::error_code, std::size_t)) async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, const boost::regex& expr, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_initiate( @@ -3316,10 +3350,12 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void (boost::system::error_code, std::size_t)) async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler, - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v2::value - >::type*) + >::type, + typename constraint< + is_dynamic_buffer_v2::value + >::type) { return async_initiate( diff --git a/boost/asio/impl/redirect_error.hpp b/boost/asio/impl/redirect_error.hpp old mode 100755 new mode 100644 index a358b47cb5..d3f3286aec --- a/boost/asio/impl/redirect_error.hpp +++ b/boost/asio/impl/redirect_error.hpp @@ -2,7 +2,7 @@ // impl/redirect_error.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -358,6 +358,7 @@ struct async_result, Signature> template struct associated_executor, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; diff --git a/boost/asio/impl/serial_port_base.hpp b/boost/asio/impl/serial_port_base.hpp old mode 100755 new mode 100644 index a2bcc2ea84..c42a083cee --- a/boost/asio/impl/serial_port_base.hpp +++ b/boost/asio/impl/serial_port_base.hpp @@ -2,7 +2,7 @@ // impl/serial_port_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/impl/serial_port_base.ipp b/boost/asio/impl/serial_port_base.ipp old mode 100755 new mode 100644 index cf7e1418f3..6657c8ace4 --- a/boost/asio/impl/serial_port_base.ipp +++ b/boost/asio/impl/serial_port_base.ipp @@ -2,7 +2,7 @@ // impl/serial_port_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/impl/spawn.hpp b/boost/asio/impl/spawn.hpp old mode 100755 new mode 100644 index f4e81d7f46..fdbe28d5be --- a/boost/asio/impl/spawn.hpp +++ b/boost/asio/impl/spawn.hpp @@ -2,7 +2,7 @@ // impl/spawn.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -310,6 +310,7 @@ struct associated_allocator, Allocator> template struct associated_executor, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; @@ -434,10 +435,10 @@ template void spawn(BOOST_ASIO_MOVE_ARG(Handler) handler, BOOST_ASIO_MOVE_ARG(Function) function, const boost::coroutines::attributes& attributes, - typename enable_if< + typename constraint< !is_executor::type>::value && !execution::is_executor::type>::value && - !is_convertible::value>::type*) + !is_convertible::value>::type) { typedef typename decay::type handler_type; typedef typename decay::type function_type; @@ -475,9 +476,9 @@ template inline void spawn(const Executor& ex, BOOST_ASIO_MOVE_ARG(Function) function, const boost::coroutines::attributes& attributes, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type*) + >::type) { boost::asio::spawn(boost::asio::strand(ex), BOOST_ASIO_MOVE_CAST(Function)(function), attributes); @@ -511,8 +512,8 @@ template inline void spawn(ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(Function) function, const boost::coroutines::attributes& attributes, - typename enable_if::value>::type*) + typename constraint::value>::type) { boost::asio::spawn(ctx.get_executor(), BOOST_ASIO_MOVE_CAST(Function)(function), attributes); diff --git a/boost/asio/impl/src.hpp b/boost/asio/impl/src.hpp old mode 100755 new mode 100644 index 60e8448cdd..c7e8e386dd --- a/boost/asio/impl/src.hpp +++ b/boost/asio/impl/src.hpp @@ -2,7 +2,7 @@ // impl/src.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include diff --git a/boost/asio/impl/system_context.hpp b/boost/asio/impl/system_context.hpp old mode 100755 new mode 100644 index 62527696c5..653113e985 --- a/boost/asio/impl/system_context.hpp +++ b/boost/asio/impl/system_context.hpp @@ -2,7 +2,7 @@ // impl/system_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/system_context.ipp b/boost/asio/impl/system_context.ipp old mode 100755 new mode 100644 index 8eaba70b1f..98dd0bfe72 --- a/boost/asio/impl/system_context.ipp +++ b/boost/asio/impl/system_context.ipp @@ -2,7 +2,7 @@ // impl/system_context.ipp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/system_executor.hpp b/boost/asio/impl/system_executor.hpp old mode 100755 new mode 100644 index 95333966c5..2cffce741b --- a/boost/asio/impl/system_executor.hpp +++ b/boost/asio/impl/system_executor.hpp @@ -2,7 +2,7 @@ // impl/system_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -17,7 +17,6 @@ #include #include -#include #include #include diff --git a/boost/asio/impl/thread_pool.hpp b/boost/asio/impl/thread_pool.hpp old mode 100755 new mode 100644 index d61b2bbd7f..fb2a5f3e9a --- a/boost/asio/impl/thread_pool.hpp +++ b/boost/asio/impl/thread_pool.hpp @@ -2,7 +2,7 @@ // impl/thread_pool.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -77,11 +76,16 @@ thread_pool::basic_executor_type::operator=( { if (this != &other) { + thread_pool* old_thread_pool = pool_; pool_ = other.pool_; allocator_ = std::move(other.allocator_); bits_ = other.bits_; if (Bits & outstanding_work_tracked) + { other.pool_ = 0; + if (old_thread_pool) + old_thread_pool->scheduler_.work_finished(); + } } return *this; } diff --git a/boost/asio/impl/thread_pool.ipp b/boost/asio/impl/thread_pool.ipp old mode 100755 new mode 100644 index 95dc570729..0fdfdffc5d --- a/boost/asio/impl/thread_pool.ipp +++ b/boost/asio/impl/thread_pool.ipp @@ -2,7 +2,7 @@ // impl/thread_pool.ipp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/use_awaitable.hpp b/boost/asio/impl/use_awaitable.hpp old mode 100755 new mode 100644 index 09025182c9..39a91ceae2 --- a/boost/asio/impl/use_awaitable.hpp +++ b/boost/asio/impl/use_awaitable.hpp @@ -2,7 +2,7 @@ // impl/use_awaitable.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -229,6 +229,19 @@ public: #if !defined(GENERATING_DOCUMENTATION) +#if defined(_MSC_VER) +template +T dummy_return() +{ + return std::move(*static_cast(nullptr)); +} + +template <> +inline void dummy_return() +{ +} +#endif // defined(_MSC_VER) + template class async_result, R(Args...)> { @@ -237,19 +250,6 @@ public: Executor, typename decay::type...> handler_type; typedef typename handler_type::awaitable_type return_type; -#if defined(_MSC_VER) - template - static T dummy_return() - { - return std::move(*static_cast(nullptr)); - } - - template <> - static void dummy_return() - { - } -#endif // defined(_MSC_VER) - template static return_type initiate(Initiation initiation, use_awaitable_t u, InitArgs... args) diff --git a/boost/asio/impl/use_future.hpp b/boost/asio/impl/use_future.hpp old mode 100755 new mode 100644 index ac3751a9c3..dc5f0d03e2 --- a/boost/asio/impl/use_future.hpp +++ b/boost/asio/impl/use_future.hpp @@ -2,7 +2,7 @@ // impl/use_future.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/impl/write.hpp b/boost/asio/impl/write.hpp old mode 100755 new mode 100644 index e9beef941b..848025b7c1 --- a/boost/asio/impl/write.hpp +++ b/boost/asio/impl/write.hpp @@ -2,7 +2,7 @@ // impl/write.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -56,7 +56,7 @@ namespace detail else break; } - return tmp.total_consumed();; + return tmp.total_consumed(); } } // namespace detail @@ -64,9 +64,9 @@ template inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type*) + >::type) { return detail::write_buffer_sequence(s, buffers, boost::asio::buffer_sequence_begin(buffers), @@ -75,9 +75,9 @@ inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, template inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = write(s, buffers, transfer_all(), ec); @@ -88,9 +88,9 @@ inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, template inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type*) + >::type) { return write(s, buffers, transfer_all(), ec); } @@ -99,9 +99,9 @@ template inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = write(s, buffers, @@ -117,10 +117,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { typename decay::type b( BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers)); @@ -134,10 +136,12 @@ std::size_t write(SyncWriteStream& s, template inline std::size_t write(SyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = write(s, @@ -151,10 +155,12 @@ template inline std::size_t write(SyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return write(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), transfer_all(), ec); @@ -165,10 +171,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = write(s, @@ -224,9 +232,9 @@ template std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { std::size_t bytes_transferred = write(s, buffers.data(0, buffers.size()), BOOST_ASIO_MOVE_CAST(CompletionCondition)(completion_condition), ec); @@ -236,9 +244,9 @@ std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, template inline std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = write(s, @@ -251,9 +259,9 @@ inline std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, template inline std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return write(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), transfer_all(), ec); @@ -263,9 +271,9 @@ template inline std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { boost::system::error_code ec; std::size_t bytes_transferred = write(s, @@ -530,9 +538,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type*) + >::type) { return async_initiate( @@ -548,9 +556,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, void (boost::system::error_code, std::size_t)) async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type*) + >::type) { return async_initiate( @@ -781,10 +789,12 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, async_write(AsyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_write(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), @@ -801,10 +811,12 @@ async_write(AsyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type*) + >::type, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type) { return async_initiate( @@ -1069,9 +1081,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, void (boost::system::error_code, std::size_t)) async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_write(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), @@ -1087,9 +1099,9 @@ inline BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type*) + >::type) { return async_initiate( diff --git a/boost/asio/impl/write_at.hpp b/boost/asio/impl/write_at.hpp old mode 100755 new mode 100644 index 584684d2a4..32c5ee82da --- a/boost/asio/impl/write_at.hpp +++ b/boost/asio/impl/write_at.hpp @@ -2,7 +2,7 @@ // impl/write_at.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -60,7 +60,7 @@ namespace detail else break; } - return tmp.total_consumed();; + return tmp.total_consumed(); } } // namespace detail diff --git a/boost/asio/io_context.hpp b/boost/asio/io_context.hpp old mode 100755 new mode 100644 index 6a64ef514a..907da228a2 --- a/boost/asio/io_context.hpp +++ b/boost/asio/io_context.hpp @@ -2,7 +2,7 @@ // io_context.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -714,6 +714,12 @@ public: basic_executor_type&& other) BOOST_ASIO_NOEXCEPT; #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_require_fn::impl; + friend struct asio_prefer_fn::impl; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Obtain an executor with the @c blocking.possibly property. /** * Do not call this function directly. It is intended for use with the @@ -853,6 +859,13 @@ public: io_context_, std::allocator(), bits_); } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_query_fn::impl; + friend struct boost::asio::execution::detail::mapping_t<0>; + friend struct boost::asio::execution::detail::outstanding_work_t<0>; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Query the current value of the @c mapping property. /** * Do not call this function directly. It is intended for use with the @@ -975,6 +988,7 @@ public: return allocator_; } +public: /// Determine whether the io_context is running in the current thread. /** * @return @c true if the current thread is running the io_context. Otherwise @@ -1006,6 +1020,11 @@ public: || a.bits_ != b.bits_; } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_execution_execute_fn::impl; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Execution function. /** * Do not call this function directly. It is intended for use with the @@ -1019,6 +1038,7 @@ public: void execute(BOOST_ASIO_MOVE_ARG(Function) f) const; #if !defined(BOOST_ASIO_NO_TS_EXECUTORS) +public: /// Obtain the underlying execution context. io_context& context() const BOOST_ASIO_NOEXCEPT; diff --git a/boost/asio/io_context_strand.hpp b/boost/asio/io_context_strand.hpp old mode 100755 new mode 100644 index 5480919f68..b03571fe1b --- a/boost/asio/io_context_strand.hpp +++ b/boost/asio/io_context_strand.hpp @@ -2,7 +2,7 @@ // io_context_strand.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/io_service.hpp b/boost/asio/io_service.hpp old mode 100755 new mode 100644 index cf0b3b7b38..aa8af62439 --- a/boost/asio/io_service.hpp +++ b/boost/asio/io_service.hpp @@ -2,7 +2,7 @@ // io_service.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/io_service_strand.hpp b/boost/asio/io_service_strand.hpp old mode 100755 new mode 100644 index be2ee7ca53..2bcf8fbd6e --- a/boost/asio/io_service_strand.hpp +++ b/boost/asio/io_service_strand.hpp @@ -2,7 +2,7 @@ // io_service_strand.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/address.hpp b/boost/asio/ip/address.hpp old mode 100755 new mode 100644 index 5767450e70..0fcbbf2b0f --- a/boost/asio/ip/address.hpp +++ b/boost/asio/ip/address.hpp @@ -2,7 +2,7 @@ // ip/address.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -25,6 +25,10 @@ #include #include +#if defined(BOOST_ASIO_HAS_STD_HASH) +# include +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #if !defined(BOOST_ASIO_NO_IOSTREAM) # include #endif // !defined(BOOST_ASIO_NO_IOSTREAM) @@ -260,6 +264,24 @@ std::basic_ostream& operator<<( } // namespace asio } // namespace boost +#if defined(BOOST_ASIO_HAS_STD_HASH) +namespace std { + +template <> +struct hash +{ + std::size_t operator()(const boost::asio::ip::address& addr) + const BOOST_ASIO_NOEXCEPT + { + return addr.is_v4() + ? std::hash()(addr.to_v4()) + : std::hash()(addr.to_v6()); + } +}; + +} // namespace std +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #include #include diff --git a/boost/asio/ip/address_v4.hpp b/boost/asio/ip/address_v4.hpp old mode 100755 new mode 100644 index 3938dde1a7..19d5b313a8 --- a/boost/asio/ip/address_v4.hpp +++ b/boost/asio/ip/address_v4.hpp @@ -2,7 +2,7 @@ // ip/address_v4.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -24,6 +24,10 @@ #include #include +#if defined(BOOST_ASIO_HAS_STD_HASH) +# include +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #if !defined(BOOST_ASIO_NO_IOSTREAM) # include #endif // !defined(BOOST_ASIO_NO_IOSTREAM) @@ -327,6 +331,22 @@ std::basic_ostream& operator<<( } // namespace asio } // namespace boost +#if defined(BOOST_ASIO_HAS_STD_HASH) +namespace std { + +template <> +struct hash +{ + std::size_t operator()(const boost::asio::ip::address_v4& addr) + const BOOST_ASIO_NOEXCEPT + { + return std::hash()(addr.to_uint()); + } +}; + +} // namespace std +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #include #include diff --git a/boost/asio/ip/address_v4_iterator.hpp b/boost/asio/ip/address_v4_iterator.hpp old mode 100755 new mode 100644 index ec87fd75e2..df67a8bd03 --- a/boost/asio/ip/address_v4_iterator.hpp +++ b/boost/asio/ip/address_v4_iterator.hpp @@ -2,7 +2,7 @@ // ip/address_v4_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/address_v4_range.hpp b/boost/asio/ip/address_v4_range.hpp old mode 100755 new mode 100644 index 159288eb5f..a939aedc8b --- a/boost/asio/ip/address_v4_range.hpp +++ b/boost/asio/ip/address_v4_range.hpp @@ -2,7 +2,7 @@ // ip/address_v4_range.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/address_v6.hpp b/boost/asio/ip/address_v6.hpp old mode 100755 new mode 100644 index bdcb929347..4f21d96948 --- a/boost/asio/ip/address_v6.hpp +++ b/boost/asio/ip/address_v6.hpp @@ -2,7 +2,7 @@ // ip/address_v6.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -18,12 +18,17 @@ #include #include #include +#include #include #include #include #include #include +#if defined(BOOST_ASIO_HAS_STD_HASH) +# include +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #if !defined(BOOST_ASIO_NO_IOSTREAM) # include #endif // !defined(BOOST_ASIO_NO_IOSTREAM) @@ -36,6 +41,9 @@ namespace ip { template class basic_address_iterator; +/// Type used for storing IPv6 scope IDs. +typedef uint_least32_t scope_id_type; + /// Implements IP version 6 style addresses. /** * The boost::asio::ip::address_v6 class provides the ability to use and @@ -64,7 +72,7 @@ public: /// Construct an address from raw bytes and scope ID. BOOST_ASIO_DECL explicit address_v6(const bytes_type& bytes, - unsigned long scope_id = 0); + scope_id_type scope_id = 0); /// Copy constructor. BOOST_ASIO_DECL address_v6(const address_v6& other) BOOST_ASIO_NOEXCEPT; @@ -87,7 +95,7 @@ public: /** * Returns the scope ID associated with the IPv6 address. */ - unsigned long scope_id() const BOOST_ASIO_NOEXCEPT + scope_id_type scope_id() const BOOST_ASIO_NOEXCEPT { return scope_id_; } @@ -96,7 +104,7 @@ public: /** * Modifies the scope ID associated with the IPv6 address. */ - void scope_id(unsigned long id) BOOST_ASIO_NOEXCEPT + void scope_id(scope_id_type id) BOOST_ASIO_NOEXCEPT { scope_id_ = id; } @@ -233,7 +241,7 @@ private: boost::asio::detail::in6_addr_type addr_; // The scope ID associated with the address. - unsigned long scope_id_; + scope_id_type scope_id_; }; /// Create an IPv6 address from raw bytes and scope ID. @@ -241,7 +249,7 @@ private: * @relates address_v6 */ inline address_v6 make_address_v6(const address_v6::bytes_type& bytes, - unsigned long scope_id = 0) + scope_id_type scope_id = 0) { return address_v6(bytes, scope_id); } @@ -333,6 +341,39 @@ std::basic_ostream& operator<<( } // namespace asio } // namespace boost +#if defined(BOOST_ASIO_HAS_STD_HASH) +namespace std { + +template <> +struct hash +{ + std::size_t operator()(const boost::asio::ip::address_v6& addr) + const BOOST_ASIO_NOEXCEPT + { + const boost::asio::ip::address_v6::bytes_type bytes = addr.to_bytes(); + std::size_t result = static_cast(addr.scope_id()); + combine_4_bytes(result, &bytes[0]); + combine_4_bytes(result, &bytes[4]); + combine_4_bytes(result, &bytes[8]); + combine_4_bytes(result, &bytes[12]); + return result; + } + +private: + static void combine_4_bytes(std::size_t& seed, const unsigned char* bytes) + { + const std::size_t bytes_hash = + (static_cast(bytes[0]) << 24) | + (static_cast(bytes[1]) << 16) | + (static_cast(bytes[2]) << 8) | + (static_cast(bytes[3])); + seed ^= bytes_hash + 0x9e3779b9 + (seed << 6) + (seed >> 2); + } +}; + +} // namespace std +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #include #include diff --git a/boost/asio/ip/address_v6_iterator.hpp b/boost/asio/ip/address_v6_iterator.hpp old mode 100755 new mode 100644 index d3a4d2e834..49c9bde8fd --- a/boost/asio/ip/address_v6_iterator.hpp +++ b/boost/asio/ip/address_v6_iterator.hpp @@ -2,7 +2,7 @@ // ip/address_v6_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/address_v6_range.hpp b/boost/asio/ip/address_v6_range.hpp old mode 100755 new mode 100644 index 2edb0ad175..745be4fdf6 --- a/boost/asio/ip/address_v6_range.hpp +++ b/boost/asio/ip/address_v6_range.hpp @@ -2,7 +2,7 @@ // ip/address_v6_range.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/bad_address_cast.hpp b/boost/asio/ip/bad_address_cast.hpp old mode 100755 new mode 100644 index 34407457db..dd12a9f1d2 --- a/boost/asio/ip/bad_address_cast.hpp +++ b/boost/asio/ip/bad_address_cast.hpp @@ -2,7 +2,7 @@ // ip/bad_address_cast.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/basic_endpoint.hpp b/boost/asio/ip/basic_endpoint.hpp old mode 100755 new mode 100644 index cc43e7e5bd..e7b66fc1f6 --- a/boost/asio/ip/basic_endpoint.hpp +++ b/boost/asio/ip/basic_endpoint.hpp @@ -2,7 +2,7 @@ // ip/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -16,9 +16,14 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include +#include #include #include +#if defined(BOOST_ASIO_HAS_STD_HASH) +# include +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #if !defined(BOOST_ASIO_NO_IOSTREAM) # include #endif // !defined(BOOST_ASIO_NO_IOSTREAM) @@ -29,6 +34,9 @@ namespace boost { namespace asio { namespace ip { +/// Type used for storing port numbers. +typedef uint_least16_t port_type; + /// Describes an endpoint for a version-independent IP socket. /** * The boost::asio::ip::basic_endpoint class template describes an endpoint that @@ -79,7 +87,7 @@ public: * @endcode */ basic_endpoint(const InternetProtocol& internet_protocol, - unsigned short port_num) BOOST_ASIO_NOEXCEPT + port_type port_num) BOOST_ASIO_NOEXCEPT : impl_(internet_protocol.family(), port_num) { } @@ -88,7 +96,7 @@ public: /// constructor may be used for accepting connections on a specific interface /// or for making a connection to a remote endpoint. basic_endpoint(const boost::asio::ip::address& addr, - unsigned short port_num) BOOST_ASIO_NOEXCEPT + port_type port_num) BOOST_ASIO_NOEXCEPT : impl_(addr, port_num) { } @@ -163,14 +171,14 @@ public: /// Get the port associated with the endpoint. The port number is always in /// the host's byte order. - unsigned short port() const BOOST_ASIO_NOEXCEPT + port_type port() const BOOST_ASIO_NOEXCEPT { return impl_.port(); } /// Set the port associated with the endpoint. The port number is always in /// the host's byte order. - void port(unsigned short port_num) BOOST_ASIO_NOEXCEPT + void port(port_type port_num) BOOST_ASIO_NOEXCEPT { impl_.port(port_num); } @@ -259,6 +267,25 @@ std::basic_ostream& operator<<( } // namespace asio } // namespace boost +#if defined(BOOST_ASIO_HAS_STD_HASH) +namespace std { + +template +struct hash > +{ + std::size_t operator()( + const boost::asio::ip::basic_endpoint& ep) + const BOOST_ASIO_NOEXCEPT + { + std::size_t hash1 = std::hash()(ep.address()); + std::size_t hash2 = std::hash()(ep.port()); + return hash1 ^ (hash2 + 0x9e3779b9 + (hash1 << 6) + (hash1 >> 2)); + } +}; + +} // namespace std +#endif // defined(BOOST_ASIO_HAS_STD_HASH) + #include #include diff --git a/boost/asio/ip/basic_resolver.hpp b/boost/asio/ip/basic_resolver.hpp old mode 100755 new mode 100644 index ce0f9985fd..66ecfdb7b2 --- a/boost/asio/ip/basic_resolver.hpp +++ b/boost/asio/ip/basic_resolver.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -106,7 +106,7 @@ public: * resolver. */ explicit basic_resolver(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -120,10 +120,10 @@ public: */ template explicit basic_resolver(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { } @@ -143,6 +143,29 @@ public: { } + // All resolvers have access to each other's implementations. + template + friend class basic_resolver; + + /// Move-construct a basic_resolver from another. + /** + * This constructor moves a resolver from one object to another. + * + * @param other The other basic_resolver 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_resolver(const executor_type&) constructor. + */ + template + basic_resolver(basic_resolver&& other, + typename constraint< + is_convertible::value + >::type = 0) + : impl_(std::move(other.impl_)) + { + } + /// Move-assign a basic_resolver from another. /** * This assignment operator moves a resolver from one object to another. @@ -160,6 +183,29 @@ public: impl_ = std::move(other.impl_); return *this; } + + /// Move-assign a basic_resolver from another. + /** + * This assignment operator moves a resolver from one object to another. + * Cancels any outstanding asynchronous operations associated with the target + * object. + * + * @param other The other basic_resolver 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_resolver(const executor_type&) constructor. + */ + template + typename constraint< + is_convertible::value, + basic_resolver& + >::type operator=(basic_resolver&& other) + { + basic_resolver tmp(std::move(other)); + impl_ = std::move(tmp.impl_); + return *this; + } #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Destroys the resolver. diff --git a/boost/asio/ip/basic_resolver_entry.hpp b/boost/asio/ip/basic_resolver_entry.hpp old mode 100755 new mode 100644 index 55606ace5e..cb6d46f1b9 --- a/boost/asio/ip/basic_resolver_entry.hpp +++ b/boost/asio/ip/basic_resolver_entry.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_entry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/basic_resolver_iterator.hpp b/boost/asio/ip/basic_resolver_iterator.hpp old mode 100755 new mode 100644 index 25ac47dc4d..db404ae28a --- a/boost/asio/ip/basic_resolver_iterator.hpp +++ b/boost/asio/ip/basic_resolver_iterator.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/basic_resolver_query.hpp b/boost/asio/ip/basic_resolver_query.hpp old mode 100755 new mode 100644 index fe1eefc7bd..0eceaae008 --- a/boost/asio/ip/basic_resolver_query.hpp +++ b/boost/asio/ip/basic_resolver_query.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_query.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/basic_resolver_results.hpp b/boost/asio/ip/basic_resolver_results.hpp old mode 100755 new mode 100644 index 2e42781880..0989971ce8 --- a/boost/asio/ip/basic_resolver_results.hpp +++ b/boost/asio/ip/basic_resolver_results.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_results.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/detail/endpoint.hpp b/boost/asio/ip/detail/endpoint.hpp old mode 100755 new mode 100644 index 0121076c20..23d4abdc12 --- a/boost/asio/ip/detail/endpoint.hpp +++ b/boost/asio/ip/detail/endpoint.hpp @@ -2,7 +2,7 @@ // ip/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/detail/impl/endpoint.ipp b/boost/asio/ip/detail/impl/endpoint.ipp old mode 100755 new mode 100644 index 6185f5de14..0219e14a82 --- a/boost/asio/ip/detail/impl/endpoint.ipp +++ b/boost/asio/ip/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // ip/detail/impl/endpoint.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/detail/socket_option.hpp b/boost/asio/ip/detail/socket_option.hpp old mode 100755 new mode 100644 index 8f0c7e762d..10a6cd2c5c --- a/boost/asio/ip/detail/socket_option.hpp +++ b/boost/asio/ip/detail/socket_option.hpp @@ -2,7 +2,7 @@ // detail/socket_option.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/host_name.hpp b/boost/asio/ip/host_name.hpp old mode 100755 new mode 100644 index cb8e05d8e0..65fb688a93 --- a/boost/asio/ip/host_name.hpp +++ b/boost/asio/ip/host_name.hpp @@ -2,7 +2,7 @@ // ip/host_name.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/icmp.hpp b/boost/asio/ip/icmp.hpp old mode 100755 new mode 100644 index 4066d76179..d2ea367331 --- a/boost/asio/ip/icmp.hpp +++ b/boost/asio/ip/icmp.hpp @@ -2,7 +2,7 @@ // ip/icmp.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/address.hpp b/boost/asio/ip/impl/address.hpp old mode 100755 new mode 100644 index b92dd98c0e..da8a804f44 --- a/boost/asio/ip/impl/address.hpp +++ b/boost/asio/ip/impl/address.hpp @@ -2,7 +2,7 @@ // ip/impl/address.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/address.ipp b/boost/asio/ip/impl/address.ipp old mode 100755 new mode 100644 index 92839fac30..a35a442a30 --- a/boost/asio/ip/impl/address.ipp +++ b/boost/asio/ip/impl/address.ipp @@ -2,7 +2,7 @@ // ip/impl/address.ipp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/address_v4.hpp b/boost/asio/ip/impl/address_v4.hpp old mode 100755 new mode 100644 index d23b2a838a..d2a26983af --- a/boost/asio/ip/impl/address_v4.hpp +++ b/boost/asio/ip/impl/address_v4.hpp @@ -2,7 +2,7 @@ // ip/impl/address_v4.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/address_v4.ipp b/boost/asio/ip/impl/address_v4.ipp old mode 100755 new mode 100644 index 52970944a2..5f7f35fd34 --- a/boost/asio/ip/impl/address_v4.ipp +++ b/boost/asio/ip/impl/address_v4.ipp @@ -2,7 +2,7 @@ // ip/impl/address_v4.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/address_v6.hpp b/boost/asio/ip/impl/address_v6.hpp old mode 100755 new mode 100644 index f5ed99056a..3f15561038 --- a/boost/asio/ip/impl/address_v6.hpp +++ b/boost/asio/ip/impl/address_v6.hpp @@ -2,7 +2,7 @@ // ip/impl/address_v6.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/address_v6.ipp b/boost/asio/ip/impl/address_v6.ipp old mode 100755 new mode 100644 index 60f283f33b..2d7b92ea60 --- a/boost/asio/ip/impl/address_v6.ipp +++ b/boost/asio/ip/impl/address_v6.ipp @@ -2,7 +2,7 @@ // ip/impl/address_v6.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -39,7 +39,7 @@ address_v6::address_v6() BOOST_ASIO_NOEXCEPT } address_v6::address_v6(const address_v6::bytes_type& bytes, - unsigned long scope) + scope_id_type scope) : scope_id_(scope) { #if UCHAR_MAX > 0xFF diff --git a/boost/asio/ip/impl/basic_endpoint.hpp b/boost/asio/ip/impl/basic_endpoint.hpp old mode 100755 new mode 100644 index fd37631c5e..138184cd6c --- a/boost/asio/ip/impl/basic_endpoint.hpp +++ b/boost/asio/ip/impl/basic_endpoint.hpp @@ -2,7 +2,7 @@ // ip/impl/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/host_name.ipp b/boost/asio/ip/impl/host_name.ipp old mode 100755 new mode 100644 index 17a0dd880a..dcec903954 --- a/boost/asio/ip/impl/host_name.ipp +++ b/boost/asio/ip/impl/host_name.ipp @@ -2,7 +2,7 @@ // ip/impl/host_name.ipp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/network_v4.hpp b/boost/asio/ip/impl/network_v4.hpp old mode 100755 new mode 100644 index 8d75ba2cf1..69c5043a31 --- a/boost/asio/ip/impl/network_v4.hpp +++ b/boost/asio/ip/impl/network_v4.hpp @@ -2,7 +2,7 @@ // ip/impl/network_v4.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/impl/network_v4.ipp b/boost/asio/ip/impl/network_v4.ipp old mode 100755 new mode 100644 index 8d8cb68ed5..7be2aae25e --- a/boost/asio/ip/impl/network_v4.ipp +++ b/boost/asio/ip/impl/network_v4.ipp @@ -2,7 +2,7 @@ // ip/impl/network_v4.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/impl/network_v6.hpp b/boost/asio/ip/impl/network_v6.hpp old mode 100755 new mode 100644 index 440973864a..db7dde0d6b --- a/boost/asio/ip/impl/network_v6.hpp +++ b/boost/asio/ip/impl/network_v6.hpp @@ -2,7 +2,7 @@ // ip/impl/network_v6.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/impl/network_v6.ipp b/boost/asio/ip/impl/network_v6.ipp old mode 100755 new mode 100644 index 23ff91f6e3..7ca7e8146a --- a/boost/asio/ip/impl/network_v6.ipp +++ b/boost/asio/ip/impl/network_v6.ipp @@ -2,7 +2,7 @@ // ip/impl/network_v6.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/multicast.hpp b/boost/asio/ip/multicast.hpp old mode 100755 new mode 100644 index 19d8be2d9c..62ae40e28b --- a/boost/asio/ip/multicast.hpp +++ b/boost/asio/ip/multicast.hpp @@ -2,7 +2,7 @@ // ip/multicast.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/network_v4.hpp b/boost/asio/ip/network_v4.hpp old mode 100755 new mode 100644 index 134b6e69c3..ffe674050c --- a/boost/asio/ip/network_v4.hpp +++ b/boost/asio/ip/network_v4.hpp @@ -2,7 +2,7 @@ // ip/network_v4.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/network_v6.hpp b/boost/asio/ip/network_v6.hpp old mode 100755 new mode 100644 index 56cf9391d2..902bb774d8 --- a/boost/asio/ip/network_v6.hpp +++ b/boost/asio/ip/network_v6.hpp @@ -2,7 +2,7 @@ // ip/network_v6.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/ip/resolver_base.hpp b/boost/asio/ip/resolver_base.hpp old mode 100755 new mode 100644 index 99c1fa0ccf..95f8d90262 --- a/boost/asio/ip/resolver_base.hpp +++ b/boost/asio/ip/resolver_base.hpp @@ -2,7 +2,7 @@ // ip/resolver_base.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/resolver_query_base.hpp b/boost/asio/ip/resolver_query_base.hpp old mode 100755 new mode 100644 index 790378ca9a..8b799c24a6 --- a/boost/asio/ip/resolver_query_base.hpp +++ b/boost/asio/ip/resolver_query_base.hpp @@ -2,7 +2,7 @@ // ip/resolver_query_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/tcp.hpp b/boost/asio/ip/tcp.hpp old mode 100755 new mode 100644 index cff1e2440e..926f2a9ae2 --- a/boost/asio/ip/tcp.hpp +++ b/boost/asio/ip/tcp.hpp @@ -2,7 +2,7 @@ // ip/tcp.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/udp.hpp b/boost/asio/ip/udp.hpp old mode 100755 new mode 100644 index 47b2cfae32..f0a72d03a1 --- a/boost/asio/ip/udp.hpp +++ b/boost/asio/ip/udp.hpp @@ -2,7 +2,7 @@ // ip/udp.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/unicast.hpp b/boost/asio/ip/unicast.hpp old mode 100755 new mode 100644 index afcf352fdc..916eebc56e --- a/boost/asio/ip/unicast.hpp +++ b/boost/asio/ip/unicast.hpp @@ -2,7 +2,7 @@ // ip/unicast.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ip/v6_only.hpp b/boost/asio/ip/v6_only.hpp old mode 100755 new mode 100644 index 490683ae5d..92dcc83a26 --- a/boost/asio/ip/v6_only.hpp +++ b/boost/asio/ip/v6_only.hpp @@ -2,7 +2,7 @@ // ip/v6_only.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/is_applicable_property.hpp b/boost/asio/is_applicable_property.hpp index 1d38fa72ab..41bd6745c6 100644 --- a/boost/asio/is_applicable_property.hpp +++ b/boost/asio/is_applicable_property.hpp @@ -2,7 +2,7 @@ // is_applicable_property.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/is_executor.hpp b/boost/asio/is_executor.hpp old mode 100755 new mode 100644 index e5e2dcb102..1ef476f83d --- a/boost/asio/is_executor.hpp +++ b/boost/asio/is_executor.hpp @@ -2,7 +2,7 @@ // is_executor.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/is_read_buffered.hpp b/boost/asio/is_read_buffered.hpp old mode 100755 new mode 100644 index a791274044..a28eb40558 --- a/boost/asio/is_read_buffered.hpp +++ b/boost/asio/is_read_buffered.hpp @@ -2,7 +2,7 @@ // is_read_buffered.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/is_write_buffered.hpp b/boost/asio/is_write_buffered.hpp old mode 100755 new mode 100644 index a5169d581f..19dee98df6 --- a/boost/asio/is_write_buffered.hpp +++ b/boost/asio/is_write_buffered.hpp @@ -2,7 +2,7 @@ // is_write_buffered.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/local/basic_endpoint.hpp b/boost/asio/local/basic_endpoint.hpp old mode 100755 new mode 100644 index d23aadb3f0..e622717679 --- a/boost/asio/local/basic_endpoint.hpp +++ b/boost/asio/local/basic_endpoint.hpp @@ -2,7 +2,7 @@ // local/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/local/connect_pair.hpp b/boost/asio/local/connect_pair.hpp old mode 100755 new mode 100644 index 38b9ca429e..aefc1d76d7 --- a/boost/asio/local/connect_pair.hpp +++ b/boost/asio/local/connect_pair.hpp @@ -2,7 +2,7 @@ // local/connect_pair.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/local/datagram_protocol.hpp b/boost/asio/local/datagram_protocol.hpp old mode 100755 new mode 100644 index d417fc6ad4..4597836b18 --- a/boost/asio/local/datagram_protocol.hpp +++ b/boost/asio/local/datagram_protocol.hpp @@ -2,7 +2,7 @@ // local/datagram_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/local/detail/endpoint.hpp b/boost/asio/local/detail/endpoint.hpp old mode 100755 new mode 100644 index a500965764..38c0b442c3 --- a/boost/asio/local/detail/endpoint.hpp +++ b/boost/asio/local/detail/endpoint.hpp @@ -2,7 +2,7 @@ // local/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/local/detail/impl/endpoint.ipp b/boost/asio/local/detail/impl/endpoint.ipp old mode 100755 new mode 100644 index 5ef6b89089..1a327eb484 --- a/boost/asio/local/detail/impl/endpoint.ipp +++ b/boost/asio/local/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // local/detail/impl/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/local/stream_protocol.hpp b/boost/asio/local/stream_protocol.hpp old mode 100755 new mode 100644 index d0bd4fb0c8..af17000048 --- a/boost/asio/local/stream_protocol.hpp +++ b/boost/asio/local/stream_protocol.hpp @@ -2,7 +2,7 @@ // local/stream_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/multiple_exceptions.hpp b/boost/asio/multiple_exceptions.hpp index 594cbc87d6..2534c818ad 100644 --- a/boost/asio/multiple_exceptions.hpp +++ b/boost/asio/multiple_exceptions.hpp @@ -2,7 +2,7 @@ // multiple_exceptions.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/packaged_task.hpp b/boost/asio/packaged_task.hpp old mode 100755 new mode 100644 index 3c5332f46a..2457588808 --- a/boost/asio/packaged_task.hpp +++ b/boost/asio/packaged_task.hpp @@ -2,7 +2,7 @@ // packaged_task.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/placeholders.hpp b/boost/asio/placeholders.hpp old mode 100755 new mode 100644 index 3405a1f91c..5b5bcde26a --- a/boost/asio/placeholders.hpp +++ b/boost/asio/placeholders.hpp @@ -2,7 +2,7 @@ // placeholders.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/posix/basic_descriptor.hpp b/boost/asio/posix/basic_descriptor.hpp old mode 100755 new mode 100644 index ad71f90a01..d9a2d726c5 --- a/boost/asio/posix/basic_descriptor.hpp +++ b/boost/asio/posix/basic_descriptor.hpp @@ -2,7 +2,7 @@ // posix/basic_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -86,7 +86,7 @@ public: * descriptor. */ explicit basic_descriptor(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -100,10 +100,11 @@ public: */ template explicit basic_descriptor(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { } @@ -122,7 +123,7 @@ public: */ basic_descriptor(const executor_type& ex, const native_handle_type& native_descriptor) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), @@ -146,10 +147,10 @@ public: template basic_descriptor(ExecutionContext& context, const native_handle_type& native_descriptor, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), diff --git a/boost/asio/posix/basic_stream_descriptor.hpp b/boost/asio/posix/basic_stream_descriptor.hpp old mode 100755 new mode 100644 index cdce1c5dd4..c603a39554 --- a/boost/asio/posix/basic_stream_descriptor.hpp +++ b/boost/asio/posix/basic_stream_descriptor.hpp @@ -2,7 +2,7 @@ // posix/basic_stream_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -21,6 +21,8 @@ #if defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \ || defined(GENERATING_DOCUMENTATION) +#include + namespace boost { namespace asio { namespace posix { @@ -34,6 +36,12 @@ namespace posix { * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. * + * Synchronous @c read_some and @c write_some operations are thread safe with + * respect to each other, if the underlying operating system calls are also + * thread safe. This means that it is permitted to perform concurrent calls to + * these synchronous operations on a single descriptor object. Other synchronous + * operations, such as @c close, are not thread safe. + * * @par Concepts: * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. */ @@ -84,9 +92,10 @@ public: */ template explicit basic_stream_descriptor(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) + typename constraint< + is_convertible::value, + defaulted_constraint + >::type = defaulted_constraint()) : basic_descriptor(context) { } @@ -126,9 +135,9 @@ public: template basic_stream_descriptor(ExecutionContext& context, const native_handle_type& native_descriptor, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_descriptor(context, native_descriptor) { } @@ -466,6 +475,8 @@ private: } // namespace asio } // namespace boost +#include + #endif // defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) // || defined(GENERATING_DOCUMENTATION) diff --git a/boost/asio/posix/descriptor.hpp b/boost/asio/posix/descriptor.hpp old mode 100755 new mode 100644 index d06e16c23a..6c03f3a751 --- a/boost/asio/posix/descriptor.hpp +++ b/boost/asio/posix/descriptor.hpp @@ -2,7 +2,7 @@ // posix/descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/posix/descriptor_base.hpp b/boost/asio/posix/descriptor_base.hpp old mode 100755 new mode 100644 index 3595fef727..6b74aa083d --- a/boost/asio/posix/descriptor_base.hpp +++ b/boost/asio/posix/descriptor_base.hpp @@ -2,7 +2,7 @@ // posix/descriptor_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/posix/stream_descriptor.hpp b/boost/asio/posix/stream_descriptor.hpp old mode 100755 new mode 100644 index adc9afcdac..378b4711ff --- a/boost/asio/posix/stream_descriptor.hpp +++ b/boost/asio/posix/stream_descriptor.hpp @@ -2,7 +2,7 @@ // posix/stream_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/post.hpp b/boost/asio/post.hpp old mode 100755 new mode 100644 index c409492476..aefe97337e --- a/boost/asio/post.hpp +++ b/boost/asio/post.hpp @@ -2,7 +2,7 @@ // post.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -98,9 +98,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) post( const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type* = 0); + >::type = 0); /// Submits a completion token or function object for execution. /** @@ -115,8 +115,8 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) post( BOOST_ASIO_MOVE_ARG(CompletionToken) token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename ExecutionContext::executor_type), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); } // namespace asio } // namespace boost diff --git a/boost/asio/prefer.hpp b/boost/asio/prefer.hpp index a5c51b5348..80a3589508 100644 --- a/boost/asio/prefer.hpp +++ b/boost/asio/prefer.hpp @@ -2,7 +2,7 @@ // prefer.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -120,6 +120,7 @@ struct prefer_result namespace asio_prefer_fn { +using boost::asio::conditional; using boost::asio::decay; using boost::asio::declval; using boost::asio::enable_if; @@ -145,7 +146,9 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -153,19 +156,19 @@ struct call_traits typedef void result_type; }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_preferable - && - static_require::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_preferable + >::type, + typename enable_if< + static_require::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = identity); @@ -178,123 +181,137 @@ struct call_traits -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_preferable - && - !static_require::is_valid - && - require_member::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_preferable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + require_member::type, Property>::is_valid >::type> : - require_member + require_member::type, Property> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_require_member); }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_preferable - && - !static_require::is_valid - && - !require_member::is_valid - && - require_free::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_preferable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + !require_member::type, Property>::is_valid + >::type, + typename enable_if< + require_free::is_valid >::type> : require_free { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_require_free); }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_preferable - && - !static_require::is_valid - && - !require_member::is_valid - && - !require_free::is_valid - && - prefer_member::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_preferable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + !require_member::type, Property>::is_valid + >::type, + typename enable_if< + !require_free::is_valid + >::type, + typename enable_if< + prefer_member::type, Property>::is_valid >::type> : - prefer_member + prefer_member::type, Property> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_prefer_member); }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_preferable - && - !static_require::is_valid - && - !require_member::is_valid - && - !require_free::is_valid - && - !prefer_member::is_valid - && - prefer_free::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_preferable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + !require_member::type, Property>::is_valid + >::type, + typename enable_if< + !require_free::is_valid + >::type, + typename enable_if< + !prefer_member::type, Property>::is_valid + >::type, + typename enable_if< + prefer_free::is_valid >::type> : prefer_free { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_prefer_free); }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_preferable - && - !static_require::is_valid - && - !require_member::is_valid - && - !require_free::is_valid - && - !prefer_member::is_valid - && - !prefer_free::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_preferable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + !require_member::type, Property>::is_valid + >::type, + typename enable_if< + !require_free::is_valid + >::type, + typename enable_if< + !prefer_member::type, Property>::is_valid + >::type, + typename enable_if< + !prefer_free::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = identity); @@ -307,13 +324,15 @@ struct call_traits -struct call_traits +struct call_traits::overload != ill_formed + >::type, typename enable_if< - call_traits::overload != ill_formed - && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1) >::overload != ill_formed >::type> @@ -322,29 +341,34 @@ struct call_traits::is_noexcept + call_traits::is_noexcept && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1) >::is_noexcept )); typedef typename decay< typename call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1) >::result_type >::type result_type; }; -template -struct call_traits +struct call_traits::overload != ill_formed + >::type, typename enable_if< - call_traits::overload != ill_formed - && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1, PN BOOST_ASIO_ELLIPSIS) >::overload != ill_formed >::type> @@ -353,17 +377,19 @@ struct call_traits::is_noexcept + call_traits::is_noexcept && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1, PN BOOST_ASIO_ELLIPSIS) >::is_noexcept )); typedef typename decay< typename call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1, PN BOOST_ASIO_ELLIPSIS) >::result_type >::type result_type; @@ -371,30 +397,70 @@ struct call_traits + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) \ + && defined(BOOST_ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + struct type + { + template + auto require(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + declval::type>().require( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().require( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + + template + auto prefer(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + declval::type>().prefer( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().prefer( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + // && defined(BOOST_ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + // && defined(BOOST_ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + }; + template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == identity, - typename call_traits::result_type + call_traits::overload == identity, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property)) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t); } template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_require_member, - typename call_traits::result_type + call_traits::overload == call_require_member, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t).require( BOOST_ASIO_MOVE_CAST(Property)(p)); @@ -402,14 +468,14 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_require_free, - typename call_traits::result_type + call_traits::overload == call_require_free, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return require( BOOST_ASIO_MOVE_CAST(T)(t), @@ -418,14 +484,14 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_prefer_member, - typename call_traits::result_type + call_traits::overload == call_prefer_member, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t).prefer( BOOST_ASIO_MOVE_CAST(Property)(p)); @@ -433,14 +499,14 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_prefer_free, - typename call_traits::result_type + call_traits::overload == call_prefer_free, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return prefer( BOOST_ASIO_MOVE_CAST(T)(t), @@ -449,15 +515,15 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == two_props, - typename call_traits::result_type + call_traits::overload == two_props, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(P0) p0, BOOST_ASIO_MOVE_ARG(P1) p1) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return (*this)( (*this)( @@ -469,8 +535,10 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == n_props, - typename call_traits::result_type + call_traits::overload == n_props, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, @@ -478,7 +546,7 @@ struct impl BOOST_ASIO_MOVE_ARG(P1) p1, BOOST_ASIO_MOVE_ARG(PN) BOOST_ASIO_ELLIPSIS pn) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return (*this)( (*this)( @@ -508,13 +576,16 @@ static BOOST_ASIO_CONSTEXPR const asio_prefer_fn::impl& } // namespace +typedef asio_prefer_fn::impl prefer_t; + #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) template struct can_prefer : integral_constant::overload - != asio_prefer_fn::ill_formed> + asio_prefer_fn::call_traits< + prefer_t, T, void(Properties...)>::overload + != asio_prefer_fn::ill_formed> { }; @@ -524,24 +595,27 @@ template struct can_prefer : integral_constant::overload - != asio_prefer_fn::ill_formed> + asio_prefer_fn::call_traits< + prefer_t, T, void(P0, P1, P2)>::overload + != asio_prefer_fn::ill_formed> { }; template struct can_prefer : integral_constant::overload - != asio_prefer_fn::ill_formed> + asio_prefer_fn::call_traits< + prefer_t, T, void(P0, P1)>::overload + != asio_prefer_fn::ill_formed> { }; template struct can_prefer : integral_constant::overload - != asio_prefer_fn::ill_formed> + asio_prefer_fn::call_traits< + prefer_t, T, void(P0)>::overload + != asio_prefer_fn::ill_formed> { }; @@ -566,7 +640,8 @@ constexpr bool can_prefer_v template struct is_nothrow_prefer : integral_constant::is_noexcept> + asio_prefer_fn::call_traits< + prefer_t, T, void(Properties...)>::is_noexcept> { }; @@ -576,21 +651,24 @@ template struct is_nothrow_prefer : integral_constant::is_noexcept> + asio_prefer_fn::call_traits< + prefer_t, T, void(P0, P1, P2)>::is_noexcept> { }; template struct is_nothrow_prefer : integral_constant::is_noexcept> + asio_prefer_fn::call_traits< + prefer_t, T, void(P0, P1)>::is_noexcept> { }; template struct is_nothrow_prefer : integral_constant::is_noexcept> + asio_prefer_fn::call_traits< + prefer_t, T, void(P0)>::is_noexcept> { }; @@ -616,7 +694,7 @@ template struct prefer_result { typedef typename asio_prefer_fn::call_traits< - T, void(Properties...)>::result_type type; + prefer_t, T, void(Properties...)>::result_type type; }; #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) @@ -626,21 +704,21 @@ template ::result_type type; + prefer_t, T, void(P0, P1, P2)>::result_type type; }; template struct prefer_result { typedef typename asio_prefer_fn::call_traits< - T, void(P0, P1)>::result_type type; + prefer_t, T, void(P0, P1)>::result_type type; }; template struct prefer_result { typedef typename asio_prefer_fn::call_traits< - T, void(P0)>::result_type type; + prefer_t, T, void(P0)>::result_type type; }; template diff --git a/boost/asio/query.hpp b/boost/asio/query.hpp index 19cdcaafa6..d742bc2d6f 100644 --- a/boost/asio/query.hpp +++ b/boost/asio/query.hpp @@ -2,7 +2,7 @@ // query.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -102,6 +102,7 @@ struct query_result namespace asio_query_fn { +using boost::asio::conditional; using boost::asio::decay; using boost::asio::declval; using boost::asio::enable_if; @@ -120,7 +121,8 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -128,57 +130,57 @@ struct call_traits typedef void result_type; }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - static_query::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + static_query::is_valid >::type> : static_query { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = static_value); }; -template -struct call_traits +struct call_traits::type, + typename decay::type + >::value + >::type, + typename enable_if< + !static_query::is_valid + >::type, typename enable_if< - ( - is_applicable_property< - typename decay::type, - typename decay::type - >::value - && - !static_query::is_valid - && - query_member::is_valid - ) + query_member::type, Property>::is_valid >::type> : - query_member + query_member::type, Property> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); }; -template -struct call_traits +struct call_traits::type, + typename decay::type + >::value + >::type, + typename enable_if< + !static_query::is_valid + >::type, typename enable_if< - ( - is_applicable_property< - typename decay::type, - typename decay::type - >::value - && - !static_query::is_valid - && - !query_member::is_valid - && - query_free::is_valid - ) + !query_member::type, Property>::is_valid + >::type, + typename enable_if< + query_free::is_valid >::type> : query_free { @@ -187,16 +189,40 @@ struct call_traits + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + struct type + { + template + auto query(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().query( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + }; + template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == static_value, - typename call_traits::result_type + call_traits::overload == static_value, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T), BOOST_ASIO_MOVE_ARG(Property)) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return static_query< typename decay::type, @@ -206,28 +232,28 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type + call_traits::overload == call_member, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t).query(BOOST_ASIO_MOVE_CAST(Property)(p)); } template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type + call_traits::overload == call_free, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return query(BOOST_ASIO_MOVE_CAST(T)(t), BOOST_ASIO_MOVE_CAST(Property)(p)); } @@ -252,10 +278,12 @@ static BOOST_ASIO_CONSTEXPR const asio_query_fn::impl& } // namespace +typedef asio_query_fn::impl query_t; + template struct can_query : integral_constant::overload != + asio_query_fn::call_traits::overload != asio_query_fn::ill_formed> { }; @@ -271,7 +299,7 @@ constexpr bool can_query_v template struct is_nothrow_query : integral_constant::is_noexcept> + asio_query_fn::call_traits::is_noexcept> { }; @@ -287,7 +315,7 @@ template struct query_result { typedef typename asio_query_fn::call_traits< - T, void(Property)>::result_type type; + query_t, T, void(Property)>::result_type type; }; } // namespace asio diff --git a/boost/asio/read.hpp b/boost/asio/read.hpp old mode 100755 new mode 100644 index 6422a0e8ed..0bd731a776 --- a/boost/asio/read.hpp +++ b/boost/asio/read.hpp @@ -2,7 +2,7 @@ // read.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -76,9 +76,9 @@ namespace asio { */ template std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -119,9 +119,9 @@ std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, template std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -173,9 +173,9 @@ template std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -220,9 +220,9 @@ template std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type* = 0); + >::type = 0); #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1) @@ -256,10 +256,12 @@ std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers, template std::size_t read(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -291,10 +293,12 @@ template std::size_t read(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -337,10 +341,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -384,10 +390,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if !defined(BOOST_ASIO_NO_IOSTREAM) @@ -565,9 +573,9 @@ std::size_t read(SyncReadStream& s, basic_streambuf& b, */ template std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -598,9 +606,9 @@ std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, template std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -642,9 +650,9 @@ template std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Attempt to read a certain amount of data from a stream before returning. /** @@ -687,9 +695,9 @@ template std::size_t read(SyncReadStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /*@}*/ /** @@ -771,9 +779,9 @@ async_read(AsyncReadStream& s, const MutableBufferSequence& buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Start an asynchronous operation to read a certain amount of data from a /// stream. @@ -851,9 +859,9 @@ async_read(AsyncReadStream& s, const MutableBufferSequence& buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_mutable_buffer_sequence::value - >::type* = 0); + >::type = 0); #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1) @@ -919,10 +927,12 @@ async_read(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Start an asynchronous operation to read a certain amount of data from a /// stream. @@ -996,10 +1006,12 @@ async_read(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if !defined(BOOST_ASIO_NO_IOSTREAM) @@ -1199,9 +1211,9 @@ async_read(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Start an asynchronous operation to read a certain amount of data from a /// stream. @@ -1274,9 +1286,9 @@ async_read(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /*@}*/ diff --git a/boost/asio/read_at.hpp b/boost/asio/read_at.hpp old mode 100755 new mode 100644 index c003b355af..920c3c30c0 --- a/boost/asio/read_at.hpp +++ b/boost/asio/read_at.hpp @@ -2,7 +2,7 @@ // read_at.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/read_until.hpp b/boost/asio/read_until.hpp old mode 100755 new mode 100644 index 1c204637c2..69b7bcfc7a --- a/boost/asio/read_until.hpp +++ b/boost/asio/read_until.hpp @@ -2,7 +2,7 @@ // read_until.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -134,10 +134,12 @@ struct is_match_condition template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Read data into a dynamic buffer sequence until it contains a specified /// delimiter. @@ -177,10 +179,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Read data into a dynamic buffer sequence until it contains a specified /// delimiter. @@ -237,10 +241,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Read data into a dynamic buffer sequence until it contains a specified /// delimiter. @@ -281,10 +287,12 @@ std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \ @@ -348,10 +356,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, const boost::regex& expr, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Read data into a dynamic buffer sequence until some part of the data it /// contains matches a regular expression. @@ -393,10 +403,12 @@ template std::size_t read_until(SyncReadStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, const boost::regex& expr, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX) // || defined(GENERATING_DOCUMENTATION) @@ -508,11 +520,15 @@ template ::value - && is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + is_dynamic_buffer_v1::type>::value + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Read data into a dynamic buffer sequence until a function object indicates a /// match. @@ -572,11 +588,15 @@ template ::value - && is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + is_dynamic_buffer_v1::type>::value + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_IOSTREAM) @@ -956,7 +976,7 @@ std::size_t read_until(SyncReadStream& s, template std::size_t read_until(SyncReadStream& s, boost::asio::basic_streambuf& b, MatchCondition match_condition, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); /// Read data into a streambuf until a function object indicates a match. /** @@ -1013,7 +1033,7 @@ template std::size_t read_until(SyncReadStream& s, boost::asio::basic_streambuf& b, MatchCondition match_condition, boost::system::error_code& ec, - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #endif // !defined(BOOST_ASIO_NO_IOSTREAM) #endif // !defined(BOOST_ASIO_NO_EXTENSIONS) @@ -1074,9 +1094,9 @@ std::size_t read_until(SyncReadStream& s, */ template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Read data into a dynamic buffer sequence until it contains a specified /// delimiter. @@ -1115,9 +1135,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Read data into a dynamic buffer sequence until it contains a specified /// delimiter. @@ -1173,9 +1193,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Read data into a dynamic buffer sequence until it contains a specified /// delimiter. @@ -1214,9 +1234,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \ @@ -1279,9 +1299,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, const boost::regex& expr, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Read data into a dynamic buffer sequence until some part of the data it /// contains matches a regular expression. @@ -1322,9 +1342,9 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, const boost::regex& expr, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX) // || defined(GENERATING_DOCUMENTATION) @@ -1435,10 +1455,12 @@ template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, MatchCondition match_condition, - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0, + typename constraint< + is_dynamic_buffer_v2::value + >::type = 0); /// Read data into a dynamic buffer sequence until a function object indicates a /// match. @@ -1497,10 +1519,12 @@ template std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, MatchCondition match_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0, + typename constraint< + is_dynamic_buffer_v2::value + >::type = 0); #endif // !defined(BOOST_ASIO_NO_EXTENSIONS) @@ -1611,10 +1635,12 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Start an asynchronous operation to read data into a dynamic buffer sequence /// until it contains a specified delimiter. @@ -1711,10 +1737,12 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \ @@ -1818,10 +1846,12 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX) // || defined(GENERATING_DOCUMENTATION) @@ -1968,11 +1998,15 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + is_dynamic_buffer_v1::type>::value + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_IOSTREAM) @@ -2396,7 +2430,7 @@ async_read_until(AsyncReadStream& s, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); #endif // !defined(BOOST_ASIO_NO_IOSTREAM) #endif // !defined(BOOST_ASIO_NO_EXTENSIONS) @@ -2495,9 +2529,9 @@ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Start an asynchronous operation to read data into a dynamic buffer sequence /// until it contains a specified delimiter. @@ -2593,9 +2627,9 @@ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \ @@ -2698,9 +2732,9 @@ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX) // || defined(GENERATING_DOCUMENTATION) @@ -2846,10 +2880,12 @@ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(ReadHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncReadStream::executor_type), - typename enable_if< + typename constraint< is_match_condition::value - && is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0, + typename constraint< + is_dynamic_buffer_v2::value + >::type = 0); #endif // !defined(BOOST_ASIO_NO_EXTENSIONS) diff --git a/boost/asio/redirect_error.hpp b/boost/asio/redirect_error.hpp old mode 100755 new mode 100644 index 994ff74285..6da181cee5 --- a/boost/asio/redirect_error.hpp +++ b/boost/asio/redirect_error.hpp @@ -2,7 +2,7 @@ // redirect_error.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/require.hpp b/boost/asio/require.hpp index 245d70afb8..cbd56026a7 100644 --- a/boost/asio/require.hpp +++ b/boost/asio/require.hpp @@ -2,7 +2,7 @@ // require.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -109,6 +109,7 @@ struct require_result namespace asio_require_fn { +using boost::asio::conditional; using boost::asio::decay; using boost::asio::declval; using boost::asio::enable_if; @@ -129,7 +130,8 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -137,19 +139,19 @@ struct call_traits typedef void result_type; }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_requirable - && - static_require::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_requirable + >::type, + typename enable_if< + static_require::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = identity); @@ -162,57 +164,62 @@ struct call_traits -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_requirable - && - !static_require::is_valid - && - require_member::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_requirable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + require_member::type, Property>::is_valid >::type> : - require_member + require_member::type, Property> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_requirable - && - !static_require::is_valid - && - !require_member::is_valid - && - require_free::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_requirable + >::type, + typename enable_if< + !static_require::is_valid + >::type, + typename enable_if< + !require_member::type, Property>::is_valid + >::type, + typename enable_if< + require_free::is_valid >::type> : require_free { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free); }; -template -struct call_traits +struct call_traits::overload != ill_formed + >::type, typename enable_if< - call_traits::overload != ill_formed - && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1) >::overload != ill_formed >::type> @@ -221,29 +228,34 @@ struct call_traits::is_noexcept + call_traits::is_noexcept && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1) >::is_noexcept )); typedef typename decay< typename call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1) >::result_type >::type result_type; }; -template -struct call_traits +struct call_traits::overload != ill_formed + >::type, typename enable_if< - call_traits::overload != ill_formed - && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1, PN BOOST_ASIO_ELLIPSIS) >::overload != ill_formed >::type> @@ -252,17 +264,19 @@ struct call_traits::is_noexcept + call_traits::is_noexcept && call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1, PN BOOST_ASIO_ELLIPSIS) >::is_noexcept )); typedef typename decay< typename call_traits< - typename call_traits::result_type, + Impl, + typename call_traits::result_type, void(P1, PN BOOST_ASIO_ELLIPSIS) >::result_type >::type result_type; @@ -270,30 +284,54 @@ struct call_traits + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + struct type + { + template + auto require(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + declval::type>().require( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().require( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + }; + template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == identity, - typename call_traits::result_type + call_traits::overload == identity, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property)) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t); } template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type + call_traits::overload == call_member, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t).require( BOOST_ASIO_MOVE_CAST(Property)(p)); @@ -301,14 +339,14 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type + call_traits::overload == call_free, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return require( BOOST_ASIO_MOVE_CAST(T)(t), @@ -317,15 +355,15 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == two_props, - typename call_traits::result_type + call_traits::overload == two_props, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(P0) p0, BOOST_ASIO_MOVE_ARG(P1) p1) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return (*this)( (*this)( @@ -337,8 +375,10 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == n_props, - typename call_traits::result_type + call_traits::overload == n_props, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, @@ -346,7 +386,7 @@ struct impl BOOST_ASIO_MOVE_ARG(P1) p1, BOOST_ASIO_MOVE_ARG(PN) BOOST_ASIO_ELLIPSIS pn) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return (*this)( (*this)( @@ -376,13 +416,16 @@ static BOOST_ASIO_CONSTEXPR const asio_require_fn::impl& } // namespace +typedef asio_require_fn::impl require_t; + #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) template struct can_require : integral_constant::overload - != asio_require_fn::ill_formed> + asio_require_fn::call_traits< + require_t, T, void(Properties...)>::overload + != asio_require_fn::ill_formed> { }; @@ -392,7 +435,7 @@ template struct can_require : integral_constant::overload + asio_require_fn::call_traits::overload != asio_require_fn::ill_formed> { }; @@ -400,7 +443,7 @@ struct can_require : template struct can_require : integral_constant::overload + asio_require_fn::call_traits::overload != asio_require_fn::ill_formed> { }; @@ -408,7 +451,7 @@ struct can_require : template struct can_require : integral_constant::overload + asio_require_fn::call_traits::overload != asio_require_fn::ill_formed> { }; @@ -434,7 +477,8 @@ constexpr bool can_require_v template struct is_nothrow_require : integral_constant::is_noexcept> + asio_require_fn::call_traits< + require_t, T, void(Properties...)>::is_noexcept> { }; @@ -444,21 +488,24 @@ template struct is_nothrow_require : integral_constant::is_noexcept> + asio_require_fn::call_traits< + require_t, T, void(P0, P1, P2)>::is_noexcept> { }; template struct is_nothrow_require : integral_constant::is_noexcept> + asio_require_fn::call_traits< + require_t, T, void(P0, P1)>::is_noexcept> { }; template struct is_nothrow_require : integral_constant::is_noexcept> + asio_require_fn::call_traits< + require_t, T, void(P0)>::is_noexcept> { }; @@ -484,7 +531,7 @@ template struct require_result { typedef typename asio_require_fn::call_traits< - T, void(Properties...)>::result_type type; + require_t, T, void(Properties...)>::result_type type; }; #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) @@ -494,21 +541,21 @@ template ::result_type type; + require_t, T, void(P0, P1, P2)>::result_type type; }; template struct require_result { typedef typename asio_require_fn::call_traits< - T, void(P0, P1)>::result_type type; + require_t, T, void(P0, P1)>::result_type type; }; template struct require_result { typedef typename asio_require_fn::call_traits< - T, void(P0)>::result_type type; + require_t, T, void(P0)>::result_type type; }; template diff --git a/boost/asio/require_concept.hpp b/boost/asio/require_concept.hpp index 0ad4dafe2c..7fe2b8b4dd 100644 --- a/boost/asio/require_concept.hpp +++ b/boost/asio/require_concept.hpp @@ -2,7 +2,7 @@ // require_concept.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -109,6 +109,7 @@ struct require_concept_result namespace asio_require_concept_fn { +using boost::asio::conditional; using boost::asio::decay; using boost::asio::declval; using boost::asio::enable_if; @@ -127,7 +128,8 @@ enum overload_type ill_formed }; -template +template struct call_traits { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); @@ -135,19 +137,19 @@ struct call_traits typedef void result_type; }; -template -struct call_traits +struct call_traits::type, + typename decay::type + >::value + >::type, typename enable_if< - ( - is_applicable_property< - typename decay::type, - typename decay::type - >::value - && - decay::type::is_requirable_concept - && - static_require_concept::is_valid - ) + decay::type::is_requirable_concept + >::type, + typename enable_if< + static_require_concept::is_valid >::type> { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = identity); @@ -155,44 +157,56 @@ struct call_traits -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_requirable_concept - && - !static_require_concept::is_valid - && - require_concept_member::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_requirable_concept + >::type, + typename enable_if< + !static_require_concept::is_valid + >::type, + typename enable_if< + require_concept_member< + typename Impl::template proxy::type, + Property + >::is_valid >::type> : - require_concept_member + require_concept_member< + typename Impl::template proxy::type, + Property + > { BOOST_ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); }; -template -struct call_traits +struct call_traits::type, - typename decay::type - >::value - && - decay::type::is_requirable_concept - && - !static_require_concept::is_valid - && - !require_concept_member::is_valid - && - require_concept_free::is_valid - ) + is_applicable_property< + typename decay::type, + typename decay::type + >::value + >::type, + typename enable_if< + decay::type::is_requirable_concept + >::type, + typename enable_if< + !static_require_concept::is_valid + >::type, + typename enable_if< + !require_concept_member< + typename Impl::template proxy::type, + Property + >::is_valid + >::type, + typename enable_if< + require_concept_free::is_valid >::type> : require_concept_free { @@ -201,30 +215,54 @@ struct call_traits + struct proxy + { +#if defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_CONCEPT_MEMBER_TRAIT) + struct type + { + template + auto require_concept(BOOST_ASIO_MOVE_ARG(P) p) + noexcept( + noexcept( + declval::type>().require_concept( + BOOST_ASIO_MOVE_CAST(P)(p)) + ) + ) + -> decltype( + declval::type>().require_concept( + BOOST_ASIO_MOVE_CAST(P)(p)) + ); + }; +#else // defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_CONCEPT_MEMBER_TRAIT) + typedef T type; +#endif // defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_CONCEPT_MEMBER_TRAIT) + }; + template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == identity, - typename call_traits::result_type + call_traits::overload == identity, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property)) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t); } template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type + call_traits::overload == call_member, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return BOOST_ASIO_MOVE_CAST(T)(t).require_concept( BOOST_ASIO_MOVE_CAST(Property)(p)); @@ -232,14 +270,14 @@ struct impl template BOOST_ASIO_NODISCARD BOOST_ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type + call_traits::overload == call_free, + typename call_traits::result_type >::type operator()( BOOST_ASIO_MOVE_ARG(T) t, BOOST_ASIO_MOVE_ARG(Property) p) const BOOST_ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) + call_traits::is_noexcept)) { return require_concept( BOOST_ASIO_MOVE_CAST(T)(t), @@ -266,11 +304,14 @@ static BOOST_ASIO_CONSTEXPR const asio_require_concept_fn::impl& } // namespace +typedef asio_require_concept_fn::impl require_concept_t; + template struct can_require_concept : integral_constant::overload != - asio_require_concept_fn::ill_formed> + asio_require_concept_fn::call_traits< + require_concept_t, T, void(Property)>::overload != + asio_require_concept_fn::ill_formed> { }; @@ -285,7 +326,8 @@ constexpr bool can_require_concept_v template struct is_nothrow_require_concept : integral_constant::is_noexcept> + asio_require_concept_fn::call_traits< + require_concept_t, T, void(Property)>::is_noexcept> { }; @@ -301,7 +343,7 @@ template struct require_concept_result { typedef typename asio_require_concept_fn::call_traits< - T, void(Property)>::result_type type; + require_concept_t, T, void(Property)>::result_type type; }; } // namespace asio diff --git a/boost/asio/serial_port.hpp b/boost/asio/serial_port.hpp old mode 100755 new mode 100644 index ab73bfc65f..a212c383fe --- a/boost/asio/serial_port.hpp +++ b/boost/asio/serial_port.hpp @@ -2,7 +2,7 @@ // serial_port.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/serial_port_base.hpp b/boost/asio/serial_port_base.hpp old mode 100755 new mode 100644 index 97838f153b..4b12040313 --- a/boost/asio/serial_port_base.hpp +++ b/boost/asio/serial_port_base.hpp @@ -2,7 +2,7 @@ // serial_port_base.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/signal_set.hpp b/boost/asio/signal_set.hpp old mode 100755 new mode 100644 index 4e4d798f7c..5a776851fc --- a/boost/asio/signal_set.hpp +++ b/boost/asio/signal_set.hpp @@ -2,7 +2,7 @@ // signal_set.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/socket_base.hpp b/boost/asio/socket_base.hpp old mode 100755 new mode 100644 index f4522a41ff..0b661f3a7e --- a/boost/asio/socket_base.hpp +++ b/boost/asio/socket_base.hpp @@ -2,7 +2,7 @@ // socket_base.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/spawn.hpp b/boost/asio/spawn.hpp old mode 100755 new mode 100644 index 6bcc947021..429a15e56d --- a/boost/asio/spawn.hpp +++ b/boost/asio/spawn.hpp @@ -2,7 +2,7 @@ // spawn.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -226,10 +226,10 @@ void spawn(BOOST_ASIO_MOVE_ARG(Handler) handler, BOOST_ASIO_MOVE_ARG(Function) function, const boost::coroutines::attributes& attributes = boost::coroutines::attributes(), - typename enable_if< + typename constraint< !is_executor::type>::value && !execution::is_executor::type>::value && - !is_convertible::value>::type* = 0); + !is_convertible::value>::type = 0); /// Start a new stackful coroutine, inheriting the execution context of another. /** @@ -269,9 +269,9 @@ void spawn(const Executor& ex, BOOST_ASIO_MOVE_ARG(Function) function, const boost::coroutines::attributes& attributes = boost::coroutines::attributes(), - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0); + >::type = 0); /// Start a new stackful coroutine that executes on a given strand. /** @@ -331,8 +331,8 @@ void spawn(ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(Function) function, const boost::coroutines::attributes& attributes = boost::coroutines::attributes(), - typename enable_if::value>::type* = 0); + typename constraint::value>::type = 0); /*@}*/ diff --git a/boost/asio/ssl.hpp b/boost/asio/ssl.hpp old mode 100755 new mode 100644 index 5440e8b5ab..6cb6ed5de6 --- a/boost/asio/ssl.hpp +++ b/boost/asio/ssl.hpp @@ -2,7 +2,7 @@ // ssl.hpp // ~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/context.hpp b/boost/asio/ssl/context.hpp old mode 100755 new mode 100644 index 3973eea695..8299a2b99b --- a/boost/asio/ssl/context.hpp +++ b/boost/asio/ssl/context.hpp @@ -2,7 +2,7 @@ // ssl/context.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/context_base.hpp b/boost/asio/ssl/context_base.hpp old mode 100755 new mode 100644 index 4ee0b7c044..87c3c625a4 --- a/boost/asio/ssl/context_base.hpp +++ b/boost/asio/ssl/context_base.hpp @@ -2,7 +2,7 @@ // ssl/context_base.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/buffered_handshake_op.hpp b/boost/asio/ssl/detail/buffered_handshake_op.hpp old mode 100755 new mode 100644 index 2cf8d1513c..856cec3724 --- a/boost/asio/ssl/detail/buffered_handshake_op.hpp +++ b/boost/asio/ssl/detail/buffered_handshake_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/buffered_handshake_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/engine.hpp b/boost/asio/ssl/detail/engine.hpp old mode 100755 new mode 100644 index d84fad97f6..f64288fe36 --- a/boost/asio/ssl/detail/engine.hpp +++ b/boost/asio/ssl/detail/engine.hpp @@ -2,7 +2,7 @@ // ssl/detail/engine.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/handshake_op.hpp b/boost/asio/ssl/detail/handshake_op.hpp old mode 100755 new mode 100644 index 7904af7b0d..2d683fe29f --- a/boost/asio/ssl/detail/handshake_op.hpp +++ b/boost/asio/ssl/detail/handshake_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/handshake_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/impl/engine.ipp b/boost/asio/ssl/detail/impl/engine.ipp old mode 100755 new mode 100644 index c377ab76b2..2def5dd0de --- a/boost/asio/ssl/detail/impl/engine.ipp +++ b/boost/asio/ssl/detail/impl/engine.ipp @@ -2,7 +2,7 @@ // ssl/detail/impl/engine.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/impl/openssl_init.ipp b/boost/asio/ssl/detail/impl/openssl_init.ipp old mode 100755 new mode 100644 index fa5d46b5de..5da1bca93b --- a/boost/asio/ssl/detail/impl/openssl_init.ipp +++ b/boost/asio/ssl/detail/impl/openssl_init.ipp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2021 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) diff --git a/boost/asio/ssl/detail/io.hpp b/boost/asio/ssl/detail/io.hpp old mode 100755 new mode 100644 index a59e96fbf8..f8d81c1e31 --- a/boost/asio/ssl/detail/io.hpp +++ b/boost/asio/ssl/detail/io.hpp @@ -2,7 +2,7 @@ // ssl/detail/io.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -399,6 +399,7 @@ template struct associated_executor< ssl::detail::io_op, Executor> + : detail::associated_executor_forwarding_base { typedef typename associated_executor::type type; diff --git a/boost/asio/ssl/detail/openssl_init.hpp b/boost/asio/ssl/detail/openssl_init.hpp old mode 100755 new mode 100644 index 75e3f7fcd8..0155a6f85c --- a/boost/asio/ssl/detail/openssl_init.hpp +++ b/boost/asio/ssl/detail/openssl_init.hpp @@ -2,7 +2,7 @@ // ssl/detail/openssl_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/openssl_types.hpp b/boost/asio/ssl/detail/openssl_types.hpp old mode 100755 new mode 100644 index 593f7833d0..3a87a1968c --- a/boost/asio/ssl/detail/openssl_types.hpp +++ b/boost/asio/ssl/detail/openssl_types.hpp @@ -2,7 +2,7 @@ // ssl/detail/openssl_types.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/password_callback.hpp b/boost/asio/ssl/detail/password_callback.hpp old mode 100755 new mode 100644 index f53bf5684a..74c089e82f --- a/boost/asio/ssl/detail/password_callback.hpp +++ b/boost/asio/ssl/detail/password_callback.hpp @@ -2,7 +2,7 @@ // ssl/detail/password_callback.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/read_op.hpp b/boost/asio/ssl/detail/read_op.hpp old mode 100755 new mode 100644 index ede49f1b0e..b7eea49955 --- a/boost/asio/ssl/detail/read_op.hpp +++ b/boost/asio/ssl/detail/read_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/shutdown_op.hpp b/boost/asio/ssl/detail/shutdown_op.hpp old mode 100755 new mode 100644 index 51e2c787ae..c2a33ba846 --- a/boost/asio/ssl/detail/shutdown_op.hpp +++ b/boost/asio/ssl/detail/shutdown_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/shutdown_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/stream_core.hpp b/boost/asio/ssl/detail/stream_core.hpp old mode 100755 new mode 100644 index 88bad7848b..bdeaf514f9 --- a/boost/asio/ssl/detail/stream_core.hpp +++ b/boost/asio/ssl/detail/stream_core.hpp @@ -2,7 +2,7 @@ // ssl/detail/stream_core.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/verify_callback.hpp b/boost/asio/ssl/detail/verify_callback.hpp old mode 100755 new mode 100644 index 9f04e88340..ffd0ced806 --- a/boost/asio/ssl/detail/verify_callback.hpp +++ b/boost/asio/ssl/detail/verify_callback.hpp @@ -2,7 +2,7 @@ // ssl/detail/verify_callback.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/detail/write_op.hpp b/boost/asio/ssl/detail/write_op.hpp old mode 100755 new mode 100644 index 292e5fd508..b19aee6f85 --- a/boost/asio/ssl/detail/write_op.hpp +++ b/boost/asio/ssl/detail/write_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/error.hpp b/boost/asio/ssl/error.hpp old mode 100755 new mode 100644 index 4eced604ed..efa21e5339 --- a/boost/asio/ssl/error.hpp +++ b/boost/asio/ssl/error.hpp @@ -2,7 +2,7 @@ // ssl/error.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/host_name_verification.hpp b/boost/asio/ssl/host_name_verification.hpp index 109d2b4b05..187b1ae643 100644 --- a/boost/asio/ssl/host_name_verification.hpp +++ b/boost/asio/ssl/host_name_verification.hpp @@ -2,7 +2,7 @@ // ssl/host_name_verification.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/impl/context.hpp b/boost/asio/ssl/impl/context.hpp old mode 100755 new mode 100644 index 0f55d5c80d..300c5b2f56 --- a/boost/asio/ssl/impl/context.hpp +++ b/boost/asio/ssl/impl/context.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2021 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) diff --git a/boost/asio/ssl/impl/context.ipp b/boost/asio/ssl/impl/context.ipp old mode 100755 new mode 100644 index e2f414a1e4..ec0ec8b984 --- a/boost/asio/ssl/impl/context.ipp +++ b/boost/asio/ssl/impl/context.ipp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2021 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) diff --git a/boost/asio/ssl/impl/error.ipp b/boost/asio/ssl/impl/error.ipp old mode 100755 new mode 100644 index 1a91919f45..57f149fc9e --- a/boost/asio/ssl/impl/error.ipp +++ b/boost/asio/ssl/impl/error.ipp @@ -2,7 +2,7 @@ // ssl/impl/error.ipp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/impl/host_name_verification.ipp b/boost/asio/ssl/impl/host_name_verification.ipp index ef496673ef..b0675dbeb0 100644 --- a/boost/asio/ssl/impl/host_name_verification.ipp +++ b/boost/asio/ssl/impl/host_name_verification.ipp @@ -2,7 +2,7 @@ // ssl/impl/host_name_verification.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/impl/rfc2818_verification.ipp b/boost/asio/ssl/impl/rfc2818_verification.ipp old mode 100755 new mode 100644 index 83e90c6746..38b422fe41 --- a/boost/asio/ssl/impl/rfc2818_verification.ipp +++ b/boost/asio/ssl/impl/rfc2818_verification.ipp @@ -2,7 +2,7 @@ // ssl/impl/rfc2818_verification.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/impl/src.hpp b/boost/asio/ssl/impl/src.hpp old mode 100755 new mode 100644 index fc938d674e..8d38d13e2a --- a/boost/asio/ssl/impl/src.hpp +++ b/boost/asio/ssl/impl/src.hpp @@ -2,7 +2,7 @@ // impl/ssl/src.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/rfc2818_verification.hpp b/boost/asio/ssl/rfc2818_verification.hpp old mode 100755 new mode 100644 index 46185e6081..39eddbbecc --- a/boost/asio/ssl/rfc2818_verification.hpp +++ b/boost/asio/ssl/rfc2818_verification.hpp @@ -2,7 +2,7 @@ // ssl/rfc2818_verification.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/stream.hpp b/boost/asio/ssl/stream.hpp old mode 100755 new mode 100644 index cc157b8963..0a7c805d3c --- a/boost/asio/ssl/stream.hpp +++ b/boost/asio/ssl/stream.hpp @@ -2,7 +2,7 @@ // ssl/stream.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/stream_base.hpp b/boost/asio/ssl/stream_base.hpp old mode 100755 new mode 100644 index 380bac49d3..c5993ca2bc --- a/boost/asio/ssl/stream_base.hpp +++ b/boost/asio/ssl/stream_base.hpp @@ -2,7 +2,7 @@ // ssl/stream_base.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/verify_context.hpp b/boost/asio/ssl/verify_context.hpp old mode 100755 new mode 100644 index a41dae029e..237e9f01fa --- a/boost/asio/ssl/verify_context.hpp +++ b/boost/asio/ssl/verify_context.hpp @@ -2,7 +2,7 @@ // ssl/verify_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ssl/verify_mode.hpp b/boost/asio/ssl/verify_mode.hpp old mode 100755 new mode 100644 index ca0f2620df..56059e6a5d --- a/boost/asio/ssl/verify_mode.hpp +++ b/boost/asio/ssl/verify_mode.hpp @@ -2,7 +2,7 @@ // ssl/verify_mode.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/static_thread_pool.hpp b/boost/asio/static_thread_pool.hpp index 3ca477a0d7..4245d1d114 100644 --- a/boost/asio/static_thread_pool.hpp +++ b/boost/asio/static_thread_pool.hpp @@ -2,7 +2,7 @@ // static_thread_pool.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/steady_timer.hpp b/boost/asio/steady_timer.hpp old mode 100755 new mode 100644 index bf143a112e..dd846f4fb9 --- a/boost/asio/steady_timer.hpp +++ b/boost/asio/steady_timer.hpp @@ -2,7 +2,7 @@ // steady_timer.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/strand.hpp b/boost/asio/strand.hpp old mode 100755 new mode 100644 index 8f3e4c3c67..6d6f5a5ba6 --- a/boost/asio/strand.hpp +++ b/boost/asio/strand.hpp @@ -2,7 +2,7 @@ // strand.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -48,13 +49,13 @@ public: /// Construct a strand for the specified executor. template explicit strand(const Executor1& e, - typename enable_if< + typename constraint< conditional< !is_same::value, is_convertible, false_type >::type::value - >::type* = 0) + >::type = 0) : executor_(e), impl_(strand::create_implementation(executor_)) { @@ -158,7 +159,7 @@ public: /// Forward a query to the underlying executor. /** * Do not call this function directly. It is intended for use with the - * execution::execute customisation point. + * boost::asio::query customisation point. * * For example: * @code boost::asio::strand ex = ...; @@ -167,14 +168,19 @@ public: * ... @endcode */ template - typename enable_if< + typename constraint< can_query::value, - typename query_result::type + typename conditional< + is_convertible::value, + execution::blocking_t, + typename query_result::type + >::type >::type query(const Property& p) const BOOST_ASIO_NOEXCEPT_IF(( is_nothrow_query::value)) { - return boost::asio::query(executor_, p); + return this->query_helper( + is_convertible(), p); } /// Forward a requirement to the underlying executor. @@ -188,8 +194,9 @@ public: * boost::asio::execution::blocking.never); @endcode */ template - typename enable_if< - can_require::value, + typename constraint< + can_require::value + && !is_convertible::value, strand::type >::type> @@ -213,8 +220,9 @@ public: * boost::asio::execution::blocking.never); @endcode */ template - typename enable_if< - can_prefer::value, + typename constraint< + can_prefer::value + && !is_convertible::value, strand::type >::type> @@ -271,8 +279,9 @@ public: * function object must be: @code void function(); @endcode */ template - typename enable_if< - execution::can_execute::value + typename constraint< + execution::can_execute::value, + void >::type execute(BOOST_ASIO_MOVE_ARG(Function) f) const { detail::strand_executor_service::execute(impl_, @@ -382,9 +391,9 @@ private: template static implementation_type create_implementation(const InnerExecutor& ex, - typename enable_if< + typename constraint< can_query::value - >::type* = 0) + >::type = 0) { return use_service( boost::asio::query(ex, execution::context)).create_implementation(); @@ -392,9 +401,9 @@ private: template static implementation_type create_implementation(const InnerExecutor& ex, - typename enable_if< + typename constraint< !can_query::value - >::type* = 0) + >::type = 0) { return use_service( ex.context()).create_implementation(); @@ -406,6 +415,21 @@ private: { } + template + typename query_result::type query_helper( + false_type, const Property& property) const + { + return boost::asio::query(executor_, property); + } + + template + execution::blocking_t query_helper(true_type, const Property& property) const + { + execution::blocking_t result = boost::asio::query(executor_, property); + return result == execution::blocking.always + ? execution::blocking.possibly : result; + } + Executor executor_; implementation_type impl_; }; @@ -420,9 +444,9 @@ private: /// Create a @ref strand object for an executor. template inline strand make_strand(const Executor& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) + >::type = 0) { return strand(ex); } @@ -431,9 +455,9 @@ inline strand make_strand(const Executor& ex, template inline strand make_strand(ExecutionContext& ctx, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { return strand(ctx.get_executor()); } @@ -458,7 +482,10 @@ struct equality_comparable > #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template -struct execute_member, Function> +struct execute_member, Function, + typename enable_if< + execution::can_execute::value + >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); @@ -478,7 +505,10 @@ struct query_member, Property, BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = (is_nothrow_query::value)); - typedef typename query_result::type result_type; + typedef typename conditional< + is_convertible::value, + execution::blocking_t, typename query_result::type + >::type result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) @@ -489,6 +519,7 @@ template struct require_member, Property, typename enable_if< can_require::value + && !is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); @@ -507,6 +538,7 @@ template struct prefer_member, Property, typename enable_if< can_prefer::value + && !is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); diff --git a/boost/asio/streambuf.hpp b/boost/asio/streambuf.hpp old mode 100755 new mode 100644 index 4d7e74f5b4..e980487dd3 --- a/boost/asio/streambuf.hpp +++ b/boost/asio/streambuf.hpp @@ -2,7 +2,7 @@ // streambuf.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/system_context.hpp b/boost/asio/system_context.hpp old mode 100755 new mode 100644 index c8c2f321a9..52d67e1c7d --- a/boost/asio/system_context.hpp +++ b/boost/asio/system_context.hpp @@ -2,7 +2,7 @@ // system_context.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/system_executor.hpp b/boost/asio/system_executor.hpp old mode 100755 new mode 100644 index 5bffa139b6..3e60328e27 --- a/boost/asio/system_executor.hpp +++ b/boost/asio/system_executor.hpp @@ -2,7 +2,7 @@ // system_executor.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -45,6 +45,12 @@ public: { } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_require_fn::impl; + friend struct asio_prefer_fn::impl; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Obtain an executor with the @c blocking.possibly property. /** * Do not call this function directly. It is intended for use with the @@ -170,6 +176,15 @@ public: Relationship, std::allocator >(); } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_query_fn::impl; + friend struct boost::asio::execution::detail::blocking_t<0>; + friend struct boost::asio::execution::detail::mapping_t<0>; + friend struct boost::asio::execution::detail::outstanding_work_t<0>; + friend struct boost::asio::execution::detail::relationship_t<0>; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Query the current value of the @c mapping property. /** * Do not call this function directly. It is intended for use with the @@ -279,6 +294,7 @@ public: */ std::size_t query(execution::occupancy_t) const BOOST_ASIO_NOEXCEPT; +public: /// Compare two executors for equality. /** * Two executors are equal if they refer to the same underlying io_context. @@ -299,6 +315,11 @@ public: return false; } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_execution_execute_fn::impl; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Execution function. /** * Do not call this function directly. It is intended for use with the @@ -315,6 +336,7 @@ public: } #if !defined(BOOST_ASIO_NO_TS_EXECUTORS) +public: /// Obtain the underlying execution context. system_context& context() const BOOST_ASIO_NOEXCEPT; diff --git a/boost/asio/system_timer.hpp b/boost/asio/system_timer.hpp old mode 100755 new mode 100644 index 46cc7f2000..4561c9032e --- a/boost/asio/system_timer.hpp +++ b/boost/asio/system_timer.hpp @@ -2,7 +2,7 @@ // system_timer.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/this_coro.hpp b/boost/asio/this_coro.hpp old mode 100755 new mode 100644 index 860e79111f..6cccc22731 --- a/boost/asio/this_coro.hpp +++ b/boost/asio/this_coro.hpp @@ -2,7 +2,7 @@ // this_coro.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/thread_pool.hpp b/boost/asio/thread_pool.hpp old mode 100755 new mode 100644 index 3cc157b0b9..5397e434b1 --- a/boost/asio/thread_pool.hpp +++ b/boost/asio/thread_pool.hpp @@ -2,7 +2,7 @@ // thread_pool.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -231,6 +231,12 @@ public: basic_executor_type&& other) BOOST_ASIO_NOEXCEPT; #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_require_fn::impl; + friend struct asio_prefer_fn::impl; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Obtain an executor with the @c blocking.possibly property. /** * Do not call this function directly. It is intended for use with the @@ -391,6 +397,13 @@ public: pool_, std::allocator(), bits_); } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_query_fn::impl; + friend struct boost::asio::execution::detail::mapping_t<0>; + friend struct boost::asio::execution::detail::outstanding_work_t<0>; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Query the current value of the @c bulk_guarantee property. /** * Do not call this function directly. It is intended for use with the @@ -547,6 +560,7 @@ public: return static_cast(pool_->num_threads_); } +public: /// Determine whether the thread pool is running in the current thread. /** * @return @c true if the current thread is running the thread pool. Otherwise @@ -578,6 +592,11 @@ public: || a.bits_ != b.bits_; } +#if !defined(GENERATING_DOCUMENTATION) +private: + friend struct asio_execution_execute_fn::impl; +#endif // !defined(GENERATING_DOCUMENTATION) + /// Execution function. /** * Do not call this function directly. It is intended for use with the @@ -594,6 +613,7 @@ public: integral_constant()); } +public: /// Bulk execution function. template void bulk_execute(BOOST_ASIO_MOVE_ARG(Function) f, std::size_t n) const diff --git a/boost/asio/time_traits.hpp b/boost/asio/time_traits.hpp old mode 100755 new mode 100644 index 5d55afdc13..d0aa5f8383 --- a/boost/asio/time_traits.hpp +++ b/boost/asio/time_traits.hpp @@ -2,7 +2,7 @@ // time_traits.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/bulk_execute_free.hpp b/boost/asio/traits/bulk_execute_free.hpp index aab66b8baf..d42db4e400 100644 --- a/boost/asio/traits/bulk_execute_free.hpp +++ b/boost/asio/traits/bulk_execute_free.hpp @@ -2,7 +2,7 @@ // traits/bulk_execute_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/bulk_execute_member.hpp b/boost/asio/traits/bulk_execute_member.hpp index d0eb702ca8..d923618b4d 100644 --- a/boost/asio/traits/bulk_execute_member.hpp +++ b/boost/asio/traits/bulk_execute_member.hpp @@ -2,7 +2,7 @@ // traits/bulk_execute_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/connect_free.hpp b/boost/asio/traits/connect_free.hpp index d1d3250d12..88a1c1b207 100644 --- a/boost/asio/traits/connect_free.hpp +++ b/boost/asio/traits/connect_free.hpp @@ -2,7 +2,7 @@ // traits/connect_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/connect_member.hpp b/boost/asio/traits/connect_member.hpp index 90ba9dedc5..8d907f7640 100644 --- a/boost/asio/traits/connect_member.hpp +++ b/boost/asio/traits/connect_member.hpp @@ -2,7 +2,7 @@ // traits/connect_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/equality_comparable.hpp b/boost/asio/traits/equality_comparable.hpp index c49a21f050..685713ea63 100644 --- a/boost/asio/traits/equality_comparable.hpp +++ b/boost/asio/traits/equality_comparable.hpp @@ -2,7 +2,7 @@ // traits/equality_comparable.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -56,8 +56,12 @@ template struct equality_comparable_trait(declval() == declval()), - static_cast(declval() != declval()) + static_cast( + static_cast(declval() == declval()) + ), + static_cast( + static_cast(declval() != declval()) + ) ) >::type> { diff --git a/boost/asio/traits/execute_free.hpp b/boost/asio/traits/execute_free.hpp index 6834459821..56acc2a102 100644 --- a/boost/asio/traits/execute_free.hpp +++ b/boost/asio/traits/execute_free.hpp @@ -2,7 +2,7 @@ // traits/execute_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/execute_member.hpp b/boost/asio/traits/execute_member.hpp index 87b43ce440..24a80a5d36 100644 --- a/boost/asio/traits/execute_member.hpp +++ b/boost/asio/traits/execute_member.hpp @@ -2,7 +2,7 @@ // traits/execute_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/prefer_free.hpp b/boost/asio/traits/prefer_free.hpp index 5f8b73de92..c534f3f438 100644 --- a/boost/asio/traits/prefer_free.hpp +++ b/boost/asio/traits/prefer_free.hpp @@ -2,7 +2,7 @@ // traits/prefer_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/prefer_member.hpp b/boost/asio/traits/prefer_member.hpp index 4c71c439ca..496b41761f 100644 --- a/boost/asio/traits/prefer_member.hpp +++ b/boost/asio/traits/prefer_member.hpp @@ -2,7 +2,7 @@ // traits/prefer_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/query_free.hpp b/boost/asio/traits/query_free.hpp index 335b12e5db..8cac82d41e 100644 --- a/boost/asio/traits/query_free.hpp +++ b/boost/asio/traits/query_free.hpp @@ -2,7 +2,7 @@ // traits/query_free.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/query_member.hpp b/boost/asio/traits/query_member.hpp index aa175934f5..3017db0f68 100644 --- a/boost/asio/traits/query_member.hpp +++ b/boost/asio/traits/query_member.hpp @@ -2,7 +2,7 @@ // traits/query_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/query_static_constexpr_member.hpp b/boost/asio/traits/query_static_constexpr_member.hpp index 582e7f9a97..ec0ce0d738 100644 --- a/boost/asio/traits/query_static_constexpr_member.hpp +++ b/boost/asio/traits/query_static_constexpr_member.hpp @@ -2,7 +2,7 @@ // traits/query_static_constexpr_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/require_concept_free.hpp b/boost/asio/traits/require_concept_free.hpp index 4b27af4378..2011c75235 100644 --- a/boost/asio/traits/require_concept_free.hpp +++ b/boost/asio/traits/require_concept_free.hpp @@ -2,7 +2,7 @@ // traits/require_concept_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/require_concept_member.hpp b/boost/asio/traits/require_concept_member.hpp index c8084a84c3..541ceaaeda 100644 --- a/boost/asio/traits/require_concept_member.hpp +++ b/boost/asio/traits/require_concept_member.hpp @@ -2,7 +2,7 @@ // traits/require_concept_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/require_free.hpp b/boost/asio/traits/require_free.hpp index 10a8ed079e..38fbd918b2 100644 --- a/boost/asio/traits/require_free.hpp +++ b/boost/asio/traits/require_free.hpp @@ -2,7 +2,7 @@ // traits/require_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/require_member.hpp b/boost/asio/traits/require_member.hpp index 63bb7564a6..25b3df76c6 100644 --- a/boost/asio/traits/require_member.hpp +++ b/boost/asio/traits/require_member.hpp @@ -2,7 +2,7 @@ // traits/require_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/schedule_free.hpp b/boost/asio/traits/schedule_free.hpp index 7384584a57..76d55d6313 100644 --- a/boost/asio/traits/schedule_free.hpp +++ b/boost/asio/traits/schedule_free.hpp @@ -2,7 +2,7 @@ // traits/schedule_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/schedule_member.hpp b/boost/asio/traits/schedule_member.hpp index 7e15999215..b5a1facf9a 100644 --- a/boost/asio/traits/schedule_member.hpp +++ b/boost/asio/traits/schedule_member.hpp @@ -2,7 +2,7 @@ // traits/schedule_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/set_done_free.hpp b/boost/asio/traits/set_done_free.hpp index 6966aa3b9a..4c86011bda 100644 --- a/boost/asio/traits/set_done_free.hpp +++ b/boost/asio/traits/set_done_free.hpp @@ -2,7 +2,7 @@ // traits/set_done_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/set_done_member.hpp b/boost/asio/traits/set_done_member.hpp index 25ad82ddb5..2c8b981aef 100644 --- a/boost/asio/traits/set_done_member.hpp +++ b/boost/asio/traits/set_done_member.hpp @@ -2,7 +2,7 @@ // traits/set_done_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/set_error_free.hpp b/boost/asio/traits/set_error_free.hpp index be00636f03..f950ee92a1 100644 --- a/boost/asio/traits/set_error_free.hpp +++ b/boost/asio/traits/set_error_free.hpp @@ -2,7 +2,7 @@ // traits/set_error_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/set_error_member.hpp b/boost/asio/traits/set_error_member.hpp index 7b6ed4eb70..e7df5dc9e5 100644 --- a/boost/asio/traits/set_error_member.hpp +++ b/boost/asio/traits/set_error_member.hpp @@ -2,7 +2,7 @@ // traits/set_error_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/set_value_free.hpp b/boost/asio/traits/set_value_free.hpp index 40d897c03b..2d2e5561c9 100644 --- a/boost/asio/traits/set_value_free.hpp +++ b/boost/asio/traits/set_value_free.hpp @@ -2,7 +2,7 @@ // traits/set_value_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/set_value_member.hpp b/boost/asio/traits/set_value_member.hpp index 2979f0f2cd..5ceddad5f6 100644 --- a/boost/asio/traits/set_value_member.hpp +++ b/boost/asio/traits/set_value_member.hpp @@ -2,7 +2,7 @@ // traits/set_value_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/start_free.hpp b/boost/asio/traits/start_free.hpp index 1a2a2c04cc..00ab86b91a 100644 --- a/boost/asio/traits/start_free.hpp +++ b/boost/asio/traits/start_free.hpp @@ -2,7 +2,7 @@ // traits/start_free.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/start_member.hpp b/boost/asio/traits/start_member.hpp index 6ab3c08580..9c9045e7b1 100644 --- a/boost/asio/traits/start_member.hpp +++ b/boost/asio/traits/start_member.hpp @@ -2,7 +2,7 @@ // traits/start_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/static_query.hpp b/boost/asio/traits/static_query.hpp index 2cc8fbe68f..b51bc56b5a 100644 --- a/boost/asio/traits/static_query.hpp +++ b/boost/asio/traits/static_query.hpp @@ -2,7 +2,7 @@ // traits/static_query.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/static_require.hpp b/boost/asio/traits/static_require.hpp index c0bdbbeaea..1b2812f07d 100644 --- a/boost/asio/traits/static_require.hpp +++ b/boost/asio/traits/static_require.hpp @@ -2,7 +2,7 @@ // traits/static_require.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/static_require_concept.hpp b/boost/asio/traits/static_require_concept.hpp index 97ee2285e7..ca4d7df37b 100644 --- a/boost/asio/traits/static_require_concept.hpp +++ b/boost/asio/traits/static_require_concept.hpp @@ -2,7 +2,7 @@ // traits/static_require_concept.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -92,7 +92,8 @@ struct has_static_require_concept template struct static_require_concept_trait::type>::value + has_static_require_concept::type, + typename decay::type>::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); diff --git a/boost/asio/traits/submit_free.hpp b/boost/asio/traits/submit_free.hpp index 768f61391e..1a8bee2cdb 100644 --- a/boost/asio/traits/submit_free.hpp +++ b/boost/asio/traits/submit_free.hpp @@ -2,7 +2,7 @@ // traits/submit_free.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/traits/submit_member.hpp b/boost/asio/traits/submit_member.hpp index 5cacb79559..76c4ffdb5b 100644 --- a/boost/asio/traits/submit_member.hpp +++ b/boost/asio/traits/submit_member.hpp @@ -2,7 +2,7 @@ // traits/submit_member.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/buffer.hpp b/boost/asio/ts/buffer.hpp old mode 100755 new mode 100644 index ac5768c00a..4283730fda --- a/boost/asio/ts/buffer.hpp +++ b/boost/asio/ts/buffer.hpp @@ -2,7 +2,7 @@ // ts/buffer.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/executor.hpp b/boost/asio/ts/executor.hpp old mode 100755 new mode 100644 index 06fa3eeb9d..3099ee3ff6 --- a/boost/asio/ts/executor.hpp +++ b/boost/asio/ts/executor.hpp @@ -2,7 +2,7 @@ // ts/executor.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/internet.hpp b/boost/asio/ts/internet.hpp old mode 100755 new mode 100644 index 429c5d6387..90fc10064e --- a/boost/asio/ts/internet.hpp +++ b/boost/asio/ts/internet.hpp @@ -2,7 +2,7 @@ // ts/internet.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/io_context.hpp b/boost/asio/ts/io_context.hpp old mode 100755 new mode 100644 index 4abdc5c4ab..7bc0883eb2 --- a/boost/asio/ts/io_context.hpp +++ b/boost/asio/ts/io_context.hpp @@ -2,7 +2,7 @@ // ts/io_context.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/net.hpp b/boost/asio/ts/net.hpp old mode 100755 new mode 100644 index f218dc12f3..cb26b16738 --- a/boost/asio/ts/net.hpp +++ b/boost/asio/ts/net.hpp @@ -2,7 +2,7 @@ // ts/net.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/netfwd.hpp b/boost/asio/ts/netfwd.hpp old mode 100755 new mode 100644 index f1921b62db..2d6cc7b4e5 --- a/boost/asio/ts/netfwd.hpp +++ b/boost/asio/ts/netfwd.hpp @@ -2,7 +2,7 @@ // ts/netfwd.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -46,7 +46,7 @@ class executor_binder; #if !defined(BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL) #define BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL -template +template class executor_work_guard; #endif // !defined(BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL) @@ -91,15 +91,7 @@ struct prefer_only; } // namespace execution -typedef execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > any_io_executor; +class any_io_executor; #endif // defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) diff --git a/boost/asio/ts/socket.hpp b/boost/asio/ts/socket.hpp old mode 100755 new mode 100644 index 440488ec7c..e87d49cb4f --- a/boost/asio/ts/socket.hpp +++ b/boost/asio/ts/socket.hpp @@ -2,7 +2,7 @@ // ts/socket.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/ts/timer.hpp b/boost/asio/ts/timer.hpp old mode 100755 new mode 100644 index 264a9aa80d..a9dea9602f --- a/boost/asio/ts/timer.hpp +++ b/boost/asio/ts/timer.hpp @@ -2,7 +2,7 @@ // ts/timer.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/unyield.hpp b/boost/asio/unyield.hpp old mode 100755 new mode 100644 index ee68b2ffe7..983a000546 --- a/boost/asio/unyield.hpp +++ b/boost/asio/unyield.hpp @@ -2,7 +2,7 @@ // unyield.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/use_awaitable.hpp b/boost/asio/use_awaitable.hpp old mode 100755 new mode 100644 index 724f42b264..4f13c8f6ea --- a/boost/asio/use_awaitable.hpp +++ b/boost/asio/use_awaitable.hpp @@ -2,7 +2,7 @@ // use_awaitable.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -109,9 +109,9 @@ struct use_awaitable_t /// that to construct the adapted executor. template executor_with_default(const OtherExecutor& ex, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) BOOST_ASIO_NOEXCEPT + >::type = 0) BOOST_ASIO_NOEXCEPT : InnerExecutor(ex) { } diff --git a/boost/asio/use_future.hpp b/boost/asio/use_future.hpp old mode 100755 new mode 100644 index 3bedd5ba1c..d73ba244ca --- a/boost/asio/use_future.hpp +++ b/boost/asio/use_future.hpp @@ -2,7 +2,7 @@ // use_future.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/uses_executor.hpp b/boost/asio/uses_executor.hpp old mode 100755 new mode 100644 index e6a4c33048..2c5a18b3a9 --- a/boost/asio/uses_executor.hpp +++ b/boost/asio/uses_executor.hpp @@ -2,7 +2,7 @@ // uses_executor.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/version.hpp b/boost/asio/version.hpp old mode 100755 new mode 100644 index 54e04606b0..771e3930c6 --- a/boost/asio/version.hpp +++ b/boost/asio/version.hpp @@ -2,7 +2,7 @@ // version.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -18,6 +18,6 @@ // BOOST_ASIO_VERSION % 100 is the sub-minor version // BOOST_ASIO_VERSION / 100 % 1000 is the minor version // BOOST_ASIO_VERSION / 100000 is the major version -#define BOOST_ASIO_VERSION 101800 // 1.18.0 +#define BOOST_ASIO_VERSION 101802 // 1.18.2 #endif // BOOST_ASIO_VERSION_HPP diff --git a/boost/asio/wait_traits.hpp b/boost/asio/wait_traits.hpp old mode 100755 new mode 100644 index 4608449f02..307d6e44f2 --- a/boost/asio/wait_traits.hpp +++ b/boost/asio/wait_traits.hpp @@ -2,7 +2,7 @@ // wait_traits.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/windows/basic_object_handle.hpp b/boost/asio/windows/basic_object_handle.hpp old mode 100755 new mode 100644 index 6c3d9309f9..a37ddbe6ca --- a/boost/asio/windows/basic_object_handle.hpp +++ b/boost/asio/windows/basic_object_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_object_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -83,7 +83,7 @@ public: * object handle. */ explicit basic_object_handle(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -97,11 +97,11 @@ public: */ template explicit basic_object_handle(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value, - basic_object_handle - >::type* = 0) - : impl_(context) + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { } @@ -120,7 +120,7 @@ public: */ basic_object_handle(const executor_type& ex, const native_handle_type& native_handle) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), native_handle, ec); @@ -143,10 +143,10 @@ public: template basic_object_handle(ExecutionContext& context, const native_handle_type& native_handle, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), native_handle, ec); diff --git a/boost/asio/windows/basic_overlapped_handle.hpp b/boost/asio/windows/basic_overlapped_handle.hpp old mode 100755 new mode 100644 index 928c485530..a130322834 --- a/boost/asio/windows/basic_overlapped_handle.hpp +++ b/boost/asio/windows/basic_overlapped_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_overlapped_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -86,7 +86,7 @@ public: * overlapped handle. */ explicit basic_overlapped_handle(const executor_type& ex) - : impl_(ex) + : impl_(0, ex) { } @@ -100,11 +100,11 @@ public: */ template explicit basic_overlapped_handle(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value, - basic_overlapped_handle - >::type* = 0) - : impl_(context) + defaulted_constraint + >::type = defaulted_constraint()) + : impl_(0, 0, context) { } @@ -123,7 +123,7 @@ public: */ basic_overlapped_handle(const executor_type& ex, const native_handle_type& native_handle) - : impl_(ex) + : impl_(0, ex) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), native_handle, ec); @@ -146,10 +146,10 @@ public: template basic_overlapped_handle(ExecutionContext& context, const native_handle_type& native_handle, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) - : impl_(context) + >::type = 0) + : impl_(0, 0, context) { boost::system::error_code ec; impl_.get_service().assign(impl_.get_implementation(), native_handle, ec); diff --git a/boost/asio/windows/basic_random_access_handle.hpp b/boost/asio/windows/basic_random_access_handle.hpp old mode 100755 new mode 100644 index 2afa0bdd3e..dfd17bc17a --- a/boost/asio/windows/basic_random_access_handle.hpp +++ b/boost/asio/windows/basic_random_access_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_random_access_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -85,10 +85,10 @@ public: */ template explicit basic_random_access_handle(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value, - basic_random_access_handle - >::type* = 0) + defaulted_constraint + >::type = defaulted_constraint()) : basic_overlapped_handle(context) { } @@ -128,9 +128,9 @@ public: template basic_random_access_handle(ExecutionContext& context, const native_handle_type& handle, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_overlapped_handle(context, handle) { } diff --git a/boost/asio/windows/basic_stream_handle.hpp b/boost/asio/windows/basic_stream_handle.hpp old mode 100755 new mode 100644 index 9ed81a6258..990bf8db0c --- a/boost/asio/windows/basic_stream_handle.hpp +++ b/boost/asio/windows/basic_stream_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_stream_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -87,10 +87,10 @@ public: */ template explicit basic_stream_handle(ExecutionContext& context, - typename enable_if< + typename constraint< is_convertible::value, - basic_stream_handle - >::type* = 0) + defaulted_constraint + >::type = defaulted_constraint()) : basic_overlapped_handle(context) { } @@ -129,9 +129,9 @@ public: template basic_stream_handle(ExecutionContext& context, const native_handle_type& handle, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : basic_overlapped_handle(context, handle) { } diff --git a/boost/asio/windows/object_handle.hpp b/boost/asio/windows/object_handle.hpp old mode 100755 new mode 100644 index c80358fea7..a15c9d9be5 --- a/boost/asio/windows/object_handle.hpp +++ b/boost/asio/windows/object_handle.hpp @@ -2,7 +2,7 @@ // windows/object_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/boost/asio/windows/overlapped_handle.hpp b/boost/asio/windows/overlapped_handle.hpp old mode 100755 new mode 100644 index df9953ee93..5ccc8b7686 --- a/boost/asio/windows/overlapped_handle.hpp +++ b/boost/asio/windows/overlapped_handle.hpp @@ -2,7 +2,7 @@ // windows/overlapped_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/windows/overlapped_ptr.hpp b/boost/asio/windows/overlapped_ptr.hpp old mode 100755 new mode 100644 index 4dd487c699..299a4a4d8b --- a/boost/asio/windows/overlapped_ptr.hpp +++ b/boost/asio/windows/overlapped_ptr.hpp @@ -2,7 +2,7 @@ // windows/overlapped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -53,9 +53,9 @@ public: template explicit overlapped_ptr(ExecutionContext& context, BOOST_ASIO_MOVE_ARG(Handler) handler, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) : impl_(context.get_executor(), BOOST_ASIO_MOVE_CAST(Handler)(handler)) { } @@ -64,10 +64,10 @@ public: template explicit overlapped_ptr(const Executor& ex, BOOST_ASIO_MOVE_ARG(Handler) handler, - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type* = 0) + >::type = 0) : impl_(ex, BOOST_ASIO_MOVE_CAST(Handler)(handler)) { } @@ -87,9 +87,9 @@ public: /// object. template void reset(ExecutionContext& context, BOOST_ASIO_MOVE_ARG(Handler) handler, - typename enable_if< + typename constraint< is_convertible::value - >::type* = 0) + >::type = 0) { impl_.reset(context.get_executor(), BOOST_ASIO_MOVE_CAST(Handler)(handler)); } @@ -98,10 +98,10 @@ public: /// object. template void reset(const Executor& ex, BOOST_ASIO_MOVE_ARG(Handler) handler, - typename enable_if< + typename constraint< execution::is_executor::value || is_executor::value - >::type* = 0) + >::type = 0) { impl_.reset(ex, BOOST_ASIO_MOVE_CAST(Handler)(handler)); } diff --git a/boost/asio/windows/random_access_handle.hpp b/boost/asio/windows/random_access_handle.hpp old mode 100755 new mode 100644 index bd6696b4df..8692bc1432 --- a/boost/asio/windows/random_access_handle.hpp +++ b/boost/asio/windows/random_access_handle.hpp @@ -2,7 +2,7 @@ // windows/random_access_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/windows/stream_handle.hpp b/boost/asio/windows/stream_handle.hpp old mode 100755 new mode 100644 index 59f08b98c1..a7ae638848 --- a/boost/asio/windows/stream_handle.hpp +++ b/boost/asio/windows/stream_handle.hpp @@ -2,7 +2,7 @@ // windows/stream_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/write.hpp b/boost/asio/write.hpp old mode 100755 new mode 100644 index 20cb9a8a39..11dd505197 --- a/boost/asio/write.hpp +++ b/boost/asio/write.hpp @@ -2,7 +2,7 @@ // write.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -76,9 +76,9 @@ namespace asio { */ template std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Write all of the supplied data to a stream before returning. /** @@ -119,9 +119,9 @@ std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, template std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Write a certain amount of data to a stream before returning. /** @@ -173,9 +173,9 @@ template std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Write a certain amount of data to a stream before returning. /** @@ -220,9 +220,9 @@ template std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type* = 0); + >::type = 0); #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1) @@ -256,10 +256,12 @@ std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers, template std::size_t write(SyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Write all of the supplied data to a stream before returning. /** @@ -292,10 +294,12 @@ template std::size_t write(SyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Write a certain amount of data to a stream before returning. /** @@ -338,10 +342,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Write a certain amount of data to a stream before returning. /** @@ -385,10 +391,12 @@ template ::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if !defined(BOOST_ASIO_NO_IOSTREAM) @@ -566,9 +574,9 @@ std::size_t write(SyncWriteStream& s, basic_streambuf& b, */ template std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Write all of the supplied data to a stream before returning. /** @@ -600,9 +608,9 @@ std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, template std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Write a certain amount of data to a stream before returning. /** @@ -644,9 +652,9 @@ template std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Write a certain amount of data to a stream before returning. /** @@ -689,9 +697,9 @@ template std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, boost::system::error_code& ec, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /*@}*/ /** @@ -765,9 +773,9 @@ async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers, BOOST_ASIO_MOVE_ARG(WriteHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncWriteStream::executor_type), - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type* = 0); + >::type = 0); /// Start an asynchronous operation to write a certain amount of data to a /// stream. @@ -845,9 +853,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_const_buffer_sequence::value - >::type* = 0); + >::type = 0); #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1) @@ -906,10 +914,12 @@ async_write(AsyncWriteStream& s, BOOST_ASIO_MOVE_ARG(WriteHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncWriteStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); /// Start an asynchronous operation to write a certain amount of data to a /// stream. @@ -978,10 +988,12 @@ async_write(AsyncWriteStream& s, BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v1::type>::value - && !is_dynamic_buffer_v2::type>::value - >::type* = 0); + >::type = 0, + typename constraint< + !is_dynamic_buffer_v2::type>::value + >::type = 0); #if !defined(BOOST_ASIO_NO_EXTENSIONS) #if !defined(BOOST_ASIO_NO_IOSTREAM) @@ -1162,9 +1174,9 @@ async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers, BOOST_ASIO_MOVE_ARG(WriteHandler) handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN( typename AsyncWriteStream::executor_type), - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /// Start an asynchronous operation to write a certain amount of data to a /// stream. @@ -1232,9 +1244,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers, CompletionCondition completion_condition, BOOST_ASIO_MOVE_ARG(WriteHandler) handler, - typename enable_if< + typename constraint< is_dynamic_buffer_v2::value - >::type* = 0); + >::type = 0); /*@}*/ diff --git a/boost/asio/write_at.hpp b/boost/asio/write_at.hpp old mode 100755 new mode 100644 index f8c79a45c2..680ac007a1 --- a/boost/asio/write_at.hpp +++ b/boost/asio/write_at.hpp @@ -2,7 +2,7 @@ // write_at.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/asio/yield.hpp b/boost/asio/yield.hpp old mode 100755 new mode 100644 index afdec0137b..5f9ddd007b --- a/boost/asio/yield.hpp +++ b/boost/asio/yield.hpp @@ -2,7 +2,7 @@ // yield.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) diff --git a/boost/beast.hpp b/boost/beast.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/http/icy_stream.hpp b/boost/beast/_experimental/http/icy_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/http/impl/icy_stream.hpp b/boost/beast/_experimental/http/impl/icy_stream.hpp old mode 100755 new mode 100644 index c2760c5589..308d61a990 --- a/boost/beast/_experimental/http/impl/icy_stream.hpp +++ b/boost/beast/_experimental/http/impl/icy_stream.hpp @@ -95,10 +95,16 @@ public: { // Try to read the first three characters BOOST_ASIO_CORO_YIELD - s_.next_layer().async_read_some( - net::mutable_buffer( - s_.buf_ + s_.n_, 3 - s_.n_), - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::icy_stream::async_read_some")); + + s_.next_layer().async_read_some( + net::mutable_buffer( + s_.buf_ + s_.n_, 3 - s_.n_), + std::move(*this)); + } s_.n_ += static_cast(bytes_transferred); if(ec) goto upcall; @@ -127,8 +133,14 @@ public: else { BOOST_ASIO_CORO_YIELD - s_.next_layer().async_read_some( - b_, std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::icy_stream::async_read_some")); + + s_.next_layer().async_read_some( + b_, std::move(*this)); + } } upcall: if(! cont) @@ -136,9 +148,15 @@ public: ec_ = ec; n_ = bytes_transferred; BOOST_ASIO_CORO_YIELD - s_.next_layer().async_read_some( - net::mutable_buffer{}, - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::icy_stream::async_read_some")); + + s_.next_layer().async_read_some( + net::mutable_buffer{}, + std::move(*this)); + } ec = ec_; bytes_transferred = n_; } diff --git a/boost/beast/_experimental/test/detail/stream_state.hpp b/boost/beast/_experimental/test/detail/stream_state.hpp new file mode 100644 index 0000000000..5df55cf3f9 --- /dev/null +++ b/boost/beast/_experimental/test/detail/stream_state.hpp @@ -0,0 +1,135 @@ +// +// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) +// Copyright (c) 2020 Richard Hodges (hodges.r@gmail.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) +// +// Official repository: https://github.com/boostorg/beast +// + +#ifndef BOOST_BEAST_TEST_DETAIL_STREAM_STATE_HPP +#define BOOST_BEAST_TEST_DETAIL_STREAM_STATE_HPP + +#include +#include +#include + +#include +#include +#include +#include + +namespace boost { +namespace beast { +namespace test { +namespace detail { + +struct stream_state; + +struct stream_service_impl +{ + std::mutex m_; + std::vector v_; + + BOOST_BEAST_DECL + void + remove(stream_state& impl); +}; + +//------------------------------------------------------------------------------ + +class stream_service + : public beast::detail::service_base +{ + boost::shared_ptr sp_; + + BOOST_BEAST_DECL + void + shutdown() override; + +public: + BOOST_BEAST_DECL + explicit + stream_service(net::execution_context& ctx); + + BOOST_BEAST_DECL + static + auto + make_impl( + net::any_io_executor exec, + test::fail_count* fc) -> + boost::shared_ptr; +}; + +//------------------------------------------------------------------------------ + +struct stream_read_op_base +{ + virtual ~stream_read_op_base() = default; + virtual void operator()(error_code ec) = 0; +}; + +//------------------------------------------------------------------------------ + +enum class stream_status +{ + ok, + eof, +}; + +//------------------------------------------------------------------------------ + +struct stream_state +{ + net::any_io_executor exec; + boost::weak_ptr wp; + std::mutex m; + flat_buffer b; + std::condition_variable cv; + std::unique_ptr op; + stream_status code = stream_status::ok; + fail_count* fc = nullptr; + std::size_t nread = 0; + std::size_t nread_bytes = 0; + std::size_t nwrite = 0; + std::size_t nwrite_bytes = 0; + std::size_t read_max = + (std::numeric_limits::max)(); + std::size_t write_max = + (std::numeric_limits::max)(); + + BOOST_BEAST_DECL + stream_state( + net::any_io_executor exec_, + boost::weak_ptr wp_, + fail_count* fc_); + + BOOST_BEAST_DECL + ~stream_state(); + + BOOST_BEAST_DECL + void + remove() noexcept; + + BOOST_BEAST_DECL + void + notify_read(); + + BOOST_BEAST_DECL + void + cancel_read(); +}; + + + +} // detail +} // test +} // beast +} // boost + +#ifdef BOOST_BEAST_HEADER_ONLY +#include +#endif + +#endif // BOOST_BEAST_TEST_DETAIL_STREAM_STATE_HPP diff --git a/boost/beast/_experimental/test/detail/stream_state.ipp b/boost/beast/_experimental/test/detail/stream_state.ipp new file mode 100644 index 0000000000..c86c7e9777 --- /dev/null +++ b/boost/beast/_experimental/test/detail/stream_state.ipp @@ -0,0 +1,149 @@ +// +// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) +// Copyright (c) 2020 Richard Hodges (hodges.r@gmail.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) +// +// Official repository: https://github.com/boostorg/beast +// + +#ifndef BOOST_BEAST_TEST_DETAIL_STREAM_STATE_IPP +#define BOOST_BEAST_TEST_DETAIL_STREAM_STATE_IPP + +#include + +namespace boost { +namespace beast { +namespace test { + +namespace detail { + +//------------------------------------------------------------------------------ + +stream_service:: +stream_service(net::execution_context& ctx) + : beast::detail::service_base(ctx) + , sp_(boost::make_shared()) +{ +} + +void +stream_service:: +shutdown() +{ + std::vector> v; + std::lock_guard g1(sp_->m_); + v.reserve(sp_->v_.size()); + for(auto p : sp_->v_) + { + std::lock_guard g2(p->m); + v.emplace_back(std::move(p->op)); + p->code = detail::stream_status::eof; + } +} + +auto +stream_service:: +make_impl( + net::any_io_executor exec, + test::fail_count* fc) -> + boost::shared_ptr +{ +#if defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + auto& ctx = exec.context(); +#else + auto& ctx = net::query( + exec, + net::execution::context); +#endif + auto& svc = net::use_service(ctx); + auto sp = boost::make_shared(exec, svc.sp_, fc); + std::lock_guard g(svc.sp_->m_); + svc.sp_->v_.push_back(sp.get()); + return sp; +} + +//------------------------------------------------------------------------------ + +void +stream_service_impl:: +remove(stream_state& impl) +{ + std::lock_guard g(m_); + *std::find( + v_.begin(), v_.end(), + &impl) = std::move(v_.back()); + v_.pop_back(); +} + +//------------------------------------------------------------------------------ + +stream_state:: +stream_state( + net::any_io_executor exec_, + boost::weak_ptr wp_, + fail_count* fc_) + : exec(std::move(exec_)) + , wp(std::move(wp_)) + , fc(fc_) +{ +} + +stream_state:: +~stream_state() +{ + // cancel outstanding read + if(op != nullptr) + (*op)(net::error::operation_aborted); +} + +void +stream_state:: +remove() noexcept +{ + auto sp = wp.lock(); + + // If this goes off, it means the lifetime of a test::stream object + // extended beyond the lifetime of the associated execution context. + BOOST_ASSERT(sp); + + sp->remove(*this); +} + +void +stream_state:: +notify_read() +{ + if(op) + { + auto op_ = std::move(op); + op_->operator()(error_code{}); + } + else + { + cv.notify_all(); + } +} + +void +stream_state:: +cancel_read() +{ + std::unique_ptr p; + { + std::lock_guard lock(m); + code = stream_status::eof; + p = std::move(op); + } + if(p != nullptr) + (*p)(net::error::operation_aborted); +} + +} // detail + +} // test +} // beast +} // boost + +#endif // BOOST_BEAST_TEST_DETAIL_STREAM_STATE_IPP diff --git a/boost/beast/_experimental/test/error.hpp b/boost/beast/_experimental/test/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/test/fail_count.hpp b/boost/beast/_experimental/test/fail_count.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/test/handler.hpp b/boost/beast/_experimental/test/handler.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/test/impl/error.hpp b/boost/beast/_experimental/test/impl/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/test/impl/error.ipp b/boost/beast/_experimental/test/impl/error.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/test/impl/fail_count.ipp b/boost/beast/_experimental/test/impl/fail_count.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/test/impl/stream.hpp b/boost/beast/_experimental/test/impl/stream.hpp old mode 100755 new mode 100644 index f7eac6afdb..5702583329 --- a/boost/beast/_experimental/test/impl/stream.hpp +++ b/boost/beast/_experimental/test/impl/stream.hpp @@ -27,53 +27,19 @@ namespace test { //------------------------------------------------------------------------------ -struct stream::service_impl -{ - std::mutex m_; - std::vector v_; - - BOOST_BEAST_DECL - void - remove(state& impl); -}; - -class stream::service - : public beast::detail::service_base -{ - boost::shared_ptr sp_; - - BOOST_BEAST_DECL - void - shutdown() override; - -public: - BOOST_BEAST_DECL - explicit - service(net::execution_context& ctx); - - BOOST_BEAST_DECL - static - auto - make_impl( - net::io_context& ctx, - test::fail_count* fc) -> - boost::shared_ptr; -}; - -//------------------------------------------------------------------------------ - +template template -class stream::read_op : public stream::read_op_base +class basic_stream::read_op : public detail::stream_read_op_base { using ex1_type = - net::io_context::executor_type; + executor_type; using ex2_type = net::associated_executor_t; struct lambda { Handler h_; - boost::weak_ptr wp_; + boost::weak_ptr wp_; Buffers b_; #if defined(BOOST_ASIO_NO_TS_EXECUTORS) net::any_io_executor wg2_; @@ -87,7 +53,7 @@ class stream::read_op : public stream::read_op_base template lambda( Handler_&& h, - boost::shared_ptr const& s, + boost::shared_ptr const& s, Buffers const& b) : h_(std::forward(h)) , wp_(s) @@ -95,11 +61,11 @@ class stream::read_op : public stream::read_op_base #if defined(BOOST_ASIO_NO_TS_EXECUTORS) , wg2_(net::prefer( net::get_associated_executor( - h_, s->ioc.get_executor()), + h_, s->exec), net::execution::outstanding_work.tracked)) #else // defined(BOOST_ASIO_NO_TS_EXECUTORS) , wg2_(net::get_associated_executor( - h_, s->ioc.get_executor())) + h_, s->exec)) #endif // defined(BOOST_ASIO_NO_TS_EXECUTORS) { } @@ -151,43 +117,44 @@ class stream::read_op : public stream::read_op_base }; lambda fn_; -#if defined(BOOST_ASIO_NO_TS_EXECUTORS) +#if defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + net::executor_work_guard wg1_; +#else net::any_io_executor wg1_; -#else // defined(BOOST_ASIO_NO_TS_EXECUTORS) - net::executor_work_guard wg1_; -#endif // defined(BOOST_ASIO_NO_TS_EXECUTORS) +#endif public: template read_op( Handler_&& h, - boost::shared_ptr const& s, + boost::shared_ptr const& s, Buffers const& b) : fn_(std::forward(h), s, b) -#if defined(BOOST_ASIO_NO_TS_EXECUTORS) - , wg1_(net::prefer(s->ioc.get_executor(), +#if defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + , wg1_(s->exec) +#else + , wg1_(net::prefer(s->exec, net::execution::outstanding_work.tracked)) -#else // defined(BOOST_ASIO_NO_TS_EXECUTORS) - , wg1_(s->ioc.get_executor()) -#endif // defined(BOOST_ASIO_NO_TS_EXECUTORS) +#endif { } void operator()(error_code ec) override { -#if defined(BOOST_ASIO_NO_TS_EXECUTORS) - net::post(wg1_, beast::bind_front_handler(std::move(fn_), ec)); - wg1_ = net::any_io_executor(); // probably unnecessary -#else // defined(BOOST_ASIO_NO_TS_EXECUTORS) +#if defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) net::post(wg1_.get_executor(), beast::bind_front_handler(std::move(fn_), ec)); wg1_.reset(); -#endif // defined(BOOST_ASIO_NO_TS_EXECUTORS) +#else + net::post(wg1_, beast::bind_front_handler(std::move(fn_), ec)); + wg1_ = net::any_io_executor(); // probably unnecessary +#endif } }; -struct stream::run_read_op +template +struct basic_stream::run_read_op { template< class ReadHandler, @@ -195,7 +162,7 @@ struct stream::run_read_op void operator()( ReadHandler&& h, - boost::shared_ptr const& in, + boost::shared_ptr const& in, MutableBufferSequence const& buffers) { // If you get an error on the following line it means @@ -209,7 +176,7 @@ struct stream::run_read_op initiate_read( in, - std::unique_ptr{ + std::unique_ptr{ new read_op< typename std::decay::type, MutableBufferSequence>( @@ -220,7 +187,8 @@ struct stream::run_read_op } }; -struct stream::run_write_op +template +struct basic_stream::run_write_op { template< class WriteHandler, @@ -228,8 +196,8 @@ struct stream::run_write_op void operator()( WriteHandler&& h, - boost::shared_ptr in_, - boost::weak_ptr out_, + boost::shared_ptr in_, + boost::weak_ptr out_, ConstBufferSequence const& buffers) { // If you get an error on the following line it means @@ -245,7 +213,7 @@ struct stream::run_write_op auto const upcall = [&](error_code ec, std::size_t n) { net::post( - in_->ioc.get_executor(), + in_->exec, beast::bind_front_handler(std::move(h), ec, n)); }; @@ -281,9 +249,10 @@ struct stream::run_write_op //------------------------------------------------------------------------------ +template template std::size_t -stream:: +basic_stream:: read_some(MutableBufferSequence const& buffers) { static_assert(net::is_mutable_buffer_sequence< @@ -296,9 +265,10 @@ read_some(MutableBufferSequence const& buffers) return n; } +template template std::size_t -stream:: +basic_stream:: read_some(MutableBufferSequence const& buffers, error_code& ec) { @@ -326,7 +296,7 @@ read_some(MutableBufferSequence const& buffers, { return in_->b.size() > 0 || - in_->code != status::ok; + in_->code != detail::stream_status::ok; }); // deliver bytes before eof @@ -340,14 +310,16 @@ read_some(MutableBufferSequence const& buffers, } // deliver error - BOOST_ASSERT(in_->code != status::ok); + BOOST_ASSERT(in_->code != detail::stream_status::ok); ec = net::error::eof; return 0; } -template -BOOST_BEAST_ASYNC_RESULT2(ReadHandler) -stream:: +template +template +BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(error_code, std::size_t)) +basic_stream:: async_read_some( MutableBufferSequence const& buffers, ReadHandler&& handler) @@ -365,9 +337,10 @@ async_read_some( buffers); } +template template std::size_t -stream:: +basic_stream:: write_some(ConstBufferSequence const& buffers) { static_assert(net::is_const_buffer_sequence< @@ -381,9 +354,10 @@ write_some(ConstBufferSequence const& buffers) return bytes_transferred; } +template template std::size_t -stream:: +basic_stream:: write_some( ConstBufferSequence const& buffers, error_code& ec) { @@ -425,9 +399,11 @@ write_some( return n; } -template -BOOST_BEAST_ASYNC_RESULT2(WriteHandler) -stream:: +template +template +BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(error_code, std::size_t)) +basic_stream:: async_write_some( ConstBufferSequence const& buffers, WriteHandler&& handler) @@ -448,11 +424,11 @@ async_write_some( //------------------------------------------------------------------------------ -template +template void async_teardown( role_type, - stream& s, + basic_stream& s, TeardownHandler&& handler) { error_code ec; @@ -477,8 +453,8 @@ async_teardown( //------------------------------------------------------------------------------ -template -stream +template +basic_stream connect(stream& to, Arg1&& arg1, ArgN&&... argn) { stream from{ @@ -488,6 +464,34 @@ connect(stream& to, Arg1&& arg1, ArgN&&... argn) return from; } +namespace detail +{ +template +struct extract_executor_op +{ + To operator()(net::any_io_executor& ex) const + { + assert(ex.template target()); + return *ex.template target(); + } +}; + +template<> +struct extract_executor_op +{ + net::any_io_executor operator()(net::any_io_executor& ex) const + { + return ex; + } +}; +} + +template +auto basic_stream::get_executor() noexcept -> executor_type +{ + return detail::extract_executor_op()(in_->exec); +} + } // test } // beast } // boost diff --git a/boost/beast/_experimental/test/impl/stream.ipp b/boost/beast/_experimental/test/impl/stream.ipp old mode 100755 new mode 100644 index ec544ce159..98ddea9003 --- a/boost/beast/_experimental/test/impl/stream.ipp +++ b/boost/beast/_experimental/test/impl/stream.ipp @@ -23,62 +23,10 @@ namespace test { //------------------------------------------------------------------------------ -stream:: -service:: -service(net::execution_context& ctx) - : beast::detail::service_base(ctx) - , sp_(boost::make_shared()) -{ -} - -void -stream:: -service:: -shutdown() -{ - std::vector> v; - std::lock_guard g1(sp_->m_); - v.reserve(sp_->v_.size()); - for(auto p : sp_->v_) - { - std::lock_guard g2(p->m); - v.emplace_back(std::move(p->op)); - p->code = status::eof; - } -} - -auto -stream:: -service:: -make_impl( - net::io_context& ctx, - test::fail_count* fc) -> - boost::shared_ptr -{ - auto& svc = net::use_service(ctx); - auto sp = boost::make_shared(ctx, svc.sp_, fc); - std::lock_guard g(svc.sp_->m_); - svc.sp_->v_.push_back(sp.get()); - return sp; -} - -void -stream:: -service_impl:: -remove(state& impl) -{ - std::lock_guard g(m_); - *std::find( - v_.begin(), v_.end(), - &impl) = std::move(v_.back()); - v_.pop_back(); -} - -//------------------------------------------------------------------------------ - -void stream::initiate_read( - boost::shared_ptr const& in_, - std::unique_ptr&& op, +template +void basic_stream::initiate_read( + boost::shared_ptr const& in_, + std::unique_ptr&& op, std::size_t buf_size) { std::unique_lock lock(in_->m); @@ -106,7 +54,7 @@ void stream::initiate_read( } // deliver error - if(in_->code != status::ok) + if(in_->code != detail::stream_status::ok) { lock.unlock(); (*op)(net::error::eof); @@ -117,98 +65,36 @@ void stream::initiate_read( in_->op = std::move(op); } -stream:: -state:: -state( - net::io_context& ioc_, - boost::weak_ptr wp_, - fail_count* fc_) - : ioc(ioc_) - , wp(std::move(wp_)) - , fc(fc_) -{ -} - -stream:: -state:: -~state() -{ - // cancel outstanding read - if(op != nullptr) - (*op)(net::error::operation_aborted); -} - -void -stream:: -state:: -remove() noexcept -{ - auto sp = wp.lock(); - - // If this goes off, it means the lifetime of a test::stream object - // extended beyond the lifetime of the associated execution context. - BOOST_ASSERT(sp); - - sp->remove(*this); -} - -void -stream:: -state:: -notify_read() -{ - if(op) - { - auto op_ = std::move(op); - op_->operator()(error_code{}); - } - else - { - cv.notify_all(); - } -} - -void -stream:: -state:: -cancel_read() -{ - std::unique_ptr p; - { - std::lock_guard lock(m); - code = status::eof; - p = std::move(op); - } - if(p != nullptr) - (*p)(net::error::operation_aborted); -} - //------------------------------------------------------------------------------ -stream:: -~stream() +template +basic_stream:: +~basic_stream() { close(); in_->remove(); } -stream:: -stream(stream&& other) +template +basic_stream:: +basic_stream(basic_stream&& other) { - auto in = service::make_impl( - other.in_->ioc, other.in_->fc); + auto in = detail::stream_service::make_impl( + other.in_->exec, other.in_->fc); in_ = std::move(other.in_); out_ = std::move(other.out_); other.in_ = in; } -stream& -stream:: -operator=(stream&& other) + +template +basic_stream& +basic_stream:: +operator=(basic_stream&& other) { close(); - auto in = service::make_impl( - other.in_->ioc, other.in_->fc); + auto in = detail::stream_service::make_impl( + other.in_->exec, other.in_->fc); in_->remove(); in_ = std::move(other.in_); out_ = std::move(other.out_); @@ -218,46 +104,51 @@ operator=(stream&& other) //------------------------------------------------------------------------------ -stream:: -stream(net::io_context& ioc) - : in_(service::make_impl(ioc, nullptr)) +template +basic_stream:: +basic_stream(executor_type exec) + : in_(detail::stream_service::make_impl(std::move(exec), nullptr)) { } -stream:: -stream( +template +basic_stream:: +basic_stream( net::io_context& ioc, fail_count& fc) - : in_(service::make_impl(ioc, &fc)) + : in_(detail::stream_service::make_impl(ioc.get_executor(), &fc)) { } -stream:: -stream( +template +basic_stream:: +basic_stream( net::io_context& ioc, string_view s) - : in_(service::make_impl(ioc, nullptr)) + : in_(detail::stream_service::make_impl(ioc.get_executor(), nullptr)) { in_->b.commit(net::buffer_copy( in_->b.prepare(s.size()), net::buffer(s.data(), s.size()))); } -stream:: -stream( +template +basic_stream:: +basic_stream( net::io_context& ioc, fail_count& fc, string_view s) - : in_(service::make_impl(ioc, &fc)) + : in_(detail::stream_service::make_impl(ioc.get_executor(), &fc)) { in_->b.commit(net::buffer_copy( in_->b.prepare(s.size()), net::buffer(s.data(), s.size()))); } +template void -stream:: -connect(stream& remote) +basic_stream:: +connect(basic_stream& remote) { BOOST_ASSERT(! out_.lock()); BOOST_ASSERT(! remote.out_.lock()); @@ -266,12 +157,13 @@ connect(stream& remote) std::lock_guard guard2{remote.in_->m, std::adopt_lock}; out_ = remote.in_; remote.out_ = in_; - in_->code = status::ok; - remote.in_->code = status::ok; + in_->code = detail::stream_status::ok; + remote.in_->code = detail::stream_status::ok; } +template string_view -stream:: +basic_stream:: str() const { auto const bs = in_->b.data(); @@ -281,8 +173,9 @@ str() const return {static_cast(b.data()), b.size()}; } +template void -stream:: +basic_stream:: append(string_view s) { std::lock_guard lock{in_->m}; @@ -291,16 +184,18 @@ append(string_view s) net::buffer(s.data(), s.size()))); } +template void -stream:: +basic_stream:: clear() { std::lock_guard lock{in_->m}; in_->b.consume(in_->b.size()); } +template void -stream:: +basic_stream:: close() { in_->cancel_read(); @@ -314,31 +209,33 @@ close() if(out) { std::lock_guard lock(out->m); - if(out->code == status::ok) + if(out->code == detail::stream_status::ok) { - out->code = status::eof; + out->code = detail::stream_status::eof; out->notify_read(); } } } } +template void -stream:: +basic_stream:: close_remote() { std::lock_guard lock{in_->m}; - if(in_->code == status::ok) + if(in_->code == detail::stream_status::ok) { - in_->code = status::eof; + in_->code = detail::stream_status::eof; in_->notify_read(); } } +template void teardown( role_type, - stream& s, + basic_stream& s, boost::system::error_code& ec) { if( s.in_->fc && @@ -356,20 +253,18 @@ teardown( //------------------------------------------------------------------------------ -stream -connect(stream& to) +template +basic_stream +connect(basic_stream& to) { -#if defined(BOOST_ASIO_NO_TS_EXECUTORS) - stream from{net::query(to.get_executor(), net::execution::context)}; -#else // defined(BOOST_ASIO_NO_TS_EXECUTORS) - stream from{to.get_executor().context()}; -#endif // defined(BOOST_ASIO_NO_TS_EXECUTORS) + basic_stream from(to.get_executor()); from.connect(to); return from; } +template void -connect(stream& s1, stream& s2) +connect(basic_stream& s1, basic_stream& s2) { s1.connect(s2); } diff --git a/boost/beast/_experimental/test/stream.hpp b/boost/beast/_experimental/test/stream.hpp old mode 100755 new mode 100644 index 9d829530c1..f96269234b --- a/boost/beast/_experimental/test/stream.hpp +++ b/boost/beast/_experimental/test/stream.hpp @@ -16,10 +16,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -106,71 +108,45 @@ namespace test { @li AsyncReadStream @li AsyncWriteStream */ -class stream -{ - struct state; +template +class basic_stream; - boost::shared_ptr in_; - boost::weak_ptr out_; +template +void +teardown( + role_type, + basic_stream& s, + boost::system::error_code& ec); - enum class status - { - ok, - eof, - }; +template +void +async_teardown( + role_type role, + basic_stream& s, + TeardownHandler&& handler); - class service; - struct service_impl; +template +class basic_stream +{ +public: + /// The type of the executor associated with the object. + using executor_type = + Executor; - struct read_op_base + /// Rebinds the socket type to another executor. + template + struct rebind_executor { - virtual ~read_op_base() = default; - virtual void operator()(error_code ec) = 0; + /// The socket type when rebound to the specified executor. + typedef basic_stream other; }; - struct state - { - friend class stream; - - net::io_context& ioc; - boost::weak_ptr wp; - std::mutex m; - flat_buffer b; - std::condition_variable cv; - std::unique_ptr op; - status code = status::ok; - fail_count* fc = nullptr; - std::size_t nread = 0; - std::size_t nread_bytes = 0; - std::size_t nwrite = 0; - std::size_t nwrite_bytes = 0; - std::size_t read_max = - (std::numeric_limits::max)(); - std::size_t write_max = - (std::numeric_limits::max)(); - - BOOST_BEAST_DECL - state( - net::io_context& ioc_, - boost::weak_ptr wp_, - fail_count* fc_); - - - BOOST_BEAST_DECL - ~state(); - - BOOST_BEAST_DECL - void - remove() noexcept; - - BOOST_BEAST_DECL - void - notify_read(); - - BOOST_BEAST_DECL - void - cancel_read(); - }; +private: + template + friend class basic_stream; + + boost::shared_ptr in_; + boost::weak_ptr out_; template class read_op; @@ -178,14 +154,34 @@ class stream struct run_read_op; struct run_write_op; - BOOST_BEAST_DECL static void initiate_read( - boost::shared_ptr const& in, - std::unique_ptr&& op, + boost::shared_ptr const& in, + std::unique_ptr&& op, std::size_t buf_size); +#if ! BOOST_BEAST_DOXYGEN + // boost::asio::ssl::stream needs these + // DEPRECATED + template + friend class boost::asio::ssl::stream; + // DEPRECATED + using lowest_layer_type = basic_stream; + // DEPRECATED + lowest_layer_type& + lowest_layer() noexcept + { + return *this; + } + // DEPRECATED + lowest_layer_type const& + lowest_layer() const noexcept + { + return *this; + } +#endif + public: using buffer_type = flat_buffer; @@ -199,25 +195,40 @@ public: the peer will see the error `net::error::connection_reset` when performing any reads or writes. */ - BOOST_BEAST_DECL - ~stream(); + ~basic_stream(); /** Move Constructor Moving the stream while asynchronous operations are pending results in undefined behavior. */ - BOOST_BEAST_DECL - stream(stream&& other); + basic_stream(basic_stream&& other); + + /** Move Constructor + + Moving the stream while asynchronous operations are pending + results in undefined behavior. + */ + template + basic_stream(basic_stream&& other) + : in_(std::move(other.in_)) + , out_(std::move(other.out_)) + { + assert(in_->exec.target_type() == typeid(Executor2)); + in_->exec = executor_type(*in_->exec.template target()); + } /** Move Assignment Moving the stream while asynchronous operations are pending results in undefined behavior. */ - BOOST_BEAST_DECL - stream& - operator=(stream&& other); + basic_stream& + operator=(basic_stream&& other); + + template + basic_stream& + operator==(basic_stream&& other); /** Construct a stream @@ -226,9 +237,24 @@ public: @param ioc The `io_context` object that the stream will use to dispatch handlers for any asynchronous operations. */ - BOOST_BEAST_DECL + template + explicit basic_stream(ExecutionContext& context, + typename std::enable_if< + std::is_convertible::value + >::type* = 0) + : basic_stream(context.get_executor()) + { + } + + /** Construct a stream + + The stream will be created in a disconnected state. + + @param exec The `executor` object that the stream will use to + dispatch handlers for any asynchronous operations. + */ explicit - stream(net::io_context& ioc); + basic_stream(executor_type exec); /** Construct a stream @@ -242,8 +268,7 @@ public: fail count. When the fail count reaches its internal limit, a simulated failure error will be raised. */ - BOOST_BEAST_DECL - stream( + basic_stream( net::io_context& ioc, fail_count& fc); @@ -257,8 +282,7 @@ public: @param s A string which will be appended to the input area, not including the null terminator. */ - BOOST_BEAST_DECL - stream( + basic_stream( net::io_context& ioc, string_view s); @@ -277,27 +301,18 @@ public: @param s A string which will be appended to the input area, not including the null terminator. */ - BOOST_BEAST_DECL - stream( + basic_stream( net::io_context& ioc, fail_count& fc, string_view s); /// Establish a connection - BOOST_BEAST_DECL void - connect(stream& remote); - - /// The type of the executor associated with the object. - using executor_type = - net::io_context::executor_type; + connect(basic_stream& remote); /// Return the executor associated with the object. executor_type - get_executor() noexcept - { - return in_->ioc.get_executor(); - }; + get_executor() noexcept; /// Set the maximum number of bytes returned by read_some void @@ -321,17 +336,14 @@ public: } /// Returns a string view representing the pending input data - BOOST_BEAST_DECL string_view str() const; /// Appends a string to the pending input data - BOOST_BEAST_DECL void append(string_view s); /// Clear the pending input area - BOOST_BEAST_DECL void clear(); @@ -368,7 +380,6 @@ public: The other end of the connection will see `error::eof` after reading all the remaining data. */ - BOOST_BEAST_DECL void close(); @@ -377,7 +388,6 @@ public: This end of the connection will see `error::eof` after reading all the remaining data. */ - BOOST_BEAST_DECL void close_remote(); @@ -456,11 +466,12 @@ public: */ template< class MutableBufferSequence, - BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) ReadHandler + BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(error_code, std::size_t)) async_read_some( MutableBufferSequence const& buffers, - ReadHandler&& handler); + ReadHandler&& handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)); /** Write some data to the stream. @@ -534,36 +545,36 @@ public: */ template< class ConstBufferSequence, - BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) WriteHandler + BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(error_code, std::size_t)) async_write_some( ConstBufferSequence const& buffers, - WriteHandler&& handler); + WriteHandler&& handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type) + ); #if ! BOOST_BEAST_DOXYGEN friend - BOOST_BEAST_DECL void - teardown( + teardown<>( role_type, - stream& s, + basic_stream& s, boost::system::error_code& ec); - template + template friend - BOOST_BEAST_DECL void async_teardown( role_type role, - stream& s, + basic_stream& s, TeardownHandler&& handler); #endif }; #if ! BOOST_BEAST_DOXYGEN -inline +template void -beast_close_socket(stream& s) +beast_close_socket(basic_stream& s) { s.close(); } @@ -578,31 +589,34 @@ beast_close_socket(stream& s) @return The new, connected stream. */ +template template -stream -connect(stream& to, Args&&... args); +bascic_stream +connect(basic_stream& to, Args&&... args); #else -BOOST_BEAST_DECL -stream -connect(stream& to); +template +basic_stream +connect(basic_stream& to); -BOOST_BEAST_DECL +template void -connect(stream& s1, stream& s2); +connect(basic_stream& s1, basic_stream& s2); -template -stream -connect(stream& to, Arg1&& arg1, ArgN&&... argn); +template +basic_stream +connect(basic_stream& to, Arg1&& arg1, ArgN&&... argn); #endif +using stream = basic_stream<>; + } // test } // beast } // boost #include -#ifdef BOOST_BEAST_HEADER_ONLY +//#ifdef BOOST_BEAST_HEADER_ONLY #include -#endif +//#endif #endif diff --git a/boost/beast/_experimental/test/tcp.hpp b/boost/beast/_experimental/test/tcp.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/amount.hpp b/boost/beast/_experimental/unit_test/amount.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/detail/const_container.hpp b/boost/beast/_experimental/unit_test/detail/const_container.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/dstream.hpp b/boost/beast/_experimental/unit_test/dstream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/global_suites.hpp b/boost/beast/_experimental/unit_test/global_suites.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/main.ipp b/boost/beast/_experimental/unit_test/main.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/match.hpp b/boost/beast/_experimental/unit_test/match.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/recorder.hpp b/boost/beast/_experimental/unit_test/recorder.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/reporter.hpp b/boost/beast/_experimental/unit_test/reporter.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/results.hpp b/boost/beast/_experimental/unit_test/results.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/runner.hpp b/boost/beast/_experimental/unit_test/runner.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/suite.hpp b/boost/beast/_experimental/unit_test/suite.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/suite_info.hpp b/boost/beast/_experimental/unit_test/suite_info.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/_experimental/unit_test/suite_list.hpp b/boost/beast/_experimental/unit_test/suite_list.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core.hpp b/boost/beast/core.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/async_base.hpp b/boost/beast/core/async_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/basic_stream.hpp b/boost/beast/core/basic_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/bind_handler.hpp b/boost/beast/core/bind_handler.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffer_traits.hpp b/boost/beast/core/buffer_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffered_read_stream.hpp b/boost/beast/core/buffered_read_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffers_adaptor.hpp b/boost/beast/core/buffers_adaptor.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffers_cat.hpp b/boost/beast/core/buffers_cat.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffers_prefix.hpp b/boost/beast/core/buffers_prefix.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffers_range.hpp b/boost/beast/core/buffers_range.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffers_suffix.hpp b/boost/beast/core/buffers_suffix.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/buffers_to_string.hpp b/boost/beast/core/buffers_to_string.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/allocator.hpp b/boost/beast/core/detail/allocator.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/async_base.hpp b/boost/beast/core/detail/async_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/base64.hpp b/boost/beast/core/detail/base64.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/base64.ipp b/boost/beast/core/detail/base64.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/bind_continuation.hpp b/boost/beast/core/detail/bind_continuation.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/bind_default_executor.hpp b/boost/beast/core/detail/bind_default_executor.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/bind_handler.hpp b/boost/beast/core/detail/bind_handler.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/buffer.hpp b/boost/beast/core/detail/buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/buffer_traits.hpp b/boost/beast/core/detail/buffer_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/buffers_pair.hpp b/boost/beast/core/detail/buffers_pair.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/buffers_range_adaptor.hpp b/boost/beast/core/detail/buffers_range_adaptor.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/buffers_ref.hpp b/boost/beast/core/detail/buffers_ref.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/chacha.hpp b/boost/beast/core/detail/chacha.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/char_buffer.hpp b/boost/beast/core/detail/char_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/clamp.hpp b/boost/beast/core/detail/clamp.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/config.hpp b/boost/beast/core/detail/config.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/cpu_info.hpp b/boost/beast/core/detail/cpu_info.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/flat_stream.hpp b/boost/beast/core/detail/flat_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/get_io_context.hpp b/boost/beast/core/detail/get_io_context.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/impl/read.hpp b/boost/beast/core/detail/impl/read.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/impl/temporary_buffer.ipp b/boost/beast/core/detail/impl/temporary_buffer.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/is_invocable.hpp b/boost/beast/core/detail/is_invocable.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/ostream.hpp b/boost/beast/core/detail/ostream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/pcg.hpp b/boost/beast/core/detail/pcg.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/read.hpp b/boost/beast/core/detail/read.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/remap_post_to_defer.hpp b/boost/beast/core/detail/remap_post_to_defer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/service_base.hpp b/boost/beast/core/detail/service_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/sha1.hpp b/boost/beast/core/detail/sha1.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/sha1.ipp b/boost/beast/core/detail/sha1.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/static_const.hpp b/boost/beast/core/detail/static_const.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/static_ostream.hpp b/boost/beast/core/detail/static_ostream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/static_string.hpp b/boost/beast/core/detail/static_string.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/stream_base.hpp b/boost/beast/core/detail/stream_base.hpp old mode 100755 new mode 100644 index 3f675d47f9..e6e806202b --- a/boost/beast/core/detail/stream_base.hpp +++ b/boost/beast/core/detail/stream_base.hpp @@ -56,19 +56,25 @@ struct stream_base class pending_guard { - bool& b_; + bool* b_ = nullptr; bool clear_ = true; public: ~pending_guard() { - if(clear_) - b_ = false; + if(clear_ && b_) + *b_ = false; + } + + pending_guard() + : b_(nullptr) + , clear_(true) + { } explicit pending_guard(bool& b) - : b_(b) + : b_(&b) { // If this assert goes off, it means you are attempting // to issue two of the same asynchronous I/O operation @@ -77,8 +83,8 @@ struct stream_base // calls to async_read_some. Only one pending call of // each I/O type (read and write) is permitted. // - BOOST_ASSERT(! b_); - b_ = true; + BOOST_ASSERT(! *b_); + *b_ = true; } pending_guard( @@ -89,11 +95,29 @@ struct stream_base { } + void assign(bool& b) + { + BOOST_ASSERT(!b_); + BOOST_ASSERT(clear_); + b_ = &b; + + // If this assert goes off, it means you are attempting + // to issue two of the same asynchronous I/O operation + // at the same time, without waiting for the first one + // to complete. For example, attempting two simultaneous + // calls to async_read_some. Only one pending call of + // each I/O type (read and write) is permitted. + // + BOOST_ASSERT(! *b_); + *b_ = true; + } + void reset() { BOOST_ASSERT(clear_); - b_ = false; + if (b_) + *b_ = false; clear_ = false; } }; diff --git a/boost/beast/core/detail/stream_traits.hpp b/boost/beast/core/detail/stream_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/string.hpp b/boost/beast/core/detail/string.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/temporary_buffer.hpp b/boost/beast/core/detail/temporary_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/tuple.hpp b/boost/beast/core/detail/tuple.hpp old mode 100755 new mode 100644 index 5d65e9de77..ee9640fbb4 --- a/boost/beast/core/detail/tuple.hpp +++ b/boost/beast/core/detail/tuple.hpp @@ -1,5 +1,5 @@ // -// Copyright (c) 2016-2019Damian Jarek (damian dot jarek93 at gmail dot com) +// Copyright (c) 2016-2019 Damian Jarek (damian dot jarek93 at gmail 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) diff --git a/boost/beast/core/detail/type_traits.hpp b/boost/beast/core/detail/type_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/variant.hpp b/boost/beast/core/detail/variant.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detail/varint.hpp b/boost/beast/core/detail/varint.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/detect_ssl.hpp b/boost/beast/core/detect_ssl.hpp old mode 100755 new mode 100644 index 644318de34..272535f58a --- a/boost/beast/core/detect_ssl.hpp +++ b/boost/beast/core/detect_ssl.hpp @@ -591,8 +591,19 @@ operator()(error_code ec, std::size_t bytes_transferred, bool cont) // by the move, are first moved to the stack before calling the // initiating function. - yield stream_.async_read_some(buffer_.prepare( - read_size(buffer_, 1536)), std::move(*this)); + yield + { + // This macro facilitates asynchrnous handler tracking and + // debugging when the preprocessor macro + // BOOST_ASIO_CUSTOM_HANDLER_TRACKING is defined. + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "async_detect_ssl")); + + stream_.async_read_some(buffer_.prepare( + read_size(buffer_, 1536)), std::move(*this)); + } // Commit what we read into the buffer's input area. buffer_.commit(bytes_transferred); @@ -626,7 +637,14 @@ operator()(error_code ec, std::size_t bytes_transferred, bool cont) // used in the call to async_read_some above, to avoid // instantiating another version of the function template. - yield stream_.async_read_some(buffer_.prepare(0), std::move(*this)); + yield + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "async_detect_ssl")); + + stream_.async_read_some(buffer_.prepare(0), std::move(*this)); + } // Restore the saved error code ec = ec_; diff --git a/boost/beast/core/error.hpp b/boost/beast/core/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/file.hpp b/boost/beast/core/file.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/file_base.hpp b/boost/beast/core/file_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/file_posix.hpp b/boost/beast/core/file_posix.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/file_stdio.hpp b/boost/beast/core/file_stdio.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/file_win32.hpp b/boost/beast/core/file_win32.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/flat_buffer.hpp b/boost/beast/core/flat_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/flat_static_buffer.hpp b/boost/beast/core/flat_static_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/flat_stream.hpp b/boost/beast/core/flat_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/async_base.hpp b/boost/beast/core/impl/async_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/basic_stream.hpp b/boost/beast/core/impl/basic_stream.hpp old mode 100755 new mode 100644 index f21958c07f..73fb916975 --- a/boost/beast/core/impl/basic_stream.hpp +++ b/boost/beast/core/impl/basic_stream.hpp @@ -269,6 +269,8 @@ class transfer_op std::move(*this)); } + static bool never_pending_; + public: template transfer_op( @@ -278,10 +280,25 @@ public: : async_base( std::forward(h), s.get_executor()) , impl_(s.impl_) - , pg_(state().pending) + , pg_() , b_(b) { - (*this)({}); + if (buffer_bytes(b_) == 0 && state().pending) + { + // Workaround: + // Corner case discovered in https://github.com/boostorg/beast/issues/2065 + // Enclosing SSL stream wishes to complete a 0-length write early by + // executing a 0-length read against the underlying stream. + // This can occur even if an existing async_read is in progress. + // In this specific case, we will complete the async op with no error + // in order to prevent assertions and/or internal corruption of the basic_stream + this->complete(false, error_code(), 0); + } + else + { + pg_.assign(state().pending); + (*this)({}); + } } void @@ -296,7 +313,14 @@ public: { // make sure we perform the no-op BOOST_ASIO_CORO_YIELD - async_perform(0, is_read{}); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + (isRead ? "basic_stream::async_read_some" + : "basic_stream::async_write_some"))); + + async_perform(0, is_read{}); + } // apply the timeout manually, otherwise // behavior varies across platforms. if(state().timer.expiry() <= clock_type::now()) @@ -309,12 +333,19 @@ public: // if a timeout is active, wait on the timer if(state().timer.expiry() != never()) + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + (isRead ? "basic_stream::async_read_some" + : "basic_stream::async_write_some"))); + state().timer.async_wait( timeout_handlerget_executor())>{ state(), impl_, state().tick, this->get_executor()}); + } // check rate limit, maybe wait std::size_t amount; @@ -323,7 +354,14 @@ public: { ++impl_->waiting; BOOST_ASIO_CORO_YIELD - impl_->timer.async_wait(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + (isRead ? "basic_stream::async_read_some" + : "basic_stream::async_write_some"))); + + impl_->timer.async_wait(std::move(*this)); + } if(ec) { // socket was closed, or a timeout @@ -347,7 +385,14 @@ public: } BOOST_ASIO_CORO_YIELD - async_perform(amount, is_read{}); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + (isRead ? "basic_stream::async_read_some" + : "basic_stream::async_write_some"))); + + async_perform(amount, is_read{}); + } if(state().timer.expiry() != never()) { @@ -408,12 +453,22 @@ public: , pg1_(impl_->write.pending) { if(state().timer.expiry() != stream_base::never()) + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "basic_stream::async_connect")); + impl_->write.timer.async_wait( timeout_handlerget_executor())>{ state(), impl_, state().tick, this->get_executor()}); + } + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "basic_stream::async_connect")); impl_->socket.async_connect( ep, std::move(*this)); @@ -435,12 +490,22 @@ public: , pg1_(impl_->write.pending) { if(state().timer.expiry() != stream_base::never()) + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "basic_stream::async_connect")); + impl_->write.timer.async_wait( timeout_handlerget_executor())>{ state(), impl_, state().tick, this->get_executor()}); + } + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "basic_stream::async_connect")); net::async_connect(impl_->socket, eps, cond, std::move(*this)); @@ -462,12 +527,22 @@ public: , pg1_(impl_->write.pending) { if(state().timer.expiry() != stream_base::never()) + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "basic_stream::async_connect")); + impl_->write.timer.async_wait( timeout_handlerget_executor())>{ state(), impl_, state().tick, this->get_executor()}); + } + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "basic_stream::async_connect")); net::async_connect(impl_->socket, begin, end, cond, std::move(*this)); diff --git a/boost/beast/core/impl/buffered_read_stream.hpp b/boost/beast/core/impl/buffered_read_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/buffers_adaptor.hpp b/boost/beast/core/impl/buffers_adaptor.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/buffers_cat.hpp b/boost/beast/core/impl/buffers_cat.hpp old mode 100755 new mode 100644 index a0506a0b35..feb41ba4a7 --- a/boost/beast/core/impl/buffers_cat.hpp +++ b/boost/beast/core/impl/buffers_cat.hpp @@ -52,7 +52,7 @@ public: #if defined(_MSC_VER) && ! defined(__clang__) # define BOOST_BEAST_UNREACHABLE() __assume(false) -# define BOOST_BEAST_UNREACHABLE_RETURN(v) __assume(false) +# define BOOST_BEAST_UNREACHABLE_RETURN(v) return v #else # define BOOST_BEAST_UNREACHABLE() __builtin_unreachable() # define BOOST_BEAST_UNREACHABLE_RETURN(v) \ diff --git a/boost/beast/core/impl/buffers_prefix.hpp b/boost/beast/core/impl/buffers_prefix.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/buffers_suffix.hpp b/boost/beast/core/impl/buffers_suffix.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/error.hpp b/boost/beast/core/impl/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/error.ipp b/boost/beast/core/impl/error.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/file_posix.ipp b/boost/beast/core/impl/file_posix.ipp old mode 100755 new mode 100644 index 0f7f42ac8d..61a33a5210 --- a/boost/beast/core/impl/file_posix.ipp +++ b/boost/beast/core/impl/file_posix.ipp @@ -172,7 +172,7 @@ open(char const* path, file_mode mode, error_code& ec) break; case file_mode::append_existing: - f = O_WRONLY; + f = O_WRONLY | O_APPEND; #if BOOST_BEAST_USE_POSIX_FADVISE advise = POSIX_FADV_SEQUENTIAL; #endif diff --git a/boost/beast/core/impl/file_stdio.ipp b/boost/beast/core/impl/file_stdio.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/file_win32.ipp b/boost/beast/core/impl/file_win32.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/flat_buffer.hpp b/boost/beast/core/impl/flat_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/flat_static_buffer.hpp b/boost/beast/core/impl/flat_static_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/flat_static_buffer.ipp b/boost/beast/core/impl/flat_static_buffer.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/flat_stream.hpp b/boost/beast/core/impl/flat_stream.hpp old mode 100755 new mode 100644 index 4551a59eda..11c75c4c18 --- a/boost/beast/core/impl/flat_stream.hpp +++ b/boost/beast/core/impl/flat_stream.hpp @@ -51,6 +51,11 @@ public: s.buffer_.commit(net::buffer_copy( s.buffer_.prepare(result.size), b, result.size)); + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "flat_stream::async_write_some")); + s.stream_.async_write_some( s.buffer_.data(), std::move(*this)); } @@ -58,6 +63,11 @@ public: { s.buffer_.clear(); s.buffer_.shrink_to_fit(); + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "flat_stream::async_write_some")); + s.stream_.async_write_some( beast::buffers_prefix( result.size, b), std::move(*this)); diff --git a/boost/beast/core/impl/multi_buffer.hpp b/boost/beast/core/impl/multi_buffer.hpp old mode 100755 new mode 100644 index 510d1265e4..bd4087cd4b --- a/boost/beast/core/impl/multi_buffer.hpp +++ b/boost/beast/core/impl/multi_buffer.hpp @@ -912,15 +912,17 @@ prepare(size_type n) -> destroy(reuse); if(n > 0) { - auto const growth_factor = 2.0f; + std::size_t const growth_factor = 2; + std::size_t altn = in_size_ * growth_factor; + // Overflow detection: + if(in_size_ > altn) + altn = (std::numeric_limits::max)(); + else + altn = (std::max)(512, altn); auto const size = (std::min)( max_ - total, - (std::max)({ - static_cast( - in_size_ * growth_factor - in_size_), - 512, - n})); + (std::max)(n, altn)); auto& e = alloc(size); list_.push_back(e); if(out_ == list_.end()) diff --git a/boost/beast/core/impl/read_size.hpp b/boost/beast/core/impl/read_size.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/saved_handler.hpp b/boost/beast/core/impl/saved_handler.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/saved_handler.ipp b/boost/beast/core/impl/saved_handler.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/static_buffer.hpp b/boost/beast/core/impl/static_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/static_buffer.ipp b/boost/beast/core/impl/static_buffer.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/static_string.hpp b/boost/beast/core/impl/static_string.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/string.ipp b/boost/beast/core/impl/string.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/core/impl/string_param.hpp b/boost/beast/core/impl/string_param.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/make_printable.hpp b/boost/beast/core/make_printable.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/multi_buffer.hpp b/boost/beast/core/multi_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/ostream.hpp b/boost/beast/core/ostream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/rate_policy.hpp b/boost/beast/core/rate_policy.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/read_size.hpp b/boost/beast/core/read_size.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/role.hpp b/boost/beast/core/role.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/saved_handler.hpp b/boost/beast/core/saved_handler.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/span.hpp b/boost/beast/core/span.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/static_buffer.hpp b/boost/beast/core/static_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/static_string.hpp b/boost/beast/core/static_string.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/stream_traits.hpp b/boost/beast/core/stream_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/string.hpp b/boost/beast/core/string.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/string_param.hpp b/boost/beast/core/string_param.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/string_type.hpp b/boost/beast/core/string_type.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/core/tcp_stream.hpp b/boost/beast/core/tcp_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http.hpp b/boost/beast/http.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/basic_dynamic_body.hpp b/boost/beast/http/basic_dynamic_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/basic_file_body.hpp b/boost/beast/http/basic_file_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/basic_parser.hpp b/boost/beast/http/basic_parser.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/buffer_body.hpp b/boost/beast/http/buffer_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/chunk_encode.hpp b/boost/beast/http/chunk_encode.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/basic_parsed_list.hpp b/boost/beast/http/detail/basic_parsed_list.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/basic_parser.hpp b/boost/beast/http/detail/basic_parser.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/basic_parser.ipp b/boost/beast/http/detail/basic_parser.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/chunk_encode.hpp b/boost/beast/http/detail/chunk_encode.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/rfc7230.hpp b/boost/beast/http/detail/rfc7230.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/rfc7230.ipp b/boost/beast/http/detail/rfc7230.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/detail/type_traits.hpp b/boost/beast/http/detail/type_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/dynamic_body.hpp b/boost/beast/http/dynamic_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/empty_body.hpp b/boost/beast/http/empty_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/error.hpp b/boost/beast/http/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/field.hpp b/boost/beast/http/field.hpp old mode 100755 new mode 100644 index 3f94364771..b75b9b06ae --- a/boost/beast/http/field.hpp +++ b/boost/beast/http/field.hpp @@ -18,364 +18,367 @@ namespace boost { namespace beast { namespace http { -enum class field : unsigned short -{ - unknown = 0, - - a_im, - accept, - accept_additions, - accept_charset, - accept_datetime, - accept_encoding, - accept_features, - accept_language, - accept_patch, - accept_post, - accept_ranges, - access_control, - access_control_allow_credentials, - access_control_allow_headers, - access_control_allow_methods, - access_control_allow_origin, - access_control_expose_headers, - access_control_max_age, - access_control_request_headers, - access_control_request_method, - age, - allow, - alpn, - also_control, - alt_svc, - alt_used, - alternate_recipient, - alternates, - apparently_to, - apply_to_redirect_ref, - approved, - archive, - archived_at, - article_names, - article_updates, - authentication_control, - authentication_info, - authentication_results, - authorization, - auto_submitted, - autoforwarded, - autosubmitted, - base, - bcc, - body, - c_ext, - c_man, - c_opt, - c_pep, - c_pep_info, - cache_control, - caldav_timezones, - cancel_key, - cancel_lock, - cc, - close, - comments, - compliance, - connection, - content_alternative, - content_base, - content_description, - content_disposition, - content_duration, - content_encoding, - content_features, - content_id, - content_identifier, - content_language, - content_length, - content_location, - content_md5, - content_range, - content_return, - content_script_type, - content_style_type, - content_transfer_encoding, - content_type, - content_version, - control, - conversion, - conversion_with_loss, - cookie, - cookie2, - cost, - dasl, - date, - date_received, - dav, - default_style, - deferred_delivery, - delivery_date, - delta_base, - depth, - derived_from, - destination, - differential_id, - digest, - discarded_x400_ipms_extensions, - discarded_x400_mts_extensions, - disclose_recipients, - disposition_notification_options, - disposition_notification_to, - distribution, - dkim_signature, - dl_expansion_history, - downgraded_bcc, - downgraded_cc, - downgraded_disposition_notification_to, - downgraded_final_recipient, - downgraded_from, - downgraded_in_reply_to, - downgraded_mail_from, - downgraded_message_id, - downgraded_original_recipient, - downgraded_rcpt_to, - downgraded_references, - downgraded_reply_to, - downgraded_resent_bcc, - downgraded_resent_cc, - downgraded_resent_from, - downgraded_resent_reply_to, - downgraded_resent_sender, - downgraded_resent_to, - downgraded_return_path, - downgraded_sender, - downgraded_to, - ediint_features, - eesst_version, - encoding, - encrypted, - errors_to, - etag, - expect, - expires, - expiry_date, - ext, - followup_to, - forwarded, - from, - generate_delivery_report, - getprofile, - hobareg, - host, - http2_settings, - if_, - if_match, - if_modified_since, - if_none_match, - if_range, - if_schedule_tag_match, - if_unmodified_since, - im, - importance, - in_reply_to, - incomplete_copy, - injection_date, - injection_info, - jabber_id, - keep_alive, - keywords, - label, - language, - last_modified, - latest_delivery_time, - lines, - link, - list_archive, - list_help, - list_id, - list_owner, - list_post, - list_subscribe, - list_unsubscribe, - list_unsubscribe_post, - location, - lock_token, - man, - max_forwards, - memento_datetime, - message_context, - message_id, - message_type, - meter, - method_check, - method_check_expires, - mime_version, - mmhs_acp127_message_identifier, - mmhs_authorizing_users, - mmhs_codress_message_indicator, - mmhs_copy_precedence, - mmhs_exempted_address, - mmhs_extended_authorisation_info, - mmhs_handling_instructions, - mmhs_message_instructions, - mmhs_message_type, - mmhs_originator_plad, - mmhs_originator_reference, - mmhs_other_recipients_indicator_cc, - mmhs_other_recipients_indicator_to, - mmhs_primary_precedence, - mmhs_subject_indicator_codes, - mt_priority, - negotiate, - newsgroups, - nntp_posting_date, - nntp_posting_host, - non_compliance, - obsoletes, - opt, - optional, - optional_www_authenticate, - ordering_type, - organization, - origin, - original_encoded_information_types, - original_from, - original_message_id, - original_recipient, - original_sender, - original_subject, - originator_return_address, - overwrite, - p3p, - path, - pep, - pep_info, - pics_label, - position, - posting_version, - pragma, - prefer, - preference_applied, - prevent_nondelivery_report, - priority, - privicon, - profileobject, - protocol, - protocol_info, - protocol_query, - protocol_request, - proxy_authenticate, - proxy_authentication_info, - proxy_authorization, - proxy_connection, - proxy_features, - proxy_instruction, - public_, - public_key_pins, - public_key_pins_report_only, - range, - received, - received_spf, - redirect_ref, - references, - referer, - referer_root, - relay_version, - reply_by, - reply_to, - require_recipient_valid_since, - resent_bcc, - resent_cc, - resent_date, - resent_from, - resent_message_id, - resent_reply_to, - resent_sender, - resent_to, - resolution_hint, - resolver_location, - retry_after, - return_path, - safe, - schedule_reply, - schedule_tag, - sec_websocket_accept, - sec_websocket_extensions, - sec_websocket_key, - sec_websocket_protocol, - sec_websocket_version, - security_scheme, - see_also, - sender, - sensitivity, - server, - set_cookie, - set_cookie2, - setprofile, - sio_label, - sio_label_history, - slug, - soapaction, - solicitation, - status_uri, - strict_transport_security, - subject, - subok, - subst, - summary, - supersedes, - surrogate_capability, - surrogate_control, - tcn, - te, - timeout, - title, - to, - topic, - trailer, - transfer_encoding, - ttl, - ua_color, - ua_media, - ua_pixels, - ua_resolution, - ua_windowpixels, - upgrade, - urgency, - uri, - user_agent, - variant_vary, - vary, - vbr_info, - version, - via, - want_digest, - warning, - www_authenticate, - x_archived_at, - x_device_accept, - x_device_accept_charset, - x_device_accept_encoding, - x_device_accept_language, - x_device_user_agent, - x_frame_options, - x_mittente, - x_pgp_sig, - x_ricevuta, - x_riferimento_message_id, - x_tiporicevuta, - x_trasporto, - x_verificasicurezza, - x400_content_identifier, - x400_content_return, - x400_content_type, - x400_mts_identifier, - x400_originator, - x400_received, - x400_recipients, - x400_trace, - xref, -}; + enum class field : unsigned short + { + unknown = 0, + a_im, + accept, + accept_additions, + accept_charset, + accept_datetime, + accept_encoding, + accept_features, + accept_language, + accept_patch, + accept_post, + accept_ranges, + access_control, + access_control_allow_credentials, + access_control_allow_headers, + access_control_allow_methods, + access_control_allow_origin, + access_control_expose_headers, + access_control_max_age, + access_control_request_headers, + access_control_request_method, + age, + allow, + alpn, + also_control, + alt_svc, + alt_used, + alternate_recipient, + alternates, + apparently_to, + apply_to_redirect_ref, + approved, + archive, + archived_at, + article_names, + article_updates, + authentication_control, + authentication_info, + authentication_results, + authorization, + auto_submitted, + autoforwarded, + autosubmitted, + base, + bcc, + body, + c_ext, + c_man, + c_opt, + c_pep, + c_pep_info, + cache_control, + caldav_timezones, + cancel_key, + cancel_lock, + cc, + close, + comments, + compliance, + connection, + content_alternative, + content_base, + content_description, + content_disposition, + content_duration, + content_encoding, + content_features, + content_id, + content_identifier, + content_language, + content_length, + content_location, + content_md5, + content_range, + content_return, + content_script_type, + content_style_type, + content_transfer_encoding, + content_type, + content_version, + control, + conversion, + conversion_with_loss, + cookie, + cookie2, + cost, + dasl, + date, + date_received, + dav, + default_style, + deferred_delivery, + delivery_date, + delta_base, + depth, + derived_from, + destination, + differential_id, + digest, + discarded_x400_ipms_extensions, + discarded_x400_mts_extensions, + disclose_recipients, + disposition_notification_options, + disposition_notification_to, + distribution, + dkim_signature, + dl_expansion_history, + downgraded_bcc, + downgraded_cc, + downgraded_disposition_notification_to, + downgraded_final_recipient, + downgraded_from, + downgraded_in_reply_to, + downgraded_mail_from, + downgraded_message_id, + downgraded_original_recipient, + downgraded_rcpt_to, + downgraded_references, + downgraded_reply_to, + downgraded_resent_bcc, + downgraded_resent_cc, + downgraded_resent_from, + downgraded_resent_reply_to, + downgraded_resent_sender, + downgraded_resent_to, + downgraded_return_path, + downgraded_sender, + downgraded_to, + ediint_features, + eesst_version, + encoding, + encrypted, + errors_to, + etag, + expect, + expires, + expiry_date, + ext, + followup_to, + forwarded, + from, + generate_delivery_report, + getprofile, + hobareg, + host, + http2_settings, + if_, + if_match, + if_modified_since, + if_none_match, + if_range, + if_schedule_tag_match, + if_unmodified_since, + im, + importance, + in_reply_to, + incomplete_copy, + injection_date, + injection_info, + jabber_id, + keep_alive, + keywords, + label, + language, + last_modified, + latest_delivery_time, + lines, + link, + list_archive, + list_help, + list_id, + list_owner, + list_post, + list_subscribe, + list_unsubscribe, + list_unsubscribe_post, + location, + lock_token, + man, + max_forwards, + memento_datetime, + message_context, + message_id, + message_type, + meter, + method_check, + method_check_expires, + mime_version, + mmhs_acp127_message_identifier, + mmhs_authorizing_users, + mmhs_codress_message_indicator, + mmhs_copy_precedence, + mmhs_exempted_address, + mmhs_extended_authorisation_info, + mmhs_handling_instructions, + mmhs_message_instructions, + mmhs_message_type, + mmhs_originator_plad, + mmhs_originator_reference, + mmhs_other_recipients_indicator_cc, + mmhs_other_recipients_indicator_to, + mmhs_primary_precedence, + mmhs_subject_indicator_codes, + mt_priority, + negotiate, + newsgroups, + nntp_posting_date, + nntp_posting_host, + non_compliance, + obsoletes, + opt, + optional, + optional_www_authenticate, + ordering_type, + organization, + origin, + original_encoded_information_types, + original_from, + original_message_id, + original_recipient, + original_sender, + original_subject, + originator_return_address, + overwrite, + p3p, + path, + pep, + pep_info, + pics_label, + position, + posting_version, + pragma, + prefer, + preference_applied, + prevent_nondelivery_report, + priority, + privicon, + profileobject, + protocol, + protocol_info, + protocol_query, + protocol_request, + proxy_authenticate, + proxy_authentication_info, + proxy_authorization, + proxy_connection, + proxy_features, + proxy_instruction, + public_, + public_key_pins, + public_key_pins_report_only, + range, + received, + received_spf, + redirect_ref, + references, + referer, + referer_root, + relay_version, + reply_by, + reply_to, + require_recipient_valid_since, + resent_bcc, + resent_cc, + resent_date, + resent_from, + resent_message_id, + resent_reply_to, + resent_sender, + resent_to, + resolution_hint, + resolver_location, + retry_after, + return_path, + safe, + schedule_reply, + schedule_tag, + sec_fetch_dest, + sec_fetch_mode, + sec_fetch_site, + sec_fetch_user, + sec_websocket_accept, + sec_websocket_extensions, + sec_websocket_key, + sec_websocket_protocol, + sec_websocket_version, + security_scheme, + see_also, + sender, + sensitivity, + server, + set_cookie, + set_cookie2, + setprofile, + sio_label, + sio_label_history, + slug, + soapaction, + solicitation, + status_uri, + strict_transport_security, + subject, + subok, + subst, + summary, + supersedes, + surrogate_capability, + surrogate_control, + tcn, + te, + timeout, + title, + to, + topic, + trailer, + transfer_encoding, + ttl, + ua_color, + ua_media, + ua_pixels, + ua_resolution, + ua_windowpixels, + upgrade, + urgency, + uri, + user_agent, + variant_vary, + vary, + vbr_info, + version, + via, + want_digest, + warning, + www_authenticate, + x_archived_at, + x_device_accept, + x_device_accept_charset, + x_device_accept_encoding, + x_device_accept_language, + x_device_user_agent, + x_frame_options, + x_mittente, + x_pgp_sig, + x_ricevuta, + x_riferimento_message_id, + x_tiporicevuta, + x_trasporto, + x_verificasicurezza, + x400_content_identifier, + x400_content_return, + x400_content_type, + x400_mts_identifier, + x400_originator, + x400_received, + x400_recipients, + x400_trace, + xref + }; /** Convert a field enum to a string. @param f The field to convert diff --git a/boost/beast/http/fields.hpp b/boost/beast/http/fields.hpp old mode 100755 new mode 100644 index cf5022821d..2d83db5b5e --- a/boost/beast/http/fields.hpp +++ b/boost/beast/http/fields.hpp @@ -425,6 +425,11 @@ public: void insert(field name, string_view const& value); + /* Set a field from a null pointer (deleted). + */ + void + insert(field, std::nullptr_t) = delete; + /** Insert a field. If one or more fields with the same name already exist, @@ -438,6 +443,11 @@ public: void insert(string_view name, string_view const& value); + /* Insert a field from a null pointer (deleted). + */ + void + insert(string_view, std::nullptr_t) = delete; + /** Insert a field. If one or more fields with the same name already exist, @@ -457,6 +467,9 @@ public: insert(field name, string_view name_string, string_view const& value); + void + insert(field, string_view, std::nullptr_t) = delete; + /** Set a field value, removing any other instances of that field. First removes any values with matching field names, then @@ -471,6 +484,9 @@ public: void set(field name, string_view const& value); + void + set(field, std::nullptr_t) = delete; + /** Set a field value, removing any other instances of that field. First removes any values with matching field names, then @@ -483,7 +499,10 @@ public: void set(string_view name, string_view const& value); - /** Remove a field. + void + set(string_view, std::nullptr_t) = delete; + + /** Remove a field. References and iterators to the erased elements are invalidated. Other references and iterators are not diff --git a/boost/beast/http/file_body.hpp b/boost/beast/http/file_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/basic_parser.hpp b/boost/beast/http/impl/basic_parser.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/basic_parser.ipp b/boost/beast/http/impl/basic_parser.ipp old mode 100755 new mode 100644 index 485a999e4c..4eff491cd3 --- a/boost/beast/http/impl/basic_parser.ipp +++ b/boost/beast/http/impl/basic_parser.ipp @@ -82,7 +82,17 @@ basic_parser:: put(net::const_buffer buffer, error_code& ec) { - BOOST_ASSERT(state_ != state::complete); + // If this goes off you have tried to parse more data after the parser + // has completed. A common cause of this is re-using a parser, which is + // not supported. If you need to re-use a parser, consider storing it + // in an optional. Then reset() and emplace() prior to parsing each new + // message. + BOOST_ASSERT(!is_done()); + if (is_done()) + { + ec = error::stale_parser; + return 0; + } auto p = static_cast(buffer.data()); auto n = buffer.size(); auto const p0 = p; @@ -154,6 +164,8 @@ loop: goto done; } finish_header(ec, is_request{}); + if(ec) + goto done; break; case state::body0: @@ -447,7 +459,8 @@ finish_header(error_code& ec, std::true_type) } else if(f_ & flagContentLength) { - if(len_ > body_limit_) + if(body_limit_.has_value() && + len_ > body_limit_) { ec = error::body_limit; return; @@ -511,7 +524,8 @@ finish_header(error_code& ec, std::false_type) f_ |= flagHasBody; state_ = state::body0; - if(len_ > body_limit_) + if(body_limit_.has_value() && + len_ > body_limit_) { ec = error::body_limit; return; diff --git a/boost/beast/http/impl/chunk_encode.hpp b/boost/beast/http/impl/chunk_encode.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/error.hpp b/boost/beast/http/impl/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/error.ipp b/boost/beast/http/impl/error.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/field.ipp b/boost/beast/http/impl/field.ipp old mode 100755 new mode 100644 index f25be99b42..29a37fdf96 --- a/boost/beast/http/impl/field.ipp +++ b/boost/beast/http/impl/field.ipp @@ -43,7 +43,7 @@ struct field_table } using array_type = - std::array; + std::array; // Strings are converted to lowercase static @@ -116,6 +116,7 @@ struct field_table */ field_table() : by_name_({{ +// string constants "", "A-IM", "Accept", @@ -393,6 +394,10 @@ struct field_table "Safe", "Schedule-Reply", "Schedule-Tag", + "Sec-Fetch-Dest", + "Sec-Fetch-Mode", + "Sec-Fetch-Site", + "Sec-Fetch-User", "Sec-WebSocket-Accept", "Sec-WebSocket-Extensions", "Sec-WebSocket-Key", diff --git a/boost/beast/http/impl/fields.hpp b/boost/beast/http/impl/fields.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/fields.ipp b/boost/beast/http/impl/fields.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/file_body_win32.hpp b/boost/beast/http/impl/file_body_win32.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/message.hpp b/boost/beast/http/impl/message.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/parser.hpp b/boost/beast/http/impl/parser.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/read.hpp b/boost/beast/http/impl/read.hpp old mode 100755 new mode 100644 index c97b6eda65..3ddede6843 --- a/boost/beast/http/impl/read.hpp +++ b/boost/beast/http/impl/read.hpp @@ -97,6 +97,10 @@ public: , d_(beast::allocate_stable( *this, s, m)) { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_read(msg)")); + http::async_read(d_.s, b, d_.p, std::move(*this)); } @@ -203,6 +207,11 @@ public: b_, size, ec, error::buffer_overflow); if(ec) goto upcall; + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_read_some")); + s_.async_read_some(*mb, std::move(self)); } b_.commit(bytes_transferred); @@ -230,8 +239,14 @@ public: if(! cont_) { BOOST_ASIO_CORO_YIELD + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_read_some")); + net::post( beast::bind_front_handler(std::move(self), ec)); + } } self.complete(ec, bytes_transferred_); } @@ -264,15 +279,27 @@ public: if (Condition{}(p_)) { BOOST_ASIO_CORO_YIELD + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_read")); + net::post(std::move(self)); + } } else { do { BOOST_ASIO_CORO_YIELD + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_read")); + async_read_some( s_, b_, p_, std::move(self)); + } bytes_transferred_ += bytes_transferred; } while (!ec && !Condition{}(p_)); diff --git a/boost/beast/http/impl/rfc7230.hpp b/boost/beast/http/impl/rfc7230.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/rfc7230.ipp b/boost/beast/http/impl/rfc7230.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/serializer.hpp b/boost/beast/http/impl/serializer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/status.ipp b/boost/beast/http/impl/status.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/verb.ipp b/boost/beast/http/impl/verb.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/http/impl/write.hpp b/boost/beast/http/impl/write.hpp old mode 100755 new mode 100644 index 671108da71..c0819a16f0 --- a/boost/beast/http/impl/write.hpp +++ b/boost/beast/http/impl/write.hpp @@ -60,6 +60,10 @@ class write_some_op error_code& ec, ConstBufferSequence const& buffers) { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_write_some")); + invoked = true; ec = {}; op_.s_.async_write_some( @@ -93,6 +97,11 @@ public: if(ec) { BOOST_ASSERT(! f.invoked); + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_write_some")); + return net::post( s_.get_executor(), beast::bind_front_handler( @@ -107,6 +116,10 @@ public: BOOST_ASSERT(sr_.is_done()); } + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_write_some")); + return net::post( s_.get_executor(), beast::bind_front_handler( @@ -191,16 +204,28 @@ public: if(Predicate{}(sr_)) { BOOST_ASIO_CORO_YIELD - net::post( - s_.get_executor(), - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_write")); + + net::post( + s_.get_executor(), + std::move(*this)); + } goto upcall; } for(;;) { BOOST_ASIO_CORO_YIELD - beast::http::async_write_some( - s_, sr_, std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_write")); + + beast::http::async_write_some( + s_, sr_, std::move(*this)); + } bytes_transferred_ += bytes_transferred; if(ec) goto upcall; @@ -248,6 +273,10 @@ public: void operator()() { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "http::async_write(msg)")); + async_write(s_, sr_, std::move(*this)); } diff --git a/boost/beast/http/message.hpp b/boost/beast/http/message.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/parser.hpp b/boost/beast/http/parser.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/read.hpp b/boost/beast/http/read.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/rfc7230.hpp b/boost/beast/http/rfc7230.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/serializer.hpp b/boost/beast/http/serializer.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/span_body.hpp b/boost/beast/http/span_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/status.hpp b/boost/beast/http/status.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/string_body.hpp b/boost/beast/http/string_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/type_traits.hpp b/boost/beast/http/type_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/vector_body.hpp b/boost/beast/http/vector_body.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/verb.hpp b/boost/beast/http/verb.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/http/write.hpp b/boost/beast/http/write.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/src.hpp b/boost/beast/src.hpp old mode 100755 new mode 100644 index 2376c3fcc2..62229d2490 --- a/boost/beast/src.hpp +++ b/boost/beast/src.hpp @@ -28,6 +28,7 @@ the program, with the macro BOOST_BEAST_SEPARATE_COMPILATION defined. #include #include #include +#include #include #include diff --git a/boost/beast/ssl.hpp b/boost/beast/ssl.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/ssl/ssl_stream.hpp b/boost/beast/ssl/ssl_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/version.hpp b/boost/beast/version.hpp old mode 100755 new mode 100644 index 2efd68c7ce..b6de4ae473 --- a/boost/beast/version.hpp +++ b/boost/beast/version.hpp @@ -20,7 +20,7 @@ This is a simple integer that is incremented by one every time a set of code changes is merged to the develop branch. */ -#define BOOST_BEAST_VERSION 300 +#define BOOST_BEAST_VERSION 313 #define BOOST_BEAST_VERSION_STRING "Boost.Beast/" BOOST_STRINGIZE(BOOST_BEAST_VERSION) diff --git a/boost/beast/websocket.hpp b/boost/beast/websocket.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/decorator.hpp b/boost/beast/websocket/detail/decorator.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/frame.hpp b/boost/beast/websocket/detail/frame.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/hybi13.hpp b/boost/beast/websocket/detail/hybi13.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/hybi13.ipp b/boost/beast/websocket/detail/hybi13.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/impl_base.hpp b/boost/beast/websocket/detail/impl_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/mask.hpp b/boost/beast/websocket/detail/mask.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/mask.ipp b/boost/beast/websocket/detail/mask.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/pmd_extension.hpp b/boost/beast/websocket/detail/pmd_extension.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/pmd_extension.ipp b/boost/beast/websocket/detail/pmd_extension.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/prng.hpp b/boost/beast/websocket/detail/prng.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/prng.ipp b/boost/beast/websocket/detail/prng.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/service.hpp b/boost/beast/websocket/detail/service.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/service.ipp b/boost/beast/websocket/detail/service.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/soft_mutex.hpp b/boost/beast/websocket/detail/soft_mutex.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/type_traits.hpp b/boost/beast/websocket/detail/type_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/utf8_checker.hpp b/boost/beast/websocket/detail/utf8_checker.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/detail/utf8_checker.ipp b/boost/beast/websocket/detail/utf8_checker.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/error.hpp b/boost/beast/websocket/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/impl/accept.hpp b/boost/beast/websocket/impl/accept.hpp old mode 100755 new mode 100644 index 5bc592fe8e..588aa5da60 --- a/boost/beast/websocket/impl/accept.hpp +++ b/boost/beast/websocket/impl/accept.hpp @@ -215,8 +215,14 @@ public: // Send response BOOST_ASIO_CORO_YIELD - http::async_write( - impl.stream(), res_, std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_accept")); + + http::async_write( + impl.stream(), res_, std::move(*this)); + } if(impl.check_stop_now(ec)) goto upcall; if(! ec) @@ -298,8 +304,14 @@ public: goto upcall; BOOST_ASIO_CORO_YIELD - http::async_read(impl.stream(), - impl.rd_buf, p_, std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_accept")); + + http::async_read(impl.stream(), + impl.rd_buf, p_, std::move(*this)); + } if(ec == http::error::end_of_stream) ec = error::closed; if(impl.check_stop_now(ec)) diff --git a/boost/beast/websocket/impl/close.hpp b/boost/beast/websocket/impl/close.hpp old mode 100755 new mode 100644 index 2b7d72932e..4e42c3668c --- a/boost/beast/websocket/impl/close.hpp +++ b/boost/beast/websocket/impl/close.hpp @@ -86,10 +86,22 @@ public: if(! impl.wr_block.try_lock(this)) { BOOST_ASIO_CORO_YIELD - impl.op_close.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + impl.op_close.emplace(std::move(*this)); + } impl.wr_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); } if(impl.check_stop_now(ec)) @@ -104,8 +116,14 @@ public: impl.change_status(status::closing); impl.update_timer(this->get_executor()); BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), fb_.data(), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + net::async_write(impl.stream(), fb_.data(), + beast::detail::bind_continuation(std::move(*this))); + } if(impl.check_stop_now(ec)) goto upcall; @@ -121,10 +139,22 @@ public: if(! impl.rd_block.try_lock(this)) { BOOST_ASIO_CORO_YIELD - impl.op_r_close.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + impl.op_r_close.emplace(std::move(*this)); + } impl.rd_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.rd_block.is_locked(this)); if(impl.check_stop_now(ec)) goto upcall; @@ -144,10 +174,16 @@ public: if(ev_) goto teardown; BOOST_ASIO_CORO_YIELD - impl.stream().async_read_some( - impl.rd_buf.prepare(read_size( - impl.rd_buf, impl.rd_buf.max_size())), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + impl.stream().async_read_some( + impl.rd_buf.prepare(read_size( + impl.rd_buf, impl.rd_buf.max_size())), + beast::detail::bind_continuation(std::move(*this))); + } impl.rd_buf.commit(bytes_transferred); if(impl.check_stop_now(ec)) goto upcall; @@ -184,10 +220,16 @@ public: impl.rd_remain -= impl.rd_buf.size(); impl.rd_buf.consume(impl.rd_buf.size()); BOOST_ASIO_CORO_YIELD - impl.stream().async_read_some( - impl.rd_buf.prepare(read_size( - impl.rd_buf, impl.rd_buf.max_size())), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + impl.stream().async_read_some( + impl.rd_buf.prepare(read_size( + impl.rd_buf, impl.rd_buf.max_size())), + beast::detail::bind_continuation(std::move(*this))); + } impl.rd_buf.commit(bytes_transferred); if(impl.check_stop_now(ec)) goto upcall; @@ -202,8 +244,14 @@ public: BOOST_ASSERT(impl.wr_block.is_locked(this)); using beast::websocket::async_teardown; BOOST_ASIO_CORO_YIELD - async_teardown(impl.role, impl.stream(), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_close")); + + async_teardown(impl.role, impl.stream(), + beast::detail::bind_continuation(std::move(*this))); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); if(ec == net::error::eof) { diff --git a/boost/beast/websocket/impl/error.hpp b/boost/beast/websocket/impl/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/impl/error.ipp b/boost/beast/websocket/impl/error.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/impl/handshake.hpp b/boost/beast/websocket/impl/handshake.hpp old mode 100755 new mode 100644 index c1ed026485..2298decf9f --- a/boost/beast/websocket/impl/handshake.hpp +++ b/boost/beast/websocket/impl/handshake.hpp @@ -105,16 +105,28 @@ public: // write HTTP request impl.do_pmd_config(d_.req); BOOST_ASIO_CORO_YIELD - http::async_write(impl.stream(), - d_.req, std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_handshake")); + + http::async_write(impl.stream(), + d_.req, std::move(*this)); + } if(impl.check_stop_now(ec)) goto upcall; // read HTTP response BOOST_ASIO_CORO_YIELD - http::async_read(impl.stream(), - impl.rd_buf, d_.p, - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_handshake")); + + http::async_read(impl.stream(), + impl.rd_buf, d_.p, + std::move(*this)); + } if(ec == http::error::buffer_overflow) { // If the response overflows the internal @@ -127,8 +139,14 @@ public: impl.rd_buf.clear(); BOOST_ASIO_CORO_YIELD - http::async_read(impl.stream(), - d_.fb, d_.p, std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_handshake")); + + http::async_read(impl.stream(), + d_.fb, d_.p, std::move(*this)); + } if(! ec) { diff --git a/boost/beast/websocket/impl/ping.hpp b/boost/beast/websocket/impl/ping.hpp old mode 100755 new mode 100644 index eef9983b37..735c854350 --- a/boost/beast/websocket/impl/ping.hpp +++ b/boost/beast/websocket/impl/ping.hpp @@ -82,10 +82,22 @@ public: if(! impl.wr_block.try_lock(this)) { BOOST_ASIO_CORO_YIELD - impl.op_ping.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_ping")); + + impl.op_ping.emplace(std::move(*this)); + } impl.wr_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_ping")); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); } if(impl.check_stop_now(ec)) @@ -93,8 +105,14 @@ public: // Send ping frame BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), fb_.data(), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_ping")); + + net::async_write(impl.stream(), fb_.data(), + beast::detail::bind_continuation(std::move(*this))); + } if(impl.check_stop_now(ec)) goto upcall; @@ -173,11 +191,23 @@ public: if(! impl.wr_block.try_lock(this)) { BOOST_ASIO_CORO_YIELD - impl.op_idle_ping.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_ping")); + + impl.op_idle_ping.emplace(std::move(*this)); + } impl.wr_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post( - this->get_executor(), std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_ping")); + + net::post( + this->get_executor(), std::move(*this)); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); } if(impl.check_stop_now(ec)) @@ -185,9 +215,14 @@ public: // Send ping frame BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), fb_->data(), - //beast::detail::bind_continuation(std::move(*this))); - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_ping")); + + net::async_write(impl.stream(), fb_->data(), + std::move(*this)); + } if(impl.check_stop_now(ec)) goto upcall; diff --git a/boost/beast/websocket/impl/read.hpp b/boost/beast/websocket/impl/read.hpp old mode 100755 new mode 100644 index 9d788be1cc..7146396982 --- a/boost/beast/websocket/impl/read.hpp +++ b/boost/beast/websocket/impl/read.hpp @@ -102,10 +102,22 @@ public: { do_suspend: BOOST_ASIO_CORO_YIELD - impl.op_r_rd.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.op_r_rd.emplace(std::move(*this)); + } impl.rd_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.rd_block.is_locked(this)); BOOST_ASSERT(!ec); @@ -162,10 +174,16 @@ public: } BOOST_ASSERT(impl.rd_block.is_locked(this)); BOOST_ASIO_CORO_YIELD - impl.stream().async_read_some( - impl.rd_buf.prepare(read_size( - impl.rd_buf, impl.rd_buf.max_size())), - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.stream().async_read_some( + impl.rd_buf.prepare(read_size( + impl.rd_buf, impl.rd_buf.max_size())), + std::move(*this)); + } BOOST_ASSERT(impl.rd_block.is_locked(this)); impl.rd_buf.commit(bytes_transferred); if(impl.check_stop_now(ec)) @@ -205,7 +223,13 @@ public: if(! cont) { BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::post(std::move(*this)); + } BOOST_ASSERT(cont); // VFALCO call check_stop_now() here? } @@ -240,10 +264,22 @@ public: if(! impl.wr_block.try_lock(this)) { BOOST_ASIO_CORO_YIELD - impl.op_rd.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.op_rd.emplace(std::move(*this)); + } impl.wr_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); if(impl.check_stop_now(ec)) goto upcall; @@ -252,9 +288,15 @@ public: // Send pong BOOST_ASSERT(impl.wr_block.is_locked(this)); BOOST_ASIO_CORO_YIELD - net::async_write( - impl.stream(), impl.rd_fb.data(), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::async_write( + impl.stream(), net::const_buffer(impl.rd_fb.data()), + beast::detail::bind_continuation(std::move(*this))); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); if(impl.check_stop_now(ec)) goto upcall; @@ -275,7 +317,13 @@ public: if(! cont) { BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::post(std::move(*this)); + } BOOST_ASSERT(cont); } } @@ -300,7 +348,13 @@ public: if(! cont) { BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::post(std::move(*this)); + } BOOST_ASSERT(cont); } } @@ -358,10 +412,16 @@ public: // Fill the read buffer first, otherwise we // get fewer bytes at the cost of one I/O. BOOST_ASIO_CORO_YIELD - impl.stream().async_read_some( - impl.rd_buf.prepare(read_size( - impl.rd_buf, impl.rd_buf.max_size())), - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.stream().async_read_some( + impl.rd_buf.prepare(read_size( + impl.rd_buf, impl.rd_buf.max_size())), + std::move(*this)); + } impl.rd_buf.commit(bytes_transferred); if(impl.check_stop_now(ec)) goto upcall; @@ -404,8 +464,14 @@ public: BOOST_ASSERT(buffer_bytes(buffers_prefix( clamp(impl.rd_remain), cb_)) > 0); BOOST_ASIO_CORO_YIELD - impl.stream().async_read_some(buffers_prefix( - clamp(impl.rd_remain), cb_), std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.stream().async_read_some(buffers_prefix( + clamp(impl.rd_remain), cb_), std::move(*this)); + } if(impl.check_stop_now(ec)) goto upcall; impl.reset_idle(); @@ -448,10 +514,16 @@ public: { // read new BOOST_ASIO_CORO_YIELD - impl.stream().async_read_some( - impl.rd_buf.prepare(read_size( - impl.rd_buf, impl.rd_buf.max_size())), - std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.stream().async_read_some( + impl.rd_buf.prepare(read_size( + impl.rd_buf, impl.rd_buf.max_size())), + std::move(*this)); + } if(impl.check_stop_now(ec)) goto upcall; impl.reset_idle(); @@ -470,6 +542,8 @@ public: zs.avail_out = out.size(); BOOST_ASSERT(zs.avail_out > 0); } + // boolean to track the end of the message. + bool fin = false; if(impl.rd_remain > 0) { if(impl.rd_buf.size() > 0) @@ -489,22 +563,11 @@ public: else if(impl.rd_fh.fin) { // append the empty block codes - std::uint8_t constexpr + static std::uint8_t constexpr empty_block[4] = { 0x00, 0x00, 0xff, 0xff }; zs.next_in = empty_block; zs.avail_in = sizeof(empty_block); - impl.inflate(zs, zlib::Flush::sync, ec); - if(! ec) - { - // https://github.com/madler/zlib/issues/280 - if(zs.total_out > 0) - ec = error::partial_deflate_block; - } - if(impl.check_stop_now(ec)) - goto upcall; - impl.do_context_takeover_read(impl.role); - impl.rd_done = true; - break; + fin = true; } else { @@ -513,6 +576,11 @@ public: impl.inflate(zs, zlib::Flush::sync, ec); if(impl.check_stop_now(ec)) goto upcall; + if(fin && zs.total_out == 0) { + impl.do_context_takeover_read(impl.role); + impl.rd_done = true; + break; + } if(impl.rd_msg_max && beast::detail::sum_exceeds( impl.rd_size, zs.total_out, impl.rd_msg_max)) { @@ -523,8 +591,10 @@ public: } cb_.consume(zs.total_out); impl.rd_size += zs.total_out; - impl.rd_remain -= zs.total_in; - impl.rd_buf.consume(zs.total_in); + if (! fin) { + impl.rd_remain -= zs.total_in; + impl.rd_buf.consume(zs.total_in); + } bytes_written_ += zs.total_out; } if(impl.rd_op == detail::opcode::text) @@ -548,10 +618,22 @@ public: if(! impl.wr_block.try_lock(this)) { BOOST_ASIO_CORO_YIELD - impl.op_rd.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + impl.op_rd.emplace(std::move(*this)); + } impl.wr_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); if(impl.check_stop_now(ec)) goto upcall; @@ -572,8 +654,14 @@ public: // Send close frame BOOST_ASSERT(impl.wr_block.is_locked(this)); BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), impl.rd_fb.data(), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + net::async_write(impl.stream(), net::const_buffer(impl.rd_fb.data()), + beast::detail::bind_continuation(std::move(*this))); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); if(impl.check_stop_now(ec)) goto upcall; @@ -583,8 +671,14 @@ public: using beast::websocket::async_teardown; BOOST_ASSERT(impl.wr_block.is_locked(this)); BOOST_ASIO_CORO_YIELD - async_teardown(impl.role, impl.stream(), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read_some")); + + async_teardown(impl.role, impl.stream(), + beast::detail::bind_continuation(std::move(*this))); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); if(ec == net::error::eof) { @@ -677,6 +771,11 @@ public: ec, error::buffer_overflow); if(impl.check_stop_now(ec)) goto upcall; + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::async_read")); + read_some_op( std::move(*this), sp, *mb); } @@ -1164,6 +1263,8 @@ loop: zs.avail_out = out.size(); BOOST_ASSERT(zs.avail_out > 0); } + // boolean to track the end of the message. + bool fin = false; if(impl.rd_remain > 0) { if(impl.rd_buf.size() > 0) @@ -1207,22 +1308,10 @@ loop: { // append the empty block codes static std::uint8_t constexpr - empty_block[4] = { - 0x00, 0x00, 0xff, 0xff }; + empty_block[4] = { 0x00, 0x00, 0xff, 0xff }; zs.next_in = empty_block; zs.avail_in = sizeof(empty_block); - impl.inflate(zs, zlib::Flush::sync, ec); - if(! ec) - { - // https://github.com/madler/zlib/issues/280 - if(zs.total_out > 0) - ec = error::partial_deflate_block; - } - if(impl.check_stop_now(ec)) - return bytes_written; - impl.do_context_takeover_read(impl.role); - impl.rd_done = true; - break; + fin = true; } else { @@ -1231,6 +1320,11 @@ loop: impl.inflate(zs, zlib::Flush::sync, ec); if(impl.check_stop_now(ec)) return bytes_written; + if (fin && zs.total_out == 0) { + impl.do_context_takeover_read(impl.role); + impl.rd_done = true; + break; + } if(impl.rd_msg_max && beast::detail::sum_exceeds( impl.rd_size, zs.total_out, impl.rd_msg_max)) { @@ -1240,8 +1334,10 @@ loop: } cb.consume(zs.total_out); impl.rd_size += zs.total_out; - impl.rd_remain -= zs.total_in; - impl.rd_buf.consume(zs.total_in); + if (! fin) { + impl.rd_remain -= zs.total_in; + impl.rd_buf.consume(zs.total_in); + } bytes_written += zs.total_out; } if(impl.rd_op == detail::opcode::text) diff --git a/boost/beast/websocket/impl/rfc6455.hpp b/boost/beast/websocket/impl/rfc6455.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/impl/ssl.hpp b/boost/beast/websocket/impl/ssl.hpp old mode 100755 new mode 100644 index f553022619..7b9bdd63e1 --- a/boost/beast/websocket/impl/ssl.hpp +++ b/boost/beast/websocket/impl/ssl.hpp @@ -11,6 +11,9 @@ #define BOOST_BEAST_WEBSOCKET_IMPL_SSL_HPP #include +#include +#include +#include namespace boost { namespace beast { @@ -33,24 +36,71 @@ namespace beast { template void teardown( - role_type, - net::ssl::stream& stream, + role_type role, + boost::asio::ssl::stream& stream, error_code& ec) { stream.shutdown(ec); + using boost::beast::websocket::teardown; + error_code ec2; + teardown(role, stream.next_layer(), ec ? ec2 : ec); } +namespace detail { + +template +struct ssl_shutdown_op + : boost::asio::coroutine +{ + ssl_shutdown_op( + boost::asio::ssl::stream& s, + role_type role) + : s_(s) + , role_(role) + { + } + + template + void + operator()(Self& self, error_code ec = {}, std::size_t = 0) + { + BOOST_ASIO_CORO_REENTER(*this) + { + BOOST_ASIO_CORO_YIELD + s_.async_shutdown(std::move(self)); + ec_ = ec; + + using boost::beast::websocket::async_teardown; + BOOST_ASIO_CORO_YIELD + async_teardown(role_, s_.next_layer(), std::move(self)); + if (!ec_) + ec_ = ec; + + self.complete(ec_); + } + } + +private: + boost::asio::ssl::stream& s_; + role_type role_; + error_code ec_; +}; + +} // detail + template< class AsyncStream, class TeardownHandler> void async_teardown( - role_type, - net::ssl::stream& stream, + role_type role, + boost::asio::ssl::stream& stream, TeardownHandler&& handler) { - stream.async_shutdown( - std::forward(handler)); + return boost::asio::async_compose( + detail::ssl_shutdown_op(stream, role), + handler, + stream); } } // beast diff --git a/boost/beast/websocket/impl/stream.hpp b/boost/beast/websocket/impl/stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/impl/stream_impl.hpp b/boost/beast/websocket/impl/stream_impl.hpp old mode 100755 new mode 100644 index 53e18157b7..01c0be847e --- a/boost/beast/websocket/impl/stream_impl.hpp +++ b/boost/beast/websocket/impl/stream_impl.hpp @@ -420,6 +420,12 @@ struct stream::impl_type { timer.expires_after( timeout_opt.handshake_timeout); + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::check_stop_now" + )); + timer.async_wait( timeout_handler( ex, this->weak_from_this())); @@ -436,6 +442,12 @@ struct stream::impl_type else timer.expires_after( timeout_opt.idle_timeout); + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::check_stop_now" + )); + timer.async_wait( timeout_handler( ex, this->weak_from_this())); @@ -453,6 +465,12 @@ struct stream::impl_type idle_counter = 0; timer.expires_after( timeout_opt.handshake_timeout); + + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::check_stop_now" + )); + timer.async_wait( timeout_handler( ex, this->weak_from_this())); @@ -551,12 +569,26 @@ private: if( impl.timeout_opt.keep_alive_pings && impl.idle_counter < 1) { - idle_ping_op(sp, get_executor()); - + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::timeout_handler" + )); + + idle_ping_op(sp, get_executor()); + } ++impl.idle_counter; impl.timer.expires_after( impl.timeout_opt.idle_timeout / 2); - impl.timer.async_wait(std::move(*this)); + + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::timeout_handler" + )); + + impl.timer.async_wait(std::move(*this)); + } return; } diff --git a/boost/beast/websocket/impl/teardown.hpp b/boost/beast/websocket/impl/teardown.hpp old mode 100755 new mode 100644 index 2e2f0ad7e3..3dfc3d2f33 --- a/boost/beast/websocket/impl/teardown.hpp +++ b/boost/beast/websocket/impl/teardown.hpp @@ -56,6 +56,7 @@ public: s.get_executor()) , s_(s) , role_(role) + , nb_(false) { (*this)({}, 0, false); } @@ -85,9 +86,16 @@ public: if(ec == net::error::would_block) { BOOST_ASIO_CORO_YIELD - s_.async_wait( - net::socket_base::wait_read, - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::tcp::async_teardown" + )); + + s_.async_wait( + net::socket_base::wait_read, + beast::detail::bind_continuation(std::move(*this))); + } continue; } if(ec) @@ -113,8 +121,15 @@ public: if(! cont) { BOOST_ASIO_CORO_YIELD - net::post(bind_front_handler( - std::move(*this), ec)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + "websocket::tcp::async_teardown" + )); + + net::post(bind_front_handler( + std::move(*this), ec)); + } } { error_code ignored; diff --git a/boost/beast/websocket/impl/write.hpp b/boost/beast/websocket/impl/write.hpp old mode 100755 new mode 100644 index b76441d39f..6f1c80d900 --- a/boost/beast/websocket/impl/write.hpp +++ b/boost/beast/websocket/impl/write.hpp @@ -147,10 +147,10 @@ public: }; template -template +template void stream:: -write_some_op:: +write_some_op:: operator()( error_code ec, std::size_t bytes_transferred, @@ -174,10 +174,28 @@ operator()( { do_suspend: BOOST_ASIO_CORO_YIELD - impl.op_wr.emplace(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + impl.op_wr.emplace(std::move(*this)); + } impl.wr_block.lock(this); BOOST_ASIO_CORO_YIELD - net::post(std::move(*this)); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + net::post(std::move(*this)); + } BOOST_ASSERT(impl.wr_block.is_locked(this)); } if(impl.check_stop_now(ec)) @@ -195,9 +213,23 @@ operator()( impl.wr_fb, fh_); impl.wr_cont = ! fin_; BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), - buffers_cat(impl.wr_fb.data(), cb_), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + net::async_write(impl.stream(), + buffers_cat( + net::const_buffer(impl.wr_fb.data()), + net::const_buffer(0, 0), + cb_, + buffers_prefix(0, cb_) + ), + beast::detail::bind_continuation(std::move(*this))); + } bytes_transferred_ += clamp(fh_.len); if(impl.check_stop_now(ec)) goto upcall; @@ -221,10 +253,26 @@ operator()( impl.wr_cont = ! fin_; // Send frame BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), buffers_cat( - impl.wr_fb.data(), - buffers_prefix(clamp(fh_.len), cb_)), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + buffers_suffix empty_cb(cb_); + empty_cb.consume(~std::size_t(0)); + + net::async_write(impl.stream(), + buffers_cat( + net::const_buffer(impl.wr_fb.data()), + net::const_buffer(0, 0), + empty_cb, + buffers_prefix(clamp(fh_.len), cb_) + ), + beast::detail::bind_continuation(std::move(*this))); + } n = clamp(fh_.len); // restore `n` on yield bytes_transferred_ += n; if(impl.check_stop_now(ec)) @@ -272,10 +320,26 @@ operator()( impl.wr_cont = ! fin_; // write frame header and some payload BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), buffers_cat( - impl.wr_fb.data(), - net::buffer(impl.wr_buf.get(), n)), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + buffers_suffix empty_cb(cb_); + empty_cb.consume(~std::size_t(0)); + + net::async_write(impl.stream(), + buffers_cat( + net::const_buffer(impl.wr_fb.data()), + net::const_buffer(net::buffer(impl.wr_buf.get(), n)), + empty_cb, + buffers_prefix(0, empty_cb) + ), + beast::detail::bind_continuation(std::move(*this))); + } // VFALCO What about consuming the buffer on error? bytes_transferred_ += bytes_transferred - impl.wr_fb.size(); @@ -292,9 +356,26 @@ operator()( remain_ -= n; // write more payload BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), - net::buffer(impl.wr_buf.get(), n), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + buffers_suffix empty_cb(cb_); + empty_cb.consume(~std::size_t(0)); + + net::async_write(impl.stream(), + buffers_cat( + net::const_buffer(0, 0), + net::const_buffer(net::buffer(impl.wr_buf.get(), n)), + empty_cb, + buffers_prefix(0, empty_cb) + ), + beast::detail::bind_continuation(std::move(*this))); + } bytes_transferred_ += bytes_transferred; if(impl.check_stop_now(ec)) goto upcall; @@ -325,10 +406,26 @@ operator()( impl.wr_cont = ! fin_; // Send frame BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), buffers_cat( - impl.wr_fb.data(), - net::buffer(impl.wr_buf.get(), n)), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + buffers_suffix empty_cb(cb_); + empty_cb.consume(~std::size_t(0)); + + net::async_write(impl.stream(), + buffers_cat( + net::const_buffer(impl.wr_fb.data()), + net::const_buffer(net::buffer(impl.wr_buf.get(), n)), + empty_cb, + buffers_prefix(0, empty_cb) + ), + beast::detail::bind_continuation(std::move(*this))); + } n = bytes_transferred - impl.wr_fb.size(); bytes_transferred_ += n; if(impl.check_stop_now(ec)) @@ -389,9 +486,26 @@ operator()( impl.wr_cont = ! fin_; // Send frame BOOST_ASIO_CORO_YIELD - net::async_write(impl.stream(), buffers_cat( - impl.wr_fb.data(), b), - beast::detail::bind_continuation(std::move(*this))); + { + BOOST_ASIO_HANDLER_LOCATION(( + __FILE__, __LINE__, + fin_ ? + "websocket::async_write" : + "websocket::async_write_some" + )); + + buffers_suffix empty_cb(cb_); + empty_cb.consume(~std::size_t(0)); + + net::async_write(impl.stream(), + buffers_cat( + net::const_buffer(impl.wr_fb.data()), + net::const_buffer(b), + empty_cb, + buffers_prefix(0, empty_cb) + ), + beast::detail::bind_continuation(std::move(*this))); + } bytes_transferred_ += in_; if(impl.check_stop_now(ec)) goto upcall; diff --git a/boost/beast/websocket/option.hpp b/boost/beast/websocket/option.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/rfc6455.hpp b/boost/beast/websocket/rfc6455.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/ssl.hpp b/boost/beast/websocket/ssl.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/stream.hpp b/boost/beast/websocket/stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/stream_base.hpp b/boost/beast/websocket/stream_base.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/stream_fwd.hpp b/boost/beast/websocket/stream_fwd.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/websocket/teardown.hpp b/boost/beast/websocket/teardown.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib.hpp b/boost/beast/zlib.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/deflate_stream.hpp b/boost/beast/zlib/deflate_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/bitstream.hpp b/boost/beast/zlib/detail/bitstream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/deflate_stream.hpp b/boost/beast/zlib/detail/deflate_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/deflate_stream.ipp b/boost/beast/zlib/detail/deflate_stream.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/inflate_stream.hpp b/boost/beast/zlib/detail/inflate_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/inflate_stream.ipp b/boost/beast/zlib/detail/inflate_stream.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/ranges.hpp b/boost/beast/zlib/detail/ranges.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/detail/window.hpp b/boost/beast/zlib/detail/window.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/error.hpp b/boost/beast/zlib/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/impl/error.hpp b/boost/beast/zlib/impl/error.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/impl/error.ipp b/boost/beast/zlib/impl/error.ipp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/inflate_stream.hpp b/boost/beast/zlib/inflate_stream.hpp old mode 100755 new mode 100644 diff --git a/boost/beast/zlib/zlib.hpp b/boost/beast/zlib/zlib.hpp old mode 100755 new mode 100644 diff --git a/boost/compute.hpp b/boost/compute.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm.hpp b/boost/compute/algorithm.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/accumulate.hpp b/boost/compute/algorithm/accumulate.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/adjacent_difference.hpp b/boost/compute/algorithm/adjacent_difference.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/adjacent_find.hpp b/boost/compute/algorithm/adjacent_find.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/all_of.hpp b/boost/compute/algorithm/all_of.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/any_of.hpp b/boost/compute/algorithm/any_of.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/binary_search.hpp b/boost/compute/algorithm/binary_search.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/copy.hpp b/boost/compute/algorithm/copy.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/copy_if.hpp b/boost/compute/algorithm/copy_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/copy_n.hpp b/boost/compute/algorithm/copy_n.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/count.hpp b/boost/compute/algorithm/count.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/count_if.hpp b/boost/compute/algorithm/count_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/balanced_path.hpp b/boost/compute/algorithm/detail/balanced_path.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/binary_find.hpp b/boost/compute/algorithm/detail/binary_find.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/compact.hpp b/boost/compute/algorithm/detail/compact.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/copy_on_device.hpp b/boost/compute/algorithm/detail/copy_on_device.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/copy_to_device.hpp b/boost/compute/algorithm/detail/copy_to_device.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/copy_to_host.hpp b/boost/compute/algorithm/detail/copy_to_host.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/count_if_with_ballot.hpp b/boost/compute/algorithm/detail/count_if_with_ballot.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/count_if_with_reduce.hpp b/boost/compute/algorithm/detail/count_if_with_reduce.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/count_if_with_threads.hpp b/boost/compute/algorithm/detail/count_if_with_threads.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/find_extrema.hpp b/boost/compute/algorithm/detail/find_extrema.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp b/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp b/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp b/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/find_if_with_atomics.hpp b/boost/compute/algorithm/detail/find_if_with_atomics.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/inplace_reduce.hpp b/boost/compute/algorithm/detail/inplace_reduce.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/insertion_sort.hpp b/boost/compute/algorithm/detail/insertion_sort.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/merge_path.hpp b/boost/compute/algorithm/detail/merge_path.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp b/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp b/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/merge_with_merge_path.hpp b/boost/compute/algorithm/detail/merge_with_merge_path.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/radix_sort.hpp b/boost/compute/algorithm/detail/radix_sort.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/random_fill.hpp b/boost/compute/algorithm/detail/random_fill.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/reduce_by_key.hpp b/boost/compute/algorithm/detail/reduce_by_key.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp b/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/reduce_on_cpu.hpp b/boost/compute/algorithm/detail/reduce_on_cpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/reduce_on_gpu.hpp b/boost/compute/algorithm/detail/reduce_on_gpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/scan.hpp b/boost/compute/algorithm/detail/scan.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/scan_on_cpu.hpp b/boost/compute/algorithm/detail/scan_on_cpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/scan_on_gpu.hpp b/boost/compute/algorithm/detail/scan_on_gpu.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/search_all.hpp b/boost/compute/algorithm/detail/search_all.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_accumulate.hpp b/boost/compute/algorithm/detail/serial_accumulate.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_count_if.hpp b/boost/compute/algorithm/detail/serial_count_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_find_extrema.hpp b/boost/compute/algorithm/detail/serial_find_extrema.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_merge.hpp b/boost/compute/algorithm/detail/serial_merge.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_reduce.hpp b/boost/compute/algorithm/detail/serial_reduce.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_reduce_by_key.hpp b/boost/compute/algorithm/detail/serial_reduce_by_key.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/detail/serial_scan.hpp b/boost/compute/algorithm/detail/serial_scan.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/equal.hpp b/boost/compute/algorithm/equal.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/equal_range.hpp b/boost/compute/algorithm/equal_range.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/exclusive_scan.hpp b/boost/compute/algorithm/exclusive_scan.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/fill.hpp b/boost/compute/algorithm/fill.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/fill_n.hpp b/boost/compute/algorithm/fill_n.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/find.hpp b/boost/compute/algorithm/find.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/find_end.hpp b/boost/compute/algorithm/find_end.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/find_if.hpp b/boost/compute/algorithm/find_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/find_if_not.hpp b/boost/compute/algorithm/find_if_not.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/for_each.hpp b/boost/compute/algorithm/for_each.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/for_each_n.hpp b/boost/compute/algorithm/for_each_n.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/gather.hpp b/boost/compute/algorithm/gather.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/generate.hpp b/boost/compute/algorithm/generate.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/generate_n.hpp b/boost/compute/algorithm/generate_n.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/includes.hpp b/boost/compute/algorithm/includes.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/inclusive_scan.hpp b/boost/compute/algorithm/inclusive_scan.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/inner_product.hpp b/boost/compute/algorithm/inner_product.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/inplace_merge.hpp b/boost/compute/algorithm/inplace_merge.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/iota.hpp b/boost/compute/algorithm/iota.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/is_partitioned.hpp b/boost/compute/algorithm/is_partitioned.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/is_permutation.hpp b/boost/compute/algorithm/is_permutation.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/is_sorted.hpp b/boost/compute/algorithm/is_sorted.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/lexicographical_compare.hpp b/boost/compute/algorithm/lexicographical_compare.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/lower_bound.hpp b/boost/compute/algorithm/lower_bound.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/max_element.hpp b/boost/compute/algorithm/max_element.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/merge.hpp b/boost/compute/algorithm/merge.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/min_element.hpp b/boost/compute/algorithm/min_element.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/minmax_element.hpp b/boost/compute/algorithm/minmax_element.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/mismatch.hpp b/boost/compute/algorithm/mismatch.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/next_permutation.hpp b/boost/compute/algorithm/next_permutation.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/none_of.hpp b/boost/compute/algorithm/none_of.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/nth_element.hpp b/boost/compute/algorithm/nth_element.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/partial_sum.hpp b/boost/compute/algorithm/partial_sum.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/partition.hpp b/boost/compute/algorithm/partition.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/partition_copy.hpp b/boost/compute/algorithm/partition_copy.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/partition_point.hpp b/boost/compute/algorithm/partition_point.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/prev_permutation.hpp b/boost/compute/algorithm/prev_permutation.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/random_shuffle.hpp b/boost/compute/algorithm/random_shuffle.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/reduce.hpp b/boost/compute/algorithm/reduce.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/reduce_by_key.hpp b/boost/compute/algorithm/reduce_by_key.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/remove.hpp b/boost/compute/algorithm/remove.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/remove_if.hpp b/boost/compute/algorithm/remove_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/replace.hpp b/boost/compute/algorithm/replace.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/replace_copy.hpp b/boost/compute/algorithm/replace_copy.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/reverse.hpp b/boost/compute/algorithm/reverse.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/reverse_copy.hpp b/boost/compute/algorithm/reverse_copy.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/rotate.hpp b/boost/compute/algorithm/rotate.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/rotate_copy.hpp b/boost/compute/algorithm/rotate_copy.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/scatter.hpp b/boost/compute/algorithm/scatter.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/scatter_if.hpp b/boost/compute/algorithm/scatter_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/search.hpp b/boost/compute/algorithm/search.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/search_n.hpp b/boost/compute/algorithm/search_n.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/set_difference.hpp b/boost/compute/algorithm/set_difference.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/set_intersection.hpp b/boost/compute/algorithm/set_intersection.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/set_symmetric_difference.hpp b/boost/compute/algorithm/set_symmetric_difference.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/set_union.hpp b/boost/compute/algorithm/set_union.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/sort.hpp b/boost/compute/algorithm/sort.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/sort_by_key.hpp b/boost/compute/algorithm/sort_by_key.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/stable_partition.hpp b/boost/compute/algorithm/stable_partition.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/stable_sort.hpp b/boost/compute/algorithm/stable_sort.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/stable_sort_by_key.hpp b/boost/compute/algorithm/stable_sort_by_key.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/swap_ranges.hpp b/boost/compute/algorithm/swap_ranges.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/transform.hpp b/boost/compute/algorithm/transform.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/transform_if.hpp b/boost/compute/algorithm/transform_if.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/transform_reduce.hpp b/boost/compute/algorithm/transform_reduce.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/unique.hpp b/boost/compute/algorithm/unique.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/unique_copy.hpp b/boost/compute/algorithm/unique_copy.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/algorithm/upper_bound.hpp b/boost/compute/algorithm/upper_bound.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/allocator.hpp b/boost/compute/allocator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/allocator/buffer_allocator.hpp b/boost/compute/allocator/buffer_allocator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/allocator/pinned_allocator.hpp b/boost/compute/allocator/pinned_allocator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/async.hpp b/boost/compute/async.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/async/future.hpp b/boost/compute/async/future.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/async/wait.hpp b/boost/compute/async/wait.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/async/wait_guard.hpp b/boost/compute/async/wait_guard.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/buffer.hpp b/boost/compute/buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/cl.hpp b/boost/compute/cl.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/cl_ext.hpp b/boost/compute/cl_ext.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/closure.hpp b/boost/compute/closure.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/command_queue.hpp b/boost/compute/command_queue.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/config.hpp b/boost/compute/config.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container.hpp b/boost/compute/container.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/array.hpp b/boost/compute/container/array.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/basic_string.hpp b/boost/compute/container/basic_string.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/detail/scalar.hpp b/boost/compute/container/detail/scalar.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/dynamic_bitset.hpp b/boost/compute/container/dynamic_bitset.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/flat_map.hpp b/boost/compute/container/flat_map.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/flat_set.hpp b/boost/compute/container/flat_set.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/mapped_view.hpp b/boost/compute/container/mapped_view.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/stack.hpp b/boost/compute/container/stack.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/string.hpp b/boost/compute/container/string.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/valarray.hpp b/boost/compute/container/valarray.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/container/vector.hpp b/boost/compute/container/vector.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/context.hpp b/boost/compute/context.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/core.hpp b/boost/compute/core.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/assert_cl_success.hpp b/boost/compute/detail/assert_cl_success.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/buffer_value.hpp b/boost/compute/detail/buffer_value.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/cl_versions.hpp b/boost/compute/detail/cl_versions.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/device_ptr.hpp b/boost/compute/detail/device_ptr.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/diagnostic.hpp b/boost/compute/detail/diagnostic.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/duration.hpp b/boost/compute/detail/duration.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/get_object_info.hpp b/boost/compute/detail/get_object_info.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/getenv.hpp b/boost/compute/detail/getenv.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/global_static.hpp b/boost/compute/detail/global_static.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/is_buffer_iterator.hpp b/boost/compute/detail/is_buffer_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/is_contiguous_iterator.hpp b/boost/compute/detail/is_contiguous_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/iterator_plus_distance.hpp b/boost/compute/detail/iterator_plus_distance.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/iterator_range_size.hpp b/boost/compute/detail/iterator_range_size.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/iterator_traits.hpp b/boost/compute/detail/iterator_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/literal.hpp b/boost/compute/detail/literal.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/lru_cache.hpp b/boost/compute/detail/lru_cache.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/meta_kernel.hpp b/boost/compute/detail/meta_kernel.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/mpl_vector_to_tuple.hpp b/boost/compute/detail/mpl_vector_to_tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/nvidia_compute_capability.hpp b/boost/compute/detail/nvidia_compute_capability.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/parameter_cache.hpp b/boost/compute/detail/parameter_cache.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/path.hpp b/boost/compute/detail/path.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/print_range.hpp b/boost/compute/detail/print_range.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/read_write_single_value.hpp b/boost/compute/detail/read_write_single_value.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/sha1.hpp b/boost/compute/detail/sha1.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/variadic_macros.hpp b/boost/compute/detail/variadic_macros.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/vendor.hpp b/boost/compute/detail/vendor.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/detail/work_size.hpp b/boost/compute/detail/work_size.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/device.hpp b/boost/compute/device.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/event.hpp b/boost/compute/event.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/exception.hpp b/boost/compute/exception.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/exception/context_error.hpp b/boost/compute/exception/context_error.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/exception/no_device_found.hpp b/boost/compute/exception/no_device_found.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/exception/opencl_error.hpp b/boost/compute/exception/opencl_error.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/exception/program_build_failure.hpp b/boost/compute/exception/program_build_failure.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/exception/unsupported_extension_error.hpp b/boost/compute/exception/unsupported_extension_error.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/experimental/clamp_range.hpp b/boost/compute/experimental/clamp_range.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/experimental/malloc.hpp b/boost/compute/experimental/malloc.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/experimental/sort_by_transform.hpp b/boost/compute/experimental/sort_by_transform.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/experimental/tabulate.hpp b/boost/compute/experimental/tabulate.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/function.hpp b/boost/compute/function.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional.hpp b/boost/compute/functional.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/as.hpp b/boost/compute/functional/as.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/atomic.hpp b/boost/compute/functional/atomic.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/bind.hpp b/boost/compute/functional/bind.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/common.hpp b/boost/compute/functional/common.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/convert.hpp b/boost/compute/functional/convert.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/detail/macros.hpp b/boost/compute/functional/detail/macros.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/detail/nvidia_ballot.hpp b/boost/compute/functional/detail/nvidia_ballot.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/detail/nvidia_popcount.hpp b/boost/compute/functional/detail/nvidia_popcount.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/detail/unpack.hpp b/boost/compute/functional/detail/unpack.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/field.hpp b/boost/compute/functional/field.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/geometry.hpp b/boost/compute/functional/geometry.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/get.hpp b/boost/compute/functional/get.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/hash.hpp b/boost/compute/functional/hash.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/identity.hpp b/boost/compute/functional/identity.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/integer.hpp b/boost/compute/functional/integer.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/logical.hpp b/boost/compute/functional/logical.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/math.hpp b/boost/compute/functional/math.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/operator.hpp b/boost/compute/functional/operator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/popcount.hpp b/boost/compute/functional/popcount.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/functional/relational.hpp b/boost/compute/functional/relational.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image.hpp b/boost/compute/image.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image/image1d.hpp b/boost/compute/image/image1d.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image/image2d.hpp b/boost/compute/image/image2d.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image/image3d.hpp b/boost/compute/image/image3d.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image/image_format.hpp b/boost/compute/image/image_format.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image/image_object.hpp b/boost/compute/image/image_object.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image/image_sampler.hpp b/boost/compute/image/image_sampler.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image2d.hpp b/boost/compute/image2d.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image3d.hpp b/boost/compute/image3d.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image_format.hpp b/boost/compute/image_format.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/image_sampler.hpp b/boost/compute/image_sampler.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/eigen.hpp b/boost/compute/interop/eigen.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/eigen/core.hpp b/boost/compute/interop/eigen/core.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opencv.hpp b/boost/compute/interop/opencv.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opencv/core.hpp b/boost/compute/interop/opencv/core.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opencv/highgui.hpp b/boost/compute/interop/opencv/highgui.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opencv/ocl.hpp b/boost/compute/interop/opencv/ocl.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl.hpp b/boost/compute/interop/opengl.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/acquire.hpp b/boost/compute/interop/opengl/acquire.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/cl_gl.hpp b/boost/compute/interop/opengl/cl_gl.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/cl_gl_ext.hpp b/boost/compute/interop/opengl/cl_gl_ext.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/context.hpp b/boost/compute/interop/opengl/context.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/gl.hpp b/boost/compute/interop/opengl/gl.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/opengl_buffer.hpp b/boost/compute/interop/opengl/opengl_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/opengl_renderbuffer.hpp b/boost/compute/interop/opengl/opengl_renderbuffer.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/opengl/opengl_texture.hpp b/boost/compute/interop/opengl/opengl_texture.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt.hpp b/boost/compute/interop/qt.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt/qimage.hpp b/boost/compute/interop/qt/qimage.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt/qpoint.hpp b/boost/compute/interop/qt/qpoint.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt/qpointf.hpp b/boost/compute/interop/qt/qpointf.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt/qtcore.hpp b/boost/compute/interop/qt/qtcore.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt/qtgui.hpp b/boost/compute/interop/qt/qtgui.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/qt/qvector.hpp b/boost/compute/interop/qt/qvector.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/vtk.hpp b/boost/compute/interop/vtk.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/vtk/bounds.hpp b/boost/compute/interop/vtk/bounds.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/vtk/data_array.hpp b/boost/compute/interop/vtk/data_array.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/vtk/matrix4x4.hpp b/boost/compute/interop/vtk/matrix4x4.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/interop/vtk/points.hpp b/boost/compute/interop/vtk/points.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator.hpp b/boost/compute/iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/buffer_iterator.hpp b/boost/compute/iterator/buffer_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/constant_buffer_iterator.hpp b/boost/compute/iterator/constant_buffer_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/constant_iterator.hpp b/boost/compute/iterator/constant_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/counting_iterator.hpp b/boost/compute/iterator/counting_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/detail/get_base_iterator_buffer.hpp b/boost/compute/iterator/detail/get_base_iterator_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/detail/swizzle_iterator.hpp b/boost/compute/iterator/detail/swizzle_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/discard_iterator.hpp b/boost/compute/iterator/discard_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/function_input_iterator.hpp b/boost/compute/iterator/function_input_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/permutation_iterator.hpp b/boost/compute/iterator/permutation_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/strided_iterator.hpp b/boost/compute/iterator/strided_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/transform_iterator.hpp b/boost/compute/iterator/transform_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/iterator/zip_iterator.hpp b/boost/compute/iterator/zip_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/kernel.hpp b/boost/compute/kernel.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda.hpp b/boost/compute/lambda.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/context.hpp b/boost/compute/lambda/context.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/functional.hpp b/boost/compute/lambda/functional.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/get.hpp b/boost/compute/lambda/get.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/make_pair.hpp b/boost/compute/lambda/make_pair.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/make_tuple.hpp b/boost/compute/lambda/make_tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/placeholder.hpp b/boost/compute/lambda/placeholder.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/placeholders.hpp b/boost/compute/lambda/placeholders.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/lambda/result_of.hpp b/boost/compute/lambda/result_of.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/memory.hpp b/boost/compute/memory.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/memory/local_buffer.hpp b/boost/compute/memory/local_buffer.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/memory/svm_ptr.hpp b/boost/compute/memory/svm_ptr.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/memory_object.hpp b/boost/compute/memory_object.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/pipe.hpp b/boost/compute/pipe.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/platform.hpp b/boost/compute/platform.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/program.hpp b/boost/compute/program.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random.hpp b/boost/compute/random.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/bernoulli_distribution.hpp b/boost/compute/random/bernoulli_distribution.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/default_random_engine.hpp b/boost/compute/random/default_random_engine.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/discrete_distribution.hpp b/boost/compute/random/discrete_distribution.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/linear_congruential_engine.hpp b/boost/compute/random/linear_congruential_engine.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/mersenne_twister_engine.hpp b/boost/compute/random/mersenne_twister_engine.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/normal_distribution.hpp b/boost/compute/random/normal_distribution.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/threefry_engine.hpp b/boost/compute/random/threefry_engine.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/uniform_int_distribution.hpp b/boost/compute/random/uniform_int_distribution.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/random/uniform_real_distribution.hpp b/boost/compute/random/uniform_real_distribution.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/source.hpp b/boost/compute/source.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/svm.hpp b/boost/compute/svm.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/system.hpp b/boost/compute/system.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits.hpp b/boost/compute/type_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/common_type.hpp b/boost/compute/type_traits/common_type.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/detail/capture_traits.hpp b/boost/compute/type_traits/detail/capture_traits.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/is_device_iterator.hpp b/boost/compute/type_traits/is_device_iterator.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/is_fundamental.hpp b/boost/compute/type_traits/is_fundamental.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/is_vector_type.hpp b/boost/compute/type_traits/is_vector_type.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/make_vector_type.hpp b/boost/compute/type_traits/make_vector_type.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/result_of.hpp b/boost/compute/type_traits/result_of.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/scalar_type.hpp b/boost/compute/type_traits/scalar_type.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/type_definition.hpp b/boost/compute/type_traits/type_definition.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/type_name.hpp b/boost/compute/type_traits/type_name.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/type_traits/vector_size.hpp b/boost/compute/type_traits/vector_size.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types.hpp b/boost/compute/types.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/builtin.hpp b/boost/compute/types/builtin.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/complex.hpp b/boost/compute/types/complex.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/fundamental.hpp b/boost/compute/types/fundamental.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/pair.hpp b/boost/compute/types/pair.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/size_t.hpp b/boost/compute/types/size_t.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/struct.hpp b/boost/compute/types/struct.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/types/tuple.hpp b/boost/compute/types/tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/user_event.hpp b/boost/compute/user_event.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility.hpp b/boost/compute/utility.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility/dim.hpp b/boost/compute/utility/dim.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility/extents.hpp b/boost/compute/utility/extents.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility/invoke.hpp b/boost/compute/utility/invoke.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility/program_cache.hpp b/boost/compute/utility/program_cache.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility/source.hpp b/boost/compute/utility/source.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/utility/wait_list.hpp b/boost/compute/utility/wait_list.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/version.hpp b/boost/compute/version.hpp old mode 100755 new mode 100644 diff --git a/boost/compute/wait_list.hpp b/boost/compute/wait_list.hpp old mode 100755 new mode 100644 diff --git a/boost/hana.hpp b/boost/hana.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/accessors.hpp b/boost/hana/accessors.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/adapt_adt.hpp b/boost/hana/adapt_adt.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/adapt_struct.hpp b/boost/hana/adapt_struct.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/adjust.hpp b/boost/hana/adjust.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/adjust_if.hpp b/boost/hana/adjust_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/all.hpp b/boost/hana/all.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/all_of.hpp b/boost/hana/all_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/and.hpp b/boost/hana/and.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/any.hpp b/boost/hana/any.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/any_of.hpp b/boost/hana/any_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ap.hpp b/boost/hana/ap.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/append.hpp b/boost/hana/append.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/assert.hpp b/boost/hana/assert.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/at.hpp b/boost/hana/at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/at_key.hpp b/boost/hana/at_key.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/back.hpp b/boost/hana/back.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/basic_tuple.hpp b/boost/hana/basic_tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/bool.hpp b/boost/hana/bool.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/cartesian_product.hpp b/boost/hana/cartesian_product.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/chain.hpp b/boost/hana/chain.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/comparing.hpp b/boost/hana/comparing.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concat.hpp b/boost/hana/concat.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept.hpp b/boost/hana/concept.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/applicative.hpp b/boost/hana/concept/applicative.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/comonad.hpp b/boost/hana/concept/comonad.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/comparable.hpp b/boost/hana/concept/comparable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/constant.hpp b/boost/hana/concept/constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/euclidean_ring.hpp b/boost/hana/concept/euclidean_ring.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/foldable.hpp b/boost/hana/concept/foldable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/functor.hpp b/boost/hana/concept/functor.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/group.hpp b/boost/hana/concept/group.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/hashable.hpp b/boost/hana/concept/hashable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/integral_constant.hpp b/boost/hana/concept/integral_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/iterable.hpp b/boost/hana/concept/iterable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/logical.hpp b/boost/hana/concept/logical.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/metafunction.hpp b/boost/hana/concept/metafunction.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/monad.hpp b/boost/hana/concept/monad.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/monad_plus.hpp b/boost/hana/concept/monad_plus.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/monoid.hpp b/boost/hana/concept/monoid.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/orderable.hpp b/boost/hana/concept/orderable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/product.hpp b/boost/hana/concept/product.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/ring.hpp b/boost/hana/concept/ring.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/searchable.hpp b/boost/hana/concept/searchable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/sequence.hpp b/boost/hana/concept/sequence.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/concept/struct.hpp b/boost/hana/concept/struct.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/config.hpp b/boost/hana/config.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/contains.hpp b/boost/hana/contains.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core.hpp b/boost/hana/core.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/common.hpp b/boost/hana/core/common.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/default.hpp b/boost/hana/core/default.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/dispatch.hpp b/boost/hana/core/dispatch.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/is_a.hpp b/boost/hana/core/is_a.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/make.hpp b/boost/hana/core/make.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/tag_of.hpp b/boost/hana/core/tag_of.hpp old mode 100755 new mode 100644 index 87406521cd..656e246702 --- a/boost/hana/core/tag_of.hpp +++ b/boost/hana/core/tag_of.hpp @@ -15,6 +15,8 @@ Distributed under the Boost Software License, Version 1.0. #include #include +#include + BOOST_HANA_NAMESPACE_BEGIN //! @cond @@ -44,6 +46,14 @@ BOOST_HANA_NAMESPACE_BEGIN template struct tag_of : tag_of { }; template struct tag_of : tag_of { }; template struct tag_of : tag_of { }; + + namespace detail { + template + struct has_idempotent_tag + : std::is_same, + std::remove_const_t>> + { }; + } BOOST_HANA_NAMESPACE_END #endif // !BOOST_HANA_CORE_TAG_OF_HPP diff --git a/boost/hana/core/to.hpp b/boost/hana/core/to.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/core/when.hpp b/boost/hana/core/when.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/count.hpp b/boost/hana/count.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/count_if.hpp b/boost/hana/count_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/cycle.hpp b/boost/hana/cycle.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/define_struct.hpp b/boost/hana/define_struct.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/algorithm.hpp b/boost/hana/detail/algorithm.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/any_of.hpp b/boost/hana/detail/any_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/array.hpp b/boost/hana/detail/array.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/canonical_constant.hpp b/boost/hana/detail/canonical_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/concepts.hpp b/boost/hana/detail/concepts.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/create.hpp b/boost/hana/detail/create.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/decay.hpp b/boost/hana/detail/decay.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/dispatch_if.hpp b/boost/hana/detail/dispatch_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/ebo.hpp b/boost/hana/detail/ebo.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/fast_and.hpp b/boost/hana/detail/fast_and.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/first_unsatisfied_index.hpp b/boost/hana/detail/first_unsatisfied_index.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/has_common_embedding.hpp b/boost/hana/detail/has_common_embedding.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/has_duplicates.hpp b/boost/hana/detail/has_duplicates.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/hash_table.hpp b/boost/hana/detail/hash_table.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/index_if.hpp b/boost/hana/detail/index_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/integral_constant.hpp b/boost/hana/detail/integral_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/intrinsics.hpp b/boost/hana/detail/intrinsics.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/nested_by.hpp b/boost/hana/detail/nested_by.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/nested_by_fwd.hpp b/boost/hana/detail/nested_by_fwd.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/nested_than.hpp b/boost/hana/detail/nested_than.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/nested_than_fwd.hpp b/boost/hana/detail/nested_than_fwd.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/nested_to.hpp b/boost/hana/detail/nested_to.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/nested_to_fwd.hpp b/boost/hana/detail/nested_to_fwd.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/adl.hpp b/boost/hana/detail/operators/adl.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/arithmetic.hpp b/boost/hana/detail/operators/arithmetic.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/comparable.hpp b/boost/hana/detail/operators/comparable.hpp old mode 100755 new mode 100644 index 0c110fe3a3..762c2dadfa --- a/boost/hana/detail/operators/comparable.hpp +++ b/boost/hana/detail/operators/comparable.hpp @@ -26,15 +26,23 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace operators { template ::type>::value || - detail::comparable_operators::type>::value + !detail::has_idempotent_tag::value && + !detail::has_idempotent_tag::value && + (detail::comparable_operators< + typename hana::tag_of::type>::value || + detail::comparable_operators< + typename hana::tag_of::type>::value) >::type> constexpr auto operator==(X&& x, Y&& y) { return hana::equal(static_cast(x), static_cast(y)); } template ::type>::value || - detail::comparable_operators::type>::value + !detail::has_idempotent_tag::value && + !detail::has_idempotent_tag::value && + (detail::comparable_operators< + typename hana::tag_of::type>::value || + detail::comparable_operators< + typename hana::tag_of::type>::value) >::type> constexpr auto operator!=(X&& x, Y&& y) { return hana::not_equal(static_cast(x), static_cast(y)); } diff --git a/boost/hana/detail/operators/iterable.hpp b/boost/hana/detail/operators/iterable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/logical.hpp b/boost/hana/detail/operators/logical.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/monad.hpp b/boost/hana/detail/operators/monad.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/orderable.hpp b/boost/hana/detail/operators/orderable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/operators/searchable.hpp b/boost/hana/detail/operators/searchable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/preprocessor.hpp b/boost/hana/detail/preprocessor.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/std_common_type.hpp b/boost/hana/detail/std_common_type.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/struct_macros.hpp b/boost/hana/detail/struct_macros.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/struct_macros.hpp.erb b/boost/hana/detail/struct_macros.hpp.erb old mode 100755 new mode 100644 diff --git a/boost/hana/detail/type_at.hpp b/boost/hana/detail/type_at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/type_foldl1.hpp b/boost/hana/detail/type_foldl1.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/type_foldr1.hpp b/boost/hana/detail/type_foldr1.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/unpack_flatten.hpp b/boost/hana/detail/unpack_flatten.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/at.hpp b/boost/hana/detail/variadic/at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/drop_into.hpp b/boost/hana/detail/variadic/drop_into.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/foldl1.hpp b/boost/hana/detail/variadic/foldl1.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/foldr1.hpp b/boost/hana/detail/variadic/foldr1.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/reverse_apply.hpp b/boost/hana/detail/variadic/reverse_apply.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/reverse_apply/flat.hpp b/boost/hana/detail/variadic/reverse_apply/flat.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/reverse_apply/unrolled.hpp b/boost/hana/detail/variadic/reverse_apply/unrolled.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/split_at.hpp b/boost/hana/detail/variadic/split_at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/variadic/take.hpp b/boost/hana/detail/variadic/take.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/void_t.hpp b/boost/hana/detail/void_t.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/detail/wrong.hpp b/boost/hana/detail/wrong.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/difference.hpp b/boost/hana/difference.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/div.hpp b/boost/hana/div.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/drop_back.hpp b/boost/hana/drop_back.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/drop_front.hpp b/boost/hana/drop_front.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/drop_front_exactly.hpp b/boost/hana/drop_front_exactly.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/drop_while.hpp b/boost/hana/drop_while.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/duplicate.hpp b/boost/hana/duplicate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/empty.hpp b/boost/hana/empty.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/equal.hpp b/boost/hana/equal.hpp old mode 100755 new mode 100644 index 1fa5e8bbe1..dd09b7eeec --- a/boost/hana/equal.hpp +++ b/boost/hana/equal.hpp @@ -191,7 +191,10 @@ BOOST_HANA_NAMESPACE_BEGIN } template - struct equal_impl::value>> { + struct equal_impl::value && + !detail::EqualityComparable::value + >> { template static constexpr auto apply(X const& x, Y const& y) { return hana::all_of(hana::accessors(), diff --git a/boost/hana/erase_key.hpp b/boost/hana/erase_key.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/eval.hpp b/boost/hana/eval.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/eval_if.hpp b/boost/hana/eval_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/experimental/printable.hpp b/boost/hana/experimental/printable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/experimental/type_name.hpp b/boost/hana/experimental/type_name.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/experimental/types.hpp b/boost/hana/experimental/types.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/experimental/view.hpp b/boost/hana/experimental/view.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost.hpp b/boost/hana/ext/boost.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/fusion.hpp b/boost/hana/ext/boost/fusion.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/fusion/deque.hpp b/boost/hana/ext/boost/fusion/deque.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/fusion/detail/common.hpp b/boost/hana/ext/boost/fusion/detail/common.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/fusion/list.hpp b/boost/hana/ext/boost/fusion/list.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/fusion/tuple.hpp b/boost/hana/ext/boost/fusion/tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/fusion/vector.hpp b/boost/hana/ext/boost/fusion/vector.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/mpl.hpp b/boost/hana/ext/boost/mpl.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/mpl/integral_c.hpp b/boost/hana/ext/boost/mpl/integral_c.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/mpl/list.hpp b/boost/hana/ext/boost/mpl/list.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/mpl/vector.hpp b/boost/hana/ext/boost/mpl/vector.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/boost/tuple.hpp b/boost/hana/ext/boost/tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std.hpp b/boost/hana/ext/std.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/array.hpp b/boost/hana/ext/std/array.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/integer_sequence.hpp b/boost/hana/ext/std/integer_sequence.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/integral_constant.hpp b/boost/hana/ext/std/integral_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/pair.hpp b/boost/hana/ext/std/pair.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/ratio.hpp b/boost/hana/ext/std/ratio.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/tuple.hpp b/boost/hana/ext/std/tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ext/std/vector.hpp b/boost/hana/ext/std/vector.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/extend.hpp b/boost/hana/extend.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/extract.hpp b/boost/hana/extract.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fill.hpp b/boost/hana/fill.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/filter.hpp b/boost/hana/filter.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/find.hpp b/boost/hana/find.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/find_if.hpp b/boost/hana/find_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/first.hpp b/boost/hana/first.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/flatten.hpp b/boost/hana/flatten.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fold.hpp b/boost/hana/fold.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fold_left.hpp b/boost/hana/fold_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fold_right.hpp b/boost/hana/fold_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/for_each.hpp b/boost/hana/for_each.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/front.hpp b/boost/hana/front.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional.hpp b/boost/hana/functional.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/always.hpp b/boost/hana/functional/always.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/apply.hpp b/boost/hana/functional/apply.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/arg.hpp b/boost/hana/functional/arg.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/capture.hpp b/boost/hana/functional/capture.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/compose.hpp b/boost/hana/functional/compose.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/curry.hpp b/boost/hana/functional/curry.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/demux.hpp b/boost/hana/functional/demux.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/fix.hpp b/boost/hana/functional/fix.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/flip.hpp b/boost/hana/functional/flip.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/id.hpp b/boost/hana/functional/id.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/infix.hpp b/boost/hana/functional/infix.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/iterate.hpp b/boost/hana/functional/iterate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/lockstep.hpp b/boost/hana/functional/lockstep.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/on.hpp b/boost/hana/functional/on.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/overload.hpp b/boost/hana/functional/overload.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/overload_linearly.hpp b/boost/hana/functional/overload_linearly.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/partial.hpp b/boost/hana/functional/partial.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/placeholder.hpp b/boost/hana/functional/placeholder.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/functional/reverse_partial.hpp b/boost/hana/functional/reverse_partial.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fuse.hpp b/boost/hana/fuse.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/accessors.hpp b/boost/hana/fwd/accessors.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/adapt_adt.hpp b/boost/hana/fwd/adapt_adt.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/adapt_struct.hpp b/boost/hana/fwd/adapt_struct.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/adjust.hpp b/boost/hana/fwd/adjust.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/adjust_if.hpp b/boost/hana/fwd/adjust_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/all.hpp b/boost/hana/fwd/all.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/all_of.hpp b/boost/hana/fwd/all_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/and.hpp b/boost/hana/fwd/and.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/any.hpp b/boost/hana/fwd/any.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/any_of.hpp b/boost/hana/fwd/any_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/ap.hpp b/boost/hana/fwd/ap.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/append.hpp b/boost/hana/fwd/append.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/at.hpp b/boost/hana/fwd/at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/at_key.hpp b/boost/hana/fwd/at_key.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/back.hpp b/boost/hana/fwd/back.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/basic_tuple.hpp b/boost/hana/fwd/basic_tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/bool.hpp b/boost/hana/fwd/bool.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/cartesian_product.hpp b/boost/hana/fwd/cartesian_product.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/chain.hpp b/boost/hana/fwd/chain.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/comparing.hpp b/boost/hana/fwd/comparing.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concat.hpp b/boost/hana/fwd/concat.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/applicative.hpp b/boost/hana/fwd/concept/applicative.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/comonad.hpp b/boost/hana/fwd/concept/comonad.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/comparable.hpp b/boost/hana/fwd/concept/comparable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/constant.hpp b/boost/hana/fwd/concept/constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/euclidean_ring.hpp b/boost/hana/fwd/concept/euclidean_ring.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/foldable.hpp b/boost/hana/fwd/concept/foldable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/functor.hpp b/boost/hana/fwd/concept/functor.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/group.hpp b/boost/hana/fwd/concept/group.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/hashable.hpp b/boost/hana/fwd/concept/hashable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/integral_constant.hpp b/boost/hana/fwd/concept/integral_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/iterable.hpp b/boost/hana/fwd/concept/iterable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/logical.hpp b/boost/hana/fwd/concept/logical.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/metafunction.hpp b/boost/hana/fwd/concept/metafunction.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/monad.hpp b/boost/hana/fwd/concept/monad.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/monad_plus.hpp b/boost/hana/fwd/concept/monad_plus.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/monoid.hpp b/boost/hana/fwd/concept/monoid.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/orderable.hpp b/boost/hana/fwd/concept/orderable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/product.hpp b/boost/hana/fwd/concept/product.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/ring.hpp b/boost/hana/fwd/concept/ring.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/searchable.hpp b/boost/hana/fwd/concept/searchable.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/sequence.hpp b/boost/hana/fwd/concept/sequence.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/concept/struct.hpp b/boost/hana/fwd/concept/struct.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/contains.hpp b/boost/hana/fwd/contains.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core.hpp b/boost/hana/fwd/core.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/common.hpp b/boost/hana/fwd/core/common.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/default.hpp b/boost/hana/fwd/core/default.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/is_a.hpp b/boost/hana/fwd/core/is_a.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/make.hpp b/boost/hana/fwd/core/make.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/tag_of.hpp b/boost/hana/fwd/core/tag_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/to.hpp b/boost/hana/fwd/core/to.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/core/when.hpp b/boost/hana/fwd/core/when.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/count.hpp b/boost/hana/fwd/count.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/count_if.hpp b/boost/hana/fwd/count_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/cycle.hpp b/boost/hana/fwd/cycle.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/define_struct.hpp b/boost/hana/fwd/define_struct.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/difference.hpp b/boost/hana/fwd/difference.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/div.hpp b/boost/hana/fwd/div.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/drop_back.hpp b/boost/hana/fwd/drop_back.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/drop_front.hpp b/boost/hana/fwd/drop_front.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/drop_front_exactly.hpp b/boost/hana/fwd/drop_front_exactly.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/drop_while.hpp b/boost/hana/fwd/drop_while.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/duplicate.hpp b/boost/hana/fwd/duplicate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/empty.hpp b/boost/hana/fwd/empty.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/equal.hpp b/boost/hana/fwd/equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/erase_key.hpp b/boost/hana/fwd/erase_key.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/eval.hpp b/boost/hana/fwd/eval.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/eval_if.hpp b/boost/hana/fwd/eval_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/extend.hpp b/boost/hana/fwd/extend.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/extract.hpp b/boost/hana/fwd/extract.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/fill.hpp b/boost/hana/fwd/fill.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/filter.hpp b/boost/hana/fwd/filter.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/find.hpp b/boost/hana/fwd/find.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/find_if.hpp b/boost/hana/fwd/find_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/first.hpp b/boost/hana/fwd/first.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/flatten.hpp b/boost/hana/fwd/flatten.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/fold.hpp b/boost/hana/fwd/fold.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/fold_left.hpp b/boost/hana/fwd/fold_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/fold_right.hpp b/boost/hana/fwd/fold_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/for_each.hpp b/boost/hana/fwd/for_each.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/front.hpp b/boost/hana/fwd/front.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/fuse.hpp b/boost/hana/fwd/fuse.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/greater.hpp b/boost/hana/fwd/greater.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/greater_equal.hpp b/boost/hana/fwd/greater_equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/group.hpp b/boost/hana/fwd/group.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/hash.hpp b/boost/hana/fwd/hash.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/if.hpp b/boost/hana/fwd/if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/index_if.hpp b/boost/hana/fwd/index_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/insert.hpp b/boost/hana/fwd/insert.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/insert_range.hpp b/boost/hana/fwd/insert_range.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/integral_constant.hpp b/boost/hana/fwd/integral_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/intersection.hpp b/boost/hana/fwd/intersection.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/intersperse.hpp b/boost/hana/fwd/intersperse.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/is_disjoint.hpp b/boost/hana/fwd/is_disjoint.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/is_empty.hpp b/boost/hana/fwd/is_empty.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/is_subset.hpp b/boost/hana/fwd/is_subset.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/keys.hpp b/boost/hana/fwd/keys.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/lazy.hpp b/boost/hana/fwd/lazy.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/length.hpp b/boost/hana/fwd/length.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/less.hpp b/boost/hana/fwd/less.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/less_equal.hpp b/boost/hana/fwd/less_equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/lexicographical_compare.hpp b/boost/hana/fwd/lexicographical_compare.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/lift.hpp b/boost/hana/fwd/lift.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/map.hpp b/boost/hana/fwd/map.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/max.hpp b/boost/hana/fwd/max.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/maximum.hpp b/boost/hana/fwd/maximum.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/members.hpp b/boost/hana/fwd/members.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/min.hpp b/boost/hana/fwd/min.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/minimum.hpp b/boost/hana/fwd/minimum.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/minus.hpp b/boost/hana/fwd/minus.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/mod.hpp b/boost/hana/fwd/mod.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/monadic_compose.hpp b/boost/hana/fwd/monadic_compose.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/monadic_fold_left.hpp b/boost/hana/fwd/monadic_fold_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/monadic_fold_right.hpp b/boost/hana/fwd/monadic_fold_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/mult.hpp b/boost/hana/fwd/mult.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/negate.hpp b/boost/hana/fwd/negate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/none.hpp b/boost/hana/fwd/none.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/none_of.hpp b/boost/hana/fwd/none_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/not.hpp b/boost/hana/fwd/not.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/not_equal.hpp b/boost/hana/fwd/not_equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/one.hpp b/boost/hana/fwd/one.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/optional.hpp b/boost/hana/fwd/optional.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/or.hpp b/boost/hana/fwd/or.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/ordering.hpp b/boost/hana/fwd/ordering.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/pair.hpp b/boost/hana/fwd/pair.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/partition.hpp b/boost/hana/fwd/partition.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/permutations.hpp b/boost/hana/fwd/permutations.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/plus.hpp b/boost/hana/fwd/plus.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/power.hpp b/boost/hana/fwd/power.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/prefix.hpp b/boost/hana/fwd/prefix.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/prepend.hpp b/boost/hana/fwd/prepend.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/product.hpp b/boost/hana/fwd/product.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/range.hpp b/boost/hana/fwd/range.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/remove.hpp b/boost/hana/fwd/remove.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/remove_at.hpp b/boost/hana/fwd/remove_at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/remove_if.hpp b/boost/hana/fwd/remove_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/remove_range.hpp b/boost/hana/fwd/remove_range.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/repeat.hpp b/boost/hana/fwd/repeat.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/replace.hpp b/boost/hana/fwd/replace.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/replace_if.hpp b/boost/hana/fwd/replace_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/replicate.hpp b/boost/hana/fwd/replicate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/reverse.hpp b/boost/hana/fwd/reverse.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/reverse_fold.hpp b/boost/hana/fwd/reverse_fold.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/scan_left.hpp b/boost/hana/fwd/scan_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/scan_right.hpp b/boost/hana/fwd/scan_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/second.hpp b/boost/hana/fwd/second.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/set.hpp b/boost/hana/fwd/set.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/size.hpp b/boost/hana/fwd/size.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/slice.hpp b/boost/hana/fwd/slice.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/sort.hpp b/boost/hana/fwd/sort.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/span.hpp b/boost/hana/fwd/span.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/string.hpp b/boost/hana/fwd/string.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/suffix.hpp b/boost/hana/fwd/suffix.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/sum.hpp b/boost/hana/fwd/sum.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/symmetric_difference.hpp b/boost/hana/fwd/symmetric_difference.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/take_back.hpp b/boost/hana/fwd/take_back.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/take_front.hpp b/boost/hana/fwd/take_front.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/take_while.hpp b/boost/hana/fwd/take_while.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/tap.hpp b/boost/hana/fwd/tap.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/then.hpp b/boost/hana/fwd/then.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/transform.hpp b/boost/hana/fwd/transform.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/tuple.hpp b/boost/hana/fwd/tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/type.hpp b/boost/hana/fwd/type.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/unfold_left.hpp b/boost/hana/fwd/unfold_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/unfold_right.hpp b/boost/hana/fwd/unfold_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/union.hpp b/boost/hana/fwd/union.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/unique.hpp b/boost/hana/fwd/unique.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/unpack.hpp b/boost/hana/fwd/unpack.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/value.hpp b/boost/hana/fwd/value.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/while.hpp b/boost/hana/fwd/while.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/zero.hpp b/boost/hana/fwd/zero.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/zip.hpp b/boost/hana/fwd/zip.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/zip_shortest.hpp b/boost/hana/fwd/zip_shortest.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/zip_shortest_with.hpp b/boost/hana/fwd/zip_shortest_with.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/fwd/zip_with.hpp b/boost/hana/fwd/zip_with.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/greater.hpp b/boost/hana/greater.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/greater_equal.hpp b/boost/hana/greater_equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/group.hpp b/boost/hana/group.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/hash.hpp b/boost/hana/hash.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/if.hpp b/boost/hana/if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/index_if.hpp b/boost/hana/index_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/insert.hpp b/boost/hana/insert.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/insert_range.hpp b/boost/hana/insert_range.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/integral_constant.hpp b/boost/hana/integral_constant.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/intersection.hpp b/boost/hana/intersection.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/intersperse.hpp b/boost/hana/intersperse.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/is_disjoint.hpp b/boost/hana/is_disjoint.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/is_empty.hpp b/boost/hana/is_empty.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/is_subset.hpp b/boost/hana/is_subset.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/keys.hpp b/boost/hana/keys.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/lazy.hpp b/boost/hana/lazy.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/length.hpp b/boost/hana/length.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/less.hpp b/boost/hana/less.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/less_equal.hpp b/boost/hana/less_equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/lexicographical_compare.hpp b/boost/hana/lexicographical_compare.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/lift.hpp b/boost/hana/lift.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/map.hpp b/boost/hana/map.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/max.hpp b/boost/hana/max.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/maximum.hpp b/boost/hana/maximum.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/members.hpp b/boost/hana/members.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/min.hpp b/boost/hana/min.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/minimum.hpp b/boost/hana/minimum.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/minus.hpp b/boost/hana/minus.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/mod.hpp b/boost/hana/mod.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/monadic_compose.hpp b/boost/hana/monadic_compose.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/monadic_fold_left.hpp b/boost/hana/monadic_fold_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/monadic_fold_right.hpp b/boost/hana/monadic_fold_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/mult.hpp b/boost/hana/mult.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/negate.hpp b/boost/hana/negate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/none.hpp b/boost/hana/none.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/none_of.hpp b/boost/hana/none_of.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/not.hpp b/boost/hana/not.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/not_equal.hpp b/boost/hana/not_equal.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/one.hpp b/boost/hana/one.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/optional.hpp b/boost/hana/optional.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/or.hpp b/boost/hana/or.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/ordering.hpp b/boost/hana/ordering.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/pair.hpp b/boost/hana/pair.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/partition.hpp b/boost/hana/partition.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/permutations.hpp b/boost/hana/permutations.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/plus.hpp b/boost/hana/plus.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/power.hpp b/boost/hana/power.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/prefix.hpp b/boost/hana/prefix.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/prepend.hpp b/boost/hana/prepend.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/product.hpp b/boost/hana/product.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/range.hpp b/boost/hana/range.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/remove.hpp b/boost/hana/remove.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/remove_at.hpp b/boost/hana/remove_at.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/remove_if.hpp b/boost/hana/remove_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/remove_range.hpp b/boost/hana/remove_range.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/repeat.hpp b/boost/hana/repeat.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/replace.hpp b/boost/hana/replace.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/replace_if.hpp b/boost/hana/replace_if.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/replicate.hpp b/boost/hana/replicate.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/reverse.hpp b/boost/hana/reverse.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/reverse_fold.hpp b/boost/hana/reverse_fold.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/scan_left.hpp b/boost/hana/scan_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/scan_right.hpp b/boost/hana/scan_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/second.hpp b/boost/hana/second.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/set.hpp b/boost/hana/set.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/size.hpp b/boost/hana/size.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/slice.hpp b/boost/hana/slice.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/sort.hpp b/boost/hana/sort.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/span.hpp b/boost/hana/span.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/string.hpp b/boost/hana/string.hpp old mode 100755 new mode 100644 index aea19bd2ed..fcdce266d7 --- a/boost/hana/string.hpp +++ b/boost/hana/string.hpp @@ -117,7 +117,7 @@ BOOST_HANA_NAMESPACE_BEGIN constexpr auto operator"" _s() { static_assert(std::is_same::value, "hana::string: Only narrow string literals are supported with " - "the _s string literal right now. See https://goo.gl/fBbKD7 " + "the _s string literal right now. See https://github.com/boostorg/hana/issues/80 " "if you need support for fancier types of compile-time strings."); return hana::string_c; } diff --git a/boost/hana/suffix.hpp b/boost/hana/suffix.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/sum.hpp b/boost/hana/sum.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/symmetric_difference.hpp b/boost/hana/symmetric_difference.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/take_back.hpp b/boost/hana/take_back.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/take_front.hpp b/boost/hana/take_front.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/take_while.hpp b/boost/hana/take_while.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/tap.hpp b/boost/hana/tap.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/then.hpp b/boost/hana/then.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/traits.hpp b/boost/hana/traits.hpp old mode 100755 new mode 100644 index 983bdf8367..de207d3c98 --- a/boost/hana/traits.hpp +++ b/boost/hana/traits.hpp @@ -67,7 +67,9 @@ BOOST_HANA_NAMESPACE_BEGIN namespace traits { constexpr auto is_trivial = detail::hana_trait{}; constexpr auto is_trivially_copyable = detail::hana_trait{}; constexpr auto is_standard_layout = detail::hana_trait{}; +#if __cplusplus < 202002L constexpr auto is_pod = detail::hana_trait{}; +#endif constexpr auto is_literal_type = detail::hana_trait{}; constexpr auto is_empty = detail::hana_trait{}; constexpr auto is_polymorphic = detail::hana_trait{}; @@ -194,7 +196,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace traits { constexpr auto common_type = metafunction; constexpr auto underlying_type = metafunction; - constexpr auto result_of = metafunction; /////////////////////// diff --git a/boost/hana/transform.hpp b/boost/hana/transform.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/tuple.hpp b/boost/hana/tuple.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/type.hpp b/boost/hana/type.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/unfold_left.hpp b/boost/hana/unfold_left.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/unfold_right.hpp b/boost/hana/unfold_right.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/union.hpp b/boost/hana/union.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/unique.hpp b/boost/hana/unique.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/unpack.hpp b/boost/hana/unpack.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/value.hpp b/boost/hana/value.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/version.hpp b/boost/hana/version.hpp old mode 100755 new mode 100644 index af8daac64d..282070d062 --- a/boost/hana/version.hpp +++ b/boost/hana/version.hpp @@ -24,7 +24,7 @@ Distributed under the Boost Software License, Version 1.0. //! @ingroup group-config //! Macro expanding to the minor version of the library, i.e. the `y` in `x.y.z`. -#define BOOST_HANA_MINOR_VERSION 6 +#define BOOST_HANA_MINOR_VERSION 7 //! @ingroup group-config //! Macro expanding to the patch level of the library, i.e. the `z` in `x.y.z`. diff --git a/boost/hana/while.hpp b/boost/hana/while.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/zero.hpp b/boost/hana/zero.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/zip.hpp b/boost/hana/zip.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/zip_shortest.hpp b/boost/hana/zip_shortest.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/zip_shortest_with.hpp b/boost/hana/zip_shortest_with.hpp old mode 100755 new mode 100644 diff --git a/boost/hana/zip_with.hpp b/boost/hana/zip_with.hpp old mode 100755 new mode 100644 diff --git a/boost/pfr.hpp b/boost/pfr.hpp new file mode 100644 index 0000000000..3eaf421bc7 --- /dev/null +++ b/boost/pfr.hpp @@ -0,0 +1,21 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_HPP +#define BOOST_PFR_HPP + +/// \file boost/pfr.hpp +/// Includes all the Boost.PFR headers + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // BOOST_PFR_HPP diff --git a/boost/pfr/core.hpp b/boost/pfr/core.hpp new file mode 100644 index 0000000000..6bbb4c65b8 --- /dev/null +++ b/boost/pfr/core.hpp @@ -0,0 +1,226 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_CORE_HPP +#define BOOST_PFR_CORE_HPP +#pragma once + +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include // metaprogramming stuff + +#include + +/// \file boost/pfr/core.hpp +/// Contains all the basic tuple-like interfaces \forcedlink{get}, \forcedlink{tuple_size}, \forcedlink{tuple_element_t}, and others. +/// +/// \b Synopsis: + +namespace boost { namespace pfr { + +/// \brief Returns reference or const reference to a field with index `I` in \aggregate `val`. +/// +/// \b Example: +/// \code +/// struct my_struct { int i, short s; }; +/// my_struct s {10, 11}; +/// assert(boost::pfr::get<0>(s) == 10); +/// boost::pfr::get<1>(s) = 0; +/// \endcode +template +constexpr decltype(auto) get(const T& val) noexcept { + return detail::sequence_tuple::get( detail::tie_as_tuple(val) ); +} + + +/// \overload get +template +constexpr decltype(auto) get(T& val +#if !BOOST_PFR_USE_CPP17 + , std::enable_if_t::value>* = nullptr +#endif +) noexcept { + return detail::sequence_tuple::get( detail::tie_as_tuple(val) ); +} + +#if !BOOST_PFR_USE_CPP17 +/// \overload get +template +constexpr auto get(T&, std::enable_if_t::value>* = nullptr) noexcept { + static_assert(sizeof(T) && false, "====================> Boost.PFR: Calling boost::pfr::get on non const non assignable type is allowed only in C++17"); + return 0; +} +#endif + + +/// \overload get +template +constexpr auto get(T&& val, std::enable_if_t< std::is_rvalue_reference::value>* = 0) noexcept { + return std::move(detail::sequence_tuple::get( detail::tie_as_tuple(val) )); +} + + +/// \brief `tuple_element` has a member typedef `type` that returns the type of a field with index I in \aggregate T. +/// +/// \b Example: +/// \code +/// std::vector< boost::pfr::tuple_element<0, my_structure>::type > v; +/// \endcode +template +using tuple_element = detail::sequence_tuple::tuple_element()) ) >; + + +/// \brief Type of a field with index `I` in \aggregate `T`. +/// +/// \b Example: +/// \code +/// std::vector< boost::pfr::tuple_element_t<0, my_structure> > v; +/// \endcode +template +using tuple_element_t = typename tuple_element::type; + + +/// \brief Creates a `std::tuple` from fields of an \aggregate `val`. +/// +/// \b Example: +/// \code +/// struct my_struct { int i, short s; }; +/// my_struct s {10, 11}; +/// std::tuple t = make_tuple(s); +/// assert(get<0>(t) == 10); +/// \endcode +template +constexpr auto structure_to_tuple(const T& val) noexcept { + return detail::make_stdtuple_from_tietuple( + detail::tie_as_tuple(val), + detail::make_index_sequence< tuple_size_v >() + ); +} + + +/// \brief std::tie` like function that ties fields of a structure. +/// +/// \returns a `std::tuple` with lvalue and const lvalue references to fields of an \aggregate `val`. +/// +/// \b Example: +/// \code +/// void foo(const int&, const short&); +/// struct my_struct { int i, short s; }; +/// +/// const my_struct const_s{1, 2}; +/// std::apply(foo, structure_tie(const_s)); +/// +/// my_struct s; +/// structure_tie(s) = std::tuple{10, 11}; +/// assert(s.s == 11); +/// \endcode +template +constexpr auto structure_tie(const T& val) noexcept { + return detail::make_conststdtiedtuple_from_tietuple( + detail::tie_as_tuple(const_cast(val)), + detail::make_index_sequence< tuple_size_v >() + ); +} + + +/// \overload structure_tie +template +constexpr auto structure_tie(T& val +#if !BOOST_PFR_USE_CPP17 + , std::enable_if_t::value>* = nullptr +#endif +) noexcept { + return detail::make_stdtiedtuple_from_tietuple( + detail::tie_as_tuple(val), + detail::make_index_sequence< tuple_size_v >() + ); +} + +#if !BOOST_PFR_USE_CPP17 +/// \overload structure_tie +template +constexpr auto structure_tie(T&, std::enable_if_t::value>* = nullptr) noexcept { + static_assert(sizeof(T) && false, "====================> Boost.PFR: Calling boost::pfr::structure_tie on non const non assignable type is allowed only in C++17"); + return 0; +} +#endif + + +/// \overload structure_tie +template +constexpr auto structure_tie(T&&, std::enable_if_t< std::is_rvalue_reference::value>* = 0) noexcept { + static_assert(sizeof(T) && false, "====================> Boost.PFR: Calling boost::pfr::structure_tie on rvalue references is forbidden"); + return 0; +} + +/// Calls `func` for each field of a `value`. +/// +/// \param func must have one of the following signatures: +/// * any_return_type func(U&& field) // field of value is perfect forwarded to function +/// * any_return_type func(U&& field, std::size_t i) +/// * any_return_type func(U&& value, I i) // Here I is an `std::integral_constant` +/// +/// \param value To each field of this variable will be the `func` applied. +/// +/// \b Example: +/// \code +/// struct my_struct { int i, short s; }; +/// int sum = 0; +/// for_each_field(my_struct{20, 22}, [&sum](const auto& field) { sum += field; }); +/// assert(sum == 42); +/// \endcode +template +void for_each_field(T&& value, F&& func) { + constexpr std::size_t fields_count_val = boost::pfr::detail::fields_count>(); + + ::boost::pfr::detail::for_each_field_dispatcher( + value, + [f = std::forward(func)](auto&& t) mutable { + // MSVC related workaround. Its lambdas do not capture constexprs. + constexpr std::size_t fields_count_val_in_lambda + = boost::pfr::detail::fields_count>(); + + ::boost::pfr::detail::for_each_field_impl( + t, + std::forward(f), + detail::make_index_sequence{}, + std::is_rvalue_reference{} + ); + }, + detail::make_index_sequence{} + ); +} + +/// \brief std::tie-like function that allows assigning to tied values from aggregates. +/// +/// \returns an object with lvalue references to `args...`; on assignment of an \aggregate value to that +/// object each field of an aggregate is assigned to the corresponding `args...` reference. +/// +/// \b Example: +/// \code +/// auto f() { +/// struct { struct { int x, y } p; short s; } res { { 4, 5 }, 6 }; +/// return res; +/// } +/// auto [p, s] = f(); +/// tie_from_structure(p, s) = f(); +/// \endcode +template +constexpr detail::tie_from_structure_tuple tie_from_structure(Elements&... args) noexcept { + return detail::tie_from_structure_tuple(args...); +} + +}} // namespace boost::pfr + +#endif // BOOST_PFR_CORE_HPP diff --git a/boost/pfr/detail/cast_to_layout_compatible.hpp b/boost/pfr/detail/cast_to_layout_compatible.hpp new file mode 100644 index 0000000000..d7106c62e4 --- /dev/null +++ b/boost/pfr/detail/cast_to_layout_compatible.hpp @@ -0,0 +1,75 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_DETAIL_CAST_TO_LAYOUT_COMPATIBLE_HPP +#define BOOST_PFR_DETAIL_CAST_TO_LAYOUT_COMPATIBLE_HPP +#pragma once + +#include + +#include +#include // metaprogramming stuff +#include + +namespace boost { namespace pfr { namespace detail { + +template +constexpr void static_assert_layout_compatible() noexcept { + static_assert( + std::alignment_of::value == std::alignment_of::value, + "====================> Boost.PFR: Alignment check failed, probably your structure has user-defined alignment for the whole structure or for some of the fields." + ); + static_assert(sizeof(T) == sizeof(U), "====================> Boost.PFR: Size check failed, probably your structure has bitfields or user-defined alignment."); +} + +/// @cond +#ifdef __GNUC__ +#define MAY_ALIAS __attribute__((__may_alias__)) +#else +#define MAY_ALIAS +#endif +/// @endcond + +template +MAY_ALIAS const To& cast_to_layout_compatible(const From& val) noexcept { + MAY_ALIAS const To* const t = reinterpret_cast( std::addressof(val) ); + detail::static_assert_layout_compatible(); + return *t; +} + +template +MAY_ALIAS const volatile To& cast_to_layout_compatible(const volatile From& val) noexcept { + MAY_ALIAS const volatile To* const t = reinterpret_cast( std::addressof(val) ); + detail::static_assert_layout_compatible(); + return *t; +} + + +template +MAY_ALIAS volatile To& cast_to_layout_compatible(volatile From& val) noexcept { + MAY_ALIAS volatile To* const t = reinterpret_cast( std::addressof(val) ); + detail::static_assert_layout_compatible(); + return *t; +} + + +template +MAY_ALIAS To& cast_to_layout_compatible(From& val) noexcept { + MAY_ALIAS To* const t = reinterpret_cast( std::addressof(val) ); + detail::static_assert_layout_compatible(); + return *t; +} + +#ifdef BOOST_PFR_DETAIL_STRICT_RVALUE_TESTING +template +To&& cast_to_layout_compatible(rvalue_t val) noexcept = delete; +#endif + +#undef MAY_ALIAS + + +}}} // namespace boost::pfr::detail + +#endif // BOOST_PFR_DETAIL_CAST_TO_LAYOUT_COMPATIBLE_HPP diff --git a/boost/pfr/detail/config.hpp b/boost/pfr/detail/config.hpp new file mode 100644 index 0000000000..e8ffb0ec3c --- /dev/null +++ b/boost/pfr/detail/config.hpp @@ -0,0 +1,80 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_DETAIL_CONFIG_HPP +#define BOOST_PFR_DETAIL_CONFIG_HPP +#pragma once + +#include // to get non standard platform macro definitions (__GLIBCXX__ for example) + +// Reminder: +// * MSVC++ 14.2 _MSC_VER == 1927 <- Loophole is known to work (Visual Studio ????) +// * MSVC++ 14.1 _MSC_VER == 1916 <- Loophole is known to NOT work (Visual Studio 2017) +// * MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) +// * MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) + +#if defined(_MSC_VER) +# if !defined(_MSVC_LANG) || _MSC_VER <= 1900 +# error Boost.PFR library requires more modern MSVC compiler. +# endif +#elif __cplusplus < 201402L +# error Boost.PFR library requires at least C++14. +#endif + +#ifndef BOOST_PFR_USE_LOOPHOLE +# if defined(_MSC_VER) +# if _MSC_VER >= 1927 +# define BOOST_PFR_USE_LOOPHOLE 1 +# else +# define BOOST_PFR_USE_LOOPHOLE 0 +# endif +# elif defined(__clang_major__) && __clang_major__ >= 8 +# define BOOST_PFR_USE_LOOPHOLE 0 +# else +# define BOOST_PFR_USE_LOOPHOLE 1 +# endif +#endif + +#ifndef BOOST_PFR_USE_CPP17 +# ifdef __cpp_structured_bindings +# define BOOST_PFR_USE_CPP17 1 +# elif defined(_MSVC_LANG) +# if _MSVC_LANG >= 201703L +# define BOOST_PFR_USE_CPP17 1 +# else +# define BOOST_PFR_USE_CPP17 0 +# if !BOOST_PFR_USE_LOOPHOLE +# error Boost.PFR requires /std:c++latest or /std:c++17 flags on your compiler. +# endif +# endif +# else +# define BOOST_PFR_USE_CPP17 0 +# endif +#endif + +#ifndef BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE +// Assume that libstdc++ since GCC-7.3 does not have linear instantiation depth in std::make_integral_sequence +# if defined( __GLIBCXX__) && __GLIBCXX__ >= 20180101 +# define BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE 1 +# elif defined(_MSC_VER) +# define BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE 1 +//# elif other known working lib +# else +# define BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE 0 +# endif +#endif + +#if defined(__has_cpp_attribute) +# if __has_cpp_attribute(maybe_unused) +# define BOOST_PFR_MAYBE_UNUSED [[maybe_unused]] +# endif +#endif + +#ifndef BOOST_PFR_MAYBE_UNUSED +# define BOOST_PFR_MAYBE_UNUSED +#endif + + +#endif // BOOST_PFR_DETAIL_CONFIG_HPP diff --git a/boost/pfr/detail/core.hpp b/boost/pfr/detail/core.hpp new file mode 100644 index 0000000000..88efa0d98d --- /dev/null +++ b/boost/pfr/detail/core.hpp @@ -0,0 +1,24 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_DETAIL_CORE_HPP +#define BOOST_PFR_DETAIL_CORE_HPP +#pragma once + +#include + +// Each core provides `boost::pfr::detail::tie_as_tuple` and +// `boost::pfr::detail::for_each_field_dispatcher` functions. +// +// The whole PFR library is build on top of those two functions. +#if BOOST_PFR_USE_CPP17 +# include +#elif BOOST_PFR_USE_LOOPHOLE +# include +#else +# include +#endif + +#endif // BOOST_PFR_DETAIL_CORE_HPP diff --git a/boost/pfr/detail/core14_classic.hpp b/boost/pfr/detail/core14_classic.hpp new file mode 100644 index 0000000000..610dbd3c8f --- /dev/null +++ b/boost/pfr/detail/core14_classic.hpp @@ -0,0 +1,703 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_DETAIL_CORE14_CLASSIC_HPP +#define BOOST_PFR_DETAIL_CORE14_CLASSIC_HPP +#pragma once + +#include + +#include +#include // metaprogramming stuff + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wmissing-braces" +# pragma clang diagnostic ignored "-Wundefined-inline" +# pragma clang diagnostic ignored "-Wundefined-internal" +# pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif + +namespace boost { namespace pfr { namespace detail { + +///////////////////// General utility stuff + +template struct identity { + typedef T type; +}; + +template +constexpr T construct_helper() noexcept { // adding const here allows to deal with copyable only types + return {}; +} + +template constexpr size_array fields_count_and_type_ids_with_zeros() noexcept; +template constexpr auto flat_array_of_type_ids() noexcept; + +///////////////////// All the stuff for representing Type as integer and converting integer back to type +namespace typeid_conversions { + +///////////////////// Helper constants and typedefs + +#ifdef _MSC_VER +# pragma warning( push ) + // '<<': check operator precedence for possible error; use parentheses to clarify precedence +# pragma warning( disable : 4554 ) +#endif + +constexpr std::size_t native_types_mask = 31; +constexpr std::size_t bits_per_extension = 3; +constexpr std::size_t extension_mask = ( + static_cast((1 << bits_per_extension) - 1) + << static_cast(sizeof(std::size_t) * 8 - bits_per_extension) +); +constexpr std::size_t native_ptr_type = ( + static_cast(1) + << static_cast(sizeof(std::size_t) * 8 - bits_per_extension) +); +constexpr std::size_t native_const_ptr_type = ( + static_cast(2) + << static_cast(sizeof(std::size_t) * 8 - bits_per_extension) +); + +constexpr std::size_t native_const_volatile_ptr_type = ( + static_cast(3) + << static_cast(sizeof(std::size_t) * 8 - bits_per_extension) +); + +constexpr std::size_t native_volatile_ptr_type = ( + static_cast(4) + << static_cast(sizeof(std::size_t) * 8 - bits_per_extension) +); + +constexpr std::size_t native_ref_type = ( + static_cast(5) + << static_cast(sizeof(std::size_t) * 8 - bits_per_extension) +); + +template +using if_extension = std::enable_if_t< (Index & extension_mask) == Extension >*; + +///////////////////// Helper functions +template +constexpr std::size_t type_to_id_extension_apply(std::size_t ext) noexcept { + constexpr std::size_t native_id = (Unptr & native_types_mask); + constexpr std::size_t extensions = (Unptr & ~native_types_mask); + static_assert( + !((extensions >> bits_per_extension) & native_types_mask), + "====================> Boost.PFR: Too many extensions for a single field (something close to `int************************** p;` is in the POD type)." + ); + + return (extensions >> bits_per_extension) | native_id | ext; +} + +template +using remove_1_ext = size_t_< + ((Index & ~native_types_mask) << bits_per_extension) | (Index & native_types_mask) +>; + +#ifdef _MSC_VER +# pragma warning( pop ) +#endif + +///////////////////// Forward declarations + +template constexpr std::size_t type_to_id(identity) noexcept; +template constexpr std::size_t type_to_id(identity) noexcept; +template constexpr std::size_t type_to_id(identity) noexcept; +template constexpr std::size_t type_to_id(identity) noexcept; +template constexpr std::size_t type_to_id(identity) noexcept; +template constexpr std::size_t type_to_id(identity, std::enable_if_t::value>* = 0) noexcept; +template constexpr std::size_t type_to_id(identity, std::enable_if_t::value>* = 0) noexcept; +template constexpr std::size_t type_to_id(identity, std::enable_if_t::value>* = 0) noexcept; +template constexpr size_array type_to_id(identity, std::enable_if_t::value && !std::is_empty::value && !std::is_union::value>* = 0) noexcept; + +template constexpr auto id_to_type(size_t_, if_extension = 0) noexcept; +template constexpr auto id_to_type(size_t_, if_extension = 0) noexcept; +template constexpr auto id_to_type(size_t_, if_extension = 0) noexcept; +template constexpr auto id_to_type(size_t_, if_extension = 0) noexcept; +template constexpr auto id_to_type(size_t_, if_extension = 0) noexcept; + + +///////////////////// Definitions of type_to_id and id_to_type for fundamental types +/// @cond +#define BOOST_MAGIC_GET_REGISTER_TYPE(Type, Index) \ + constexpr std::size_t type_to_id(identity) noexcept { \ + return Index; \ + } \ + constexpr Type id_to_type( size_t_ ) noexcept { \ + return detail::construct_helper(); \ + } \ + /**/ +/// @endcond + + +// Register all base types here +BOOST_MAGIC_GET_REGISTER_TYPE(unsigned char , 1) +BOOST_MAGIC_GET_REGISTER_TYPE(unsigned short , 2) +BOOST_MAGIC_GET_REGISTER_TYPE(unsigned int , 3) +BOOST_MAGIC_GET_REGISTER_TYPE(unsigned long , 4) +BOOST_MAGIC_GET_REGISTER_TYPE(unsigned long long , 5) +BOOST_MAGIC_GET_REGISTER_TYPE(signed char , 6) +BOOST_MAGIC_GET_REGISTER_TYPE(short , 7) +BOOST_MAGIC_GET_REGISTER_TYPE(int , 8) +BOOST_MAGIC_GET_REGISTER_TYPE(long , 9) +BOOST_MAGIC_GET_REGISTER_TYPE(long long , 10) +BOOST_MAGIC_GET_REGISTER_TYPE(char , 11) +BOOST_MAGIC_GET_REGISTER_TYPE(wchar_t , 12) +BOOST_MAGIC_GET_REGISTER_TYPE(char16_t , 13) +BOOST_MAGIC_GET_REGISTER_TYPE(char32_t , 14) +BOOST_MAGIC_GET_REGISTER_TYPE(float , 15) +BOOST_MAGIC_GET_REGISTER_TYPE(double , 16) +BOOST_MAGIC_GET_REGISTER_TYPE(long double , 17) +BOOST_MAGIC_GET_REGISTER_TYPE(bool , 18) +BOOST_MAGIC_GET_REGISTER_TYPE(void* , 19) +BOOST_MAGIC_GET_REGISTER_TYPE(const void* , 20) +BOOST_MAGIC_GET_REGISTER_TYPE(volatile void* , 21) +BOOST_MAGIC_GET_REGISTER_TYPE(const volatile void* , 22) +BOOST_MAGIC_GET_REGISTER_TYPE(std::nullptr_t , 23) +constexpr std::size_t tuple_begin_tag = 24; +constexpr std::size_t tuple_end_tag = 25; + +#undef BOOST_MAGIC_GET_REGISTER_TYPE + +///////////////////// Definitions of type_to_id and id_to_type for types with extensions and nested types +template +constexpr std::size_t type_to_id(identity) noexcept { + constexpr auto unptr = typeid_conversions::type_to_id(identity{}); + static_assert( + std::is_same::value, + "====================> Boost.PFR: Pointers to user defined types are not supported." + ); + return typeid_conversions::type_to_id_extension_apply(native_ptr_type); +} + +template +constexpr std::size_t type_to_id(identity) noexcept { + constexpr auto unptr = typeid_conversions::type_to_id(identity{}); + static_assert( + std::is_same::value, + "====================> Boost.PFR: Const pointers to user defined types are not supported." + ); + return typeid_conversions::type_to_id_extension_apply(native_const_ptr_type); +} + +template +constexpr std::size_t type_to_id(identity) noexcept { + constexpr auto unptr = typeid_conversions::type_to_id(identity{}); + static_assert( + std::is_same::value, + "====================> Boost.PFR: Const volatile pointers to user defined types are not supported." + ); + return typeid_conversions::type_to_id_extension_apply(native_const_volatile_ptr_type); +} + +template +constexpr std::size_t type_to_id(identity) noexcept { + constexpr auto unptr = typeid_conversions::type_to_id(identity{}); + static_assert( + std::is_same::value, + "====================> Boost.PFR: Volatile pointers to user defined types are not supported." + ); + return typeid_conversions::type_to_id_extension_apply(native_volatile_ptr_type); +} + +template +constexpr std::size_t type_to_id(identity) noexcept { + constexpr auto unptr = typeid_conversions::type_to_id(identity{}); + static_assert( + std::is_same::value, + "====================> Boost.PFR: References to user defined types are not supported." + ); + return typeid_conversions::type_to_id_extension_apply(native_ref_type); +} + +template +constexpr std::size_t type_to_id(identity, std::enable_if_t::value>*) noexcept { + return typeid_conversions::type_to_id(identity::type >{}); +} + +template +constexpr std::size_t type_to_id(identity, std::enable_if_t::value>*) noexcept { + static_assert(!std::is_empty::value, "====================> Boost.PFR: Empty classes/structures as members are not supported."); + return 0; +} + +template +constexpr std::size_t type_to_id(identity, std::enable_if_t::value>*) noexcept { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + return 0; +} + +template +constexpr size_array type_to_id(identity, std::enable_if_t::value && !std::is_empty::value && !std::is_union::value>*) noexcept { + constexpr auto t = detail::flat_array_of_type_ids(); + size_array result {{tuple_begin_tag}}; + constexpr bool requires_tuplening = ( + (t.count_nonzeros() != 1) || (t.count_nonzeros() == t.count_from_opening_till_matching_parenthis_seq(0, tuple_begin_tag, tuple_end_tag)) + ); + + if (requires_tuplening) { + for (std::size_t i = 0; i < t.size(); ++i) + result.data[i + 1] = t.data[i]; + result.data[result.size() - 1] = tuple_end_tag; + } else { + for (std::size_t i = 0; i < t.size(); ++i) + result.data[i] = t.data[i]; + } + return result; +} + + + +template +constexpr auto id_to_type(size_t_, if_extension) noexcept { + typedef decltype( typeid_conversions::id_to_type(remove_1_ext()) )* res_t; + return detail::construct_helper(); +} + +template +constexpr auto id_to_type(size_t_, if_extension) noexcept { + typedef const decltype( typeid_conversions::id_to_type(remove_1_ext()) )* res_t; + return detail::construct_helper(); +} + +template +constexpr auto id_to_type(size_t_, if_extension) noexcept { + typedef const volatile decltype( typeid_conversions::id_to_type(remove_1_ext()) )* res_t; + return detail::construct_helper(); +} + + +template +constexpr auto id_to_type(size_t_, if_extension) noexcept { + typedef volatile decltype( typeid_conversions::id_to_type(remove_1_ext()) )* res_t; + return detail::construct_helper(); +} + + +template +constexpr auto id_to_type(size_t_, if_extension) noexcept { + static_assert(!Index, "====================> Boost.PFR: References are not supported"); + return nullptr; +} + +} // namespace typeid_conversions + +///////////////////// Structure that remembers types as integers on a `constexpr operator Type()` call +struct ubiq_val { + std::size_t* ref_; + + template + constexpr void assign(const T& typeids) const noexcept { + for (std::size_t i = 0; i < T::size(); ++i) + ref_[i] = typeids.data[i]; + } + + constexpr void assign(std::size_t val) const noexcept { + ref_[0] = val; + } + + template + constexpr operator Type() const noexcept { + constexpr auto typeids = typeid_conversions::type_to_id(identity{}); + assign(typeids); + return detail::construct_helper(); + } +}; + +///////////////////// Structure that remembers size of the type on a `constexpr operator Type()` call +struct ubiq_sizes { + std::size_t& ref_; + + template + constexpr operator Type() const noexcept { + ref_ = sizeof(Type); + return detail::construct_helper(); + } +}; + +///////////////////// Returns array of (offsets without accounting alignments). Required for keeping places for nested type ids +template +constexpr size_array get_type_offsets() noexcept { + typedef size_array array_t; + array_t sizes{}; + T tmp{ ubiq_sizes{sizes.data[I]}... }; + (void)tmp; + + array_t offsets{{0}}; + for (std::size_t i = 1; i < N; ++i) + offsets.data[i] = offsets.data[i - 1] + sizes.data[i - 1]; + + return offsets; +} + +///////////////////// Returns array of typeids and zeros if construtor of a type accepts sizeof...(I) parameters +template +constexpr void* flat_type_to_array_of_type_ids(std::size_t* types, std::index_sequence) noexcept +{ + static_assert( + N <= sizeof(T), + "====================> Boost.PFR: Bit fields are not supported." + ); + + constexpr auto offsets = detail::get_type_offsets(); + T tmp{ ubiq_val{types + get(offsets) * 3}... }; + (void)types; + (void)tmp; + (void)offsets; // If type is empty offsets are not used + return nullptr; +} + +///////////////////// Returns array of typeids and zeros +template +constexpr size_array fields_count_and_type_ids_with_zeros() noexcept { + size_array types{}; + constexpr std::size_t N = detail::fields_count(); + detail::flat_type_to_array_of_type_ids(types.data, detail::make_index_sequence()); + return types; +} + +///////////////////// Returns array of typeids without zeros +template +constexpr auto flat_array_of_type_ids() noexcept { + constexpr auto types = detail::fields_count_and_type_ids_with_zeros(); + constexpr std::size_t count = types.count_nonzeros(); + size_array res{}; + std::size_t j = 0; + for (std::size_t i = 0; i < decltype(types)::size(); ++i) { + if (types.data[i]) { + res.data[j] = types.data[i]; + ++ j; + } + } + + return res; +} + +///////////////////// Convert array of typeids into sequence_tuple::tuple + +template +constexpr auto as_flat_tuple_impl(std::index_sequence) noexcept; + +template +constexpr sequence_tuple::tuple<> as_flat_tuple_impl(std::index_sequence<>) noexcept { + return sequence_tuple::tuple<>{}; +} + +template +constexpr auto increment_index_sequence(std::index_sequence) noexcept { + return std::index_sequence{}; +} + +template +constexpr auto prepare_subtuples(size_t_, size_t_, size_t_) noexcept { + static_assert(SubtupleLength == 0, "====================> Boost.PFR: Internal error while representing nested field as tuple"); + return typeid_conversions::id_to_type(size_t_{}); +} + +template +constexpr auto prepare_subtuples(size_t_, size_t_, size_t_) noexcept { + static_assert(sizeof(T) == 0, "====================> Boost.PFR: Internal error while representing nested field as tuple"); + return int{}; +} + +template +constexpr auto prepare_subtuples(size_t_, size_t_, size_t_) noexcept { + static_assert(SubtupleLength > 2, "====================> Boost.PFR: Internal error while representing nested field as tuple"); + constexpr auto seq = detail::make_index_sequence{}; + return detail::as_flat_tuple_impl( detail::increment_index_sequence(seq) ); +} + + +template +constexpr Array remove_subtuples(Array indexes_plus_1, const Array& subtuple_lengths) noexcept { + for (std::size_t i = 0; i < subtuple_lengths.size(); ++i) { + if (subtuple_lengths.data[i]) { + const std::size_t skips_count = subtuple_lengths.data[i]; + for (std::size_t j = i + 1; j < skips_count + i; ++j) { + indexes_plus_1.data[j] = 0; + } + i += skips_count - 1; + } + } + return indexes_plus_1; +} + +template +constexpr size_array resize_dropping_zeros_and_decrementing(size_t_, const Array& a) noexcept { + size_array result{}; + std::size_t result_indx = 0; + for (std::size_t i = 0; i < a.size(); ++i) { + if (a.data[i]) { + result.data[result_indx] = static_cast(a.data[i] - 1); + ++ result_indx; + } + } + + return result; +} + +template +constexpr auto as_flat_tuple_impl_drop_helpers(std::index_sequence, std::index_sequence) noexcept { + constexpr auto a = detail::flat_array_of_type_ids(); + + constexpr size_array subtuples_length {{ + a.count_from_opening_till_matching_parenthis_seq(First, typeid_conversions::tuple_begin_tag, typeid_conversions::tuple_end_tag), + a.count_from_opening_till_matching_parenthis_seq(I, typeid_conversions::tuple_begin_tag, typeid_conversions::tuple_end_tag)... + }}; + + constexpr size_array type_indexes_with_subtuple_internals {{ 1, 1 + I - First...}}; + constexpr auto type_indexes_plus_1_and_zeros_as_skips = detail::remove_subtuples(type_indexes_with_subtuple_internals, subtuples_length); + constexpr auto new_size = size_t_{}; + constexpr auto type_indexes = detail::resize_dropping_zeros_and_decrementing(new_size, type_indexes_plus_1_and_zeros_as_skips); + + typedef sequence_tuple::tuple< + decltype(detail::prepare_subtuples( + size_t_< a.data[ First + type_indexes.data[INew] ] >{}, // id of type + size_t_< First + type_indexes.data[INew] >{}, // index of current id in `a` + size_t_< subtuples_length.data[ type_indexes.data[INew] ] >{} // if id of type is tuple, then length of that tuple + ))... + > subtuples_uncleanuped_t; + + return subtuples_uncleanuped_t{}; +} + +template +constexpr std::size_t count_skips_in_array(std::size_t begin_index, std::size_t end_index, const Array& a) noexcept { + std::size_t skips = 0; + for (std::size_t i = begin_index; i < end_index; ++i) { + if (a.data[i] == typeid_conversions::tuple_begin_tag) { + const std::size_t this_tuple_size = a.count_from_opening_till_matching_parenthis_seq(i, typeid_conversions::tuple_begin_tag, typeid_conversions::tuple_end_tag) - 1; + skips += this_tuple_size; + i += this_tuple_size - 1; + } + } + + return skips; +} + +template +constexpr auto as_flat_tuple_impl(std::index_sequence) noexcept { + constexpr auto a = detail::flat_array_of_type_ids(); + constexpr std::size_t count_of_I = sizeof...(I); + + return detail::as_flat_tuple_impl_drop_helpers( + std::index_sequence{}, + detail::make_index_sequence< 1 + count_of_I - count_skips_in_array(First, First + count_of_I, a) >{} + ); +} + +template +constexpr auto internal_tuple_with_same_alignment() noexcept { + typedef typename std::remove_cv::type type; + + static_assert( + std::is_trivial::value && std::is_standard_layout::value, + "====================> Boost.PFR: Type can not be reflected without Loophole or C++17, because it's not POD" + ); + static_assert(!std::is_reference::value, "====================> Boost.PFR: Not applyable"); + constexpr auto res = detail::as_flat_tuple_impl( + detail::make_index_sequence< decltype(detail::flat_array_of_type_ids())::size() >() + ); + + return res; +} + +template +using internal_tuple_with_same_alignment_t = decltype( detail::internal_tuple_with_same_alignment() ); + + +///////////////////// Flattening +struct ubiq_is_flat_refelectable { + bool& is_flat_refelectable; + + template + constexpr operator Type() const noexcept { + is_flat_refelectable = std::is_fundamental>::value; + return {}; + } +}; + +template +constexpr bool is_flat_refelectable(std::index_sequence) noexcept { + constexpr std::size_t fields = sizeof...(I); + bool result[fields] = {static_cast(I)...}; + const T v{ ubiq_is_flat_refelectable{result[I]}... }; + (void)v; + + for (std::size_t i = 0; i < fields; ++i) { + if (!result[i]) { + return false; + } + } + + return true; +} + +template +auto tie_as_flat_tuple(T& lvalue) noexcept { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + using type = std::remove_cv_t; + using tuple_type = internal_tuple_with_same_alignment_t; + + offset_based_getter getter; + return boost::pfr::detail::make_flat_tuple_of_references(lvalue, getter, size_t_<0>{}, size_t_{}); +} + +template +auto tie_as_tuple(T& val) noexcept { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + static_assert( + boost::pfr::detail::is_flat_refelectable( detail::make_index_sequence()>{} ), + "====================> Boost.PFR: Not possible in C++14 to represent that type without loosing information. Change type definition or enable C++17" + ); + return boost::pfr::detail::tie_as_flat_tuple(val); +} + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +///////////////////// Structure that can be converted to copy of anything +struct ubiq_constructor_constexpr_copy { + std::size_t ignore; + + template + constexpr operator Type() const noexcept { + static_assert( + std::is_trivially_destructible::value, + "====================> Boost.PFR: One of the fields in the type passed to `for_each_field` has non trivial destructor." + ); + return {}; + } +}; + +///////////////////// + +template +struct is_constexpr_aggregate_initializable { // TODO: try to fix it + template + static std::true_type test(long) noexcept; + + static std::false_type test(...) noexcept; + + static constexpr decltype( test(0) ) value{}; +}; + + +template +void for_each_field_in_depth(T& t, F&& f, std::index_sequence, identity...); + +template +void for_each_field_in_depth(T& t, F&& f, std::index_sequence<>, identity...); + +template +struct next_step { + T& t; + F& f; + + template + operator Field() const { + boost::pfr::detail::for_each_field_in_depth( + t, + std::forward(f), + IndexSeq{}, + identity{}..., + identity{} + ); + + return {}; + } +}; + +template +void for_each_field_in_depth(T& t, F&& f, std::index_sequence, identity...) { + (void)std::add_const_t>{ + Fields{}..., + next_step, Fields...>{t, f}, + ubiq_constructor_constexpr_copy{I}... + }; +} + +template +void for_each_field_in_depth(T& lvalue, F&& f, std::index_sequence<>, identity...) { + using tuple_type = sequence_tuple::tuple; + + offset_based_getter>, tuple_type> getter; + std::forward(f)( + boost::pfr::detail::make_flat_tuple_of_references(lvalue, getter, size_t_<0>{}, size_t_{}) + ); +} + +template +void for_each_field_dispatcher_1(T& t, F&& f, std::index_sequence, std::true_type /*is_flat_refelectable*/) { + std::forward(f)( + boost::pfr::detail::tie_as_flat_tuple(t) + ); +} + + +template +void for_each_field_dispatcher_1(T& t, F&& f, std::index_sequence, std::false_type /*is_flat_refelectable*/) { + boost::pfr::detail::for_each_field_in_depth( + t, + std::forward(f), + std::index_sequence{} + ); +} + +template +void for_each_field_dispatcher(T& t, F&& f, std::index_sequence) { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + + /// Compile time error at this point means that you have called `for_each_field` or some other non-flat function or operator for a + /// type that is not constexpr aggregate initializable. + /// + /// Make sure that all the fields of your type have constexpr default construtors and trivial destructors. + /// Or compile in C++17 mode. + constexpr T tmp{ ubiq_constructor_constexpr_copy{I}... }; + (void)tmp; + + //static_assert(is_constexpr_aggregate_initializable::value, "====================> Boost.PFR: T must be a constexpr initializable type"); + + constexpr bool is_flat_refelectable_val = detail::is_flat_refelectable( std::index_sequence{} ); + detail::for_each_field_dispatcher_1( + t, + std::forward(f), + std::index_sequence{}, + std::integral_constant{} + ); +} + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif + +}}} // namespace boost::pfr::detail + +#endif // BOOST_PFR_DETAIL_CORE14_CLASSIC_HPP diff --git a/boost/pfr/detail/core14_loophole.hpp b/boost/pfr/detail/core14_loophole.hpp new file mode 100644 index 0000000000..88c4c2aaf9 --- /dev/null +++ b/boost/pfr/detail/core14_loophole.hpp @@ -0,0 +1,200 @@ +// Copyright (c) 2017-2018 Alexandr Poltavsky, Antony Polukhin. +// Copyright (c) 2019-2021 Antony Polukhin. +// +// 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) + + +// The Great Type Loophole (C++14) +// Initial implementation by Alexandr Poltavsky, http://alexpolt.github.io +// +// Description: +// The Great Type Loophole is a technique that allows to exchange type information with template +// instantiations. Basically you can assign and read type information during compile time. +// Here it is used to detect data members of a data type. I described it for the first time in +// this blog post http://alexpolt.github.io/type-loophole.html . +// +// This technique exploits the http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#2118 +// CWG 2118. Stateful metaprogramming via friend injection +// Note: CWG agreed that such techniques should be ill-formed, although the mechanism for prohibiting them is as yet undetermined. + +#ifndef BOOST_PFR_DETAIL_CORE14_LOOPHOLE_HPP +#define BOOST_PFR_DETAIL_CORE14_LOOPHOLE_HPP + +#include + +#include +#include + +#include // still needed for enums +#include +#include +#include +#include +#include +#include +#include + + +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wmissing-braces" +# pragma clang diagnostic ignored "-Wundefined-inline" +# pragma clang diagnostic ignored "-Wundefined-internal" +# pragma clang diagnostic ignored "-Wmissing-field-initializers" +#elif defined(__GNUC__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wnon-template-friend" +#endif + + +namespace boost { namespace pfr { namespace detail { + +// tag generates friend declarations and helps with overload resolution. +// There are two types: one with the auto return type, which is the way we read types later. +// The second one is used in the detection of instantiations without which we'd get multiple +// definitions. + +template +struct tag { + friend auto loophole(tag); +}; + +// The definitions of friend functions. +template +struct fn_def_lref { + friend auto loophole(tag) { + // Standard Library containers do not SFINAE on invalid copy constructor. Because of that std::vector> reports that it is copyable, + // which leads to an instantiation error at this place. + // + // To workaround the issue, we check that the type U is movable, and move it in that case. + using no_extents_t = std::remove_all_extents_t; + return static_cast< std::conditional_t::value, no_extents_t&&, no_extents_t&> >( + boost::pfr::detail::unsafe_declval() + ); + } +}; +template +struct fn_def_rref { + friend auto loophole(tag) { return std::move(boost::pfr::detail::unsafe_declval< std::remove_all_extents_t& >()); } +}; + + +// Those specializations are to avoid multiple definition errors. +template +struct fn_def_lref {}; + +template +struct fn_def_rref {}; + + +// This has a templated conversion operator which in turn triggers instantiations. +// Important point, using sizeof seems to be more reliable. Also default template +// arguments are "cached" (I think). To fix that I provide a U template parameter to +// the ins functions which do the detection using constexpr friend functions and SFINAE. +template +struct loophole_ubiq_lref { + template static std::size_t ins(...); + template{})) > static char ins(int); + + template(0)) == sizeof(char)>)> + constexpr operator U&() const&& noexcept; // `const&&` here helps to avoid ambiguity in loophole instantiations. optional_like test validate that behavior. +}; + +template +struct loophole_ubiq_rref { + template static std::size_t ins(...); + template{})) > static char ins(int); + + template(0)) == sizeof(char)>)> + constexpr operator U&&() const&& noexcept; // `const&&` here helps to avoid ambiguity in loophole instantiations. optional_like test validate that behavior. +}; + + +// This is a helper to turn a data structure into a tuple. +template +struct loophole_type_list_lref; + +template +struct loophole_type_list_lref< T, std::index_sequence > + // Instantiating loopholes: + : sequence_tuple::tuple< decltype(T{ loophole_ubiq_lref{}... }, 0) > +{ + using type = sequence_tuple::tuple< decltype(loophole(tag{}))... >; +}; + + +template +struct loophole_type_list_rref; + +template +struct loophole_type_list_rref< T, std::index_sequence > + // Instantiating loopholes: + : sequence_tuple::tuple< decltype(T{ loophole_ubiq_rref{}... }, 0) > +{ + using type = sequence_tuple::tuple< decltype(loophole(tag{}))... >; +}; + + +// Lazily returns loophole_type_list_{lr}ref. +template +struct loophole_type_list_selector { + using type = loophole_type_list_lref; +}; + +template +struct loophole_type_list_selector { + using type = loophole_type_list_rref; +}; + +template +auto tie_as_tuple_loophole_impl(T& lvalue) noexcept { + using type = std::remove_cv_t>; + using indexes = detail::make_index_sequence()>; + using loophole_type_list = typename detail::loophole_type_list_selector< + std::is_copy_constructible>::value, type, indexes + >::type; + using tuple_type = typename loophole_type_list::type; + + return boost::pfr::detail::make_flat_tuple_of_references( + lvalue, + offset_based_getter{}, + size_t_<0>{}, + size_t_{} + ); +} + +template +auto tie_as_tuple(T& val) noexcept { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + return boost::pfr::detail::tie_as_tuple_loophole_impl( + val + ); +} + +template +void for_each_field_dispatcher(T& t, F&& f, std::index_sequence) { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + std::forward(f)( + boost::pfr::detail::tie_as_tuple_loophole_impl(t) + ); +} + +}}} // namespace boost::pfr::detail + + +#ifdef __clang__ +# pragma clang diagnostic pop +#elif defined(__GNUC__) +# pragma GCC diagnostic pop +#endif + + +#endif // BOOST_PFR_DETAIL_CORE14_LOOPHOLE_HPP + diff --git a/boost/pfr/detail/core17.hpp b/boost/pfr/detail/core17.hpp new file mode 100644 index 0000000000..20a2821ce4 --- /dev/null +++ b/boost/pfr/detail/core17.hpp @@ -0,0 +1,71 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_DETAIL_CORE17_HPP +#define BOOST_PFR_DETAIL_CORE17_HPP + +#include +#include +#include +#include + +namespace boost { namespace pfr { namespace detail { + +#ifndef _MSC_VER // MSVC fails to compile the following code, but compiles the structured bindings in core17_generated.hpp +struct do_not_define_std_tuple_size_for_me { + bool test1 = true; +}; + +template +constexpr bool do_structured_bindings_work() noexcept { // ******************************************* IN CASE OF ERROR READ THE FOLLOWING LINES IN boost/pfr/detail/core17.hpp FILE: + T val{}; + const auto& [a] = val; // ******************************************* IN CASE OF ERROR READ THE FOLLOWING LINES IN boost/pfr/detail/core17.hpp FILE: + + /**************************************************************************** + * + * It looks like your compiler or Standard Library can not handle C++17 + * structured bindings. + * + * Workaround: Define BOOST_PFR_USE_CPP17 to 0 + * It will disable the C++17 features for Boost.PFR library. + * + * Sorry for the inconvenience caused. + * + ****************************************************************************/ + + return a; +} + +static_assert( + do_structured_bindings_work(), + "====================> Boost.PFR: Your compiler can not handle C++17 structured bindings. Read the above comments for workarounds." +); +#endif // #ifndef _MSC_VER + +template +constexpr auto tie_as_tuple(T& val) noexcept { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + typedef size_t_()> fields_count_tag; + return boost::pfr::detail::tie_as_tuple(val, fields_count_tag{}); +} + +template +void for_each_field_dispatcher(T& t, F&& f, std::index_sequence) { + static_assert( + !std::is_union::value, + "====================> Boost.PFR: For safety reasons it is forbidden to reflect unions. See `Reflection of unions` section in the docs for more info." + ); + std::forward(f)( + detail::tie_as_tuple(t) + ); +} + +}}} // namespace boost::pfr::detail + +#endif // BOOST_PFR_DETAIL_CORE17_HPP diff --git a/boost/pfr/detail/core17_generated.hpp b/boost/pfr/detail/core17_generated.hpp new file mode 100644 index 0000000000..d3098cd3ff --- /dev/null +++ b/boost/pfr/detail/core17_generated.hpp @@ -0,0 +1,1036 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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) + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////// THIS HEADER IS AUTO GENERATED BY misc/generate_cpp17.py //////////////// +//////////////// MODIFY AND RUN THE misc/generate_cpp17.py INSTEAD OF DIRECTLY MODIFYING THE GENERATED FILE //////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_PFR_DETAIL_CORE17_GENERATED_HPP +#define BOOST_PFR_DETAIL_CORE17_GENERATED_HPP +#pragma once + +#include +#if !BOOST_PFR_USE_CPP17 +# error C++17 is required for this header. +#endif + +#include +#include + +namespace boost { namespace pfr { namespace detail { + +template +constexpr auto make_tuple_of_references(Args&&... args) noexcept { + return sequence_tuple::tuple{ args... }; +} + +template +constexpr auto tie_as_tuple(T& /*val*/, size_t_<0>) noexcept { + return sequence_tuple::tuple<>{}; +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<1>, std::enable_if_t >::value>* = 0) noexcept { + auto& [a] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a); +} + + +template +constexpr auto tie_as_tuple(T& val, size_t_<1>, std::enable_if_t >::value>* = 0) noexcept { + return ::boost::pfr::detail::make_tuple_of_references( val ); +} + + +template +constexpr auto tie_as_tuple(T& val, size_t_<2>) noexcept { + auto& [a,b] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<3>) noexcept { + auto& [a,b,c] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<4>) noexcept { + auto& [a,b,c,d] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<5>) noexcept { + auto& [a,b,c,d,e] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<6>) noexcept { + auto& [a,b,c,d,e,f] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<7>) noexcept { + auto& [a,b,c,d,e,f,g] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<8>) noexcept { + auto& [a,b,c,d,e,f,g,h] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<9>) noexcept { + auto& [a,b,c,d,e,f,g,h,j] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<10>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<11>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<12>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<13>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<14>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<15>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<16>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<17>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<18>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<19>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<20>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<21>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<22>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<23>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<24>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<25>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<26>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<27>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<28>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<29>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<30>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<31>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<32>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<33>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<34>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<35>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<36>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<37>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<38>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<39>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<40>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<41>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<42>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<43>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<44>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<45>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<46>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<47>) noexcept { + auto& [a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + return ::boost::pfr::detail::make_tuple_of_references(a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<48>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<49>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<50>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<51>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<52>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<53>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<54>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<55>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<56>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<57>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<58>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<59>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<60>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<61>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<62>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<63>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<64>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<65>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<66>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<67>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<68>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<69>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<70>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<71>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<72>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<73>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<74>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<75>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<76>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<77>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<78>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<79>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<80>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<81>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<82>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<83>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<84>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<85>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<86>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<87>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<88>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<89>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<90>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<91>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<92>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<93>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<94>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<95>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<96>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<97>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<98>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc,bd + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc,bd + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<99>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc,bd,be + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc,bd,be + ); +} + +template +constexpr auto tie_as_tuple(T& val, size_t_<100>) noexcept { + auto& [ + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc,bd,be,bf + ] = val; // ====================> Boost.PFR: User-provided type is not a SimpleAggregate. + + return ::boost::pfr::detail::make_tuple_of_references( + a,b,c,d,e,f,g,h,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W,X,Y,Z, + aa,ab,ac,ad,ae,af,ag,ah,aj,ak,al,am,an,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aJ,aK,aL,aM,aN,aP,aQ,aR,aS,aU,aV,aW,aX,aY,aZ, + ba,bb,bc,bd,be,bf + ); +} + + +template +constexpr void tie_as_tuple(T& /*val*/, size_t_) noexcept { + static_assert(sizeof(T) && false, + "====================> Boost.PFR: Too many fields in a structure T. Regenerate include/boost/pfr/detail/core17_generated.hpp file for appropriate count of fields. For example: `python ./misc/generate_cpp17.py 300 > include/boost/pfr/detail/core17_generated.hpp`"); +} + +}}} // namespace boost::pfr::detail + +#endif // BOOST_PFR_DETAIL_CORE17_GENERATED_HPP + diff --git a/boost/pfr/detail/detectors.hpp b/boost/pfr/detail/detectors.hpp new file mode 100644 index 0000000000..e18be7dcdf --- /dev/null +++ b/boost/pfr/detail/detectors.hpp @@ -0,0 +1,70 @@ +// Copyright (c) 2016-2021 Antony Polukhin +// +// 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_PFR_DETAIL_DETECTORS_HPP +#define BOOST_PFR_DETAIL_DETECTORS_HPP +#pragma once + +#include + +#include +#include + +namespace boost { namespace pfr { namespace detail { +///////////////////// `value` is true if Detector does not compile (SFINAE) + struct can_not_apply{}; + + template