couchbase 3.0.0-universal-darwin-19 → 3.0.1-universal-darwin-19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/CMakeLists.txt +86 -169
- data/ext/build_version.hxx.in +3 -2
- data/ext/cmake/Backtrace.cmake +35 -0
- data/ext/cmake/BuildTracing.cmake +6 -0
- data/ext/cmake/Cache.cmake +29 -0
- data/ext/cmake/CompilerWarnings.cmake +78 -0
- data/ext/cmake/PreventInSourceBuilds.cmake +18 -0
- data/ext/cmake/Sanitizers.cmake +66 -0
- data/ext/cmake/StandardProjectSettings.cmake +40 -0
- data/ext/cmake/StaticAnalyzers.cmake +37 -0
- data/ext/cmake/Testing.cmake +52 -0
- data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
- data/ext/cmake/VersionInfo.cmake +37 -0
- data/ext/couchbase/bucket.hxx +37 -12
- data/ext/couchbase/capabilities.hxx +117 -0
- data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
- data/ext/couchbase/cluster.hxx +34 -2
- data/ext/couchbase/cluster_options.hxx +1 -0
- data/ext/couchbase/configuration.hxx +228 -52
- data/ext/couchbase/couchbase.cxx +914 -35
- data/ext/couchbase/diagnostics.hxx +251 -0
- data/ext/couchbase/document_id.hxx +3 -1
- data/ext/couchbase/errors.hxx +10 -1
- data/ext/couchbase/io/http_command.hxx +11 -7
- data/ext/couchbase/io/http_context.hxx +37 -0
- data/ext/couchbase/io/http_message.hxx +9 -0
- data/ext/couchbase/io/http_parser.hxx +2 -0
- data/ext/couchbase/io/http_session.hxx +100 -14
- data/ext/couchbase/io/http_session_manager.hxx +65 -5
- data/ext/couchbase/io/mcbp_command.hxx +16 -7
- data/ext/couchbase/io/mcbp_session.hxx +193 -51
- data/ext/couchbase/io/query_cache.hxx +61 -0
- data/ext/couchbase/io/retry_context.hxx +1 -2
- data/ext/couchbase/io/retry_orchestrator.hxx +16 -0
- data/ext/couchbase/io/retry_strategy.hxx +1 -1
- data/ext/couchbase/io/streams.hxx +61 -10
- data/ext/couchbase/operations.hxx +13 -0
- data/ext/couchbase/operations/analytics_dataset_create.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataset_drop.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataset_get_all.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataverse_create.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataverse_drop.hxx +1 -1
- data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +1 -1
- data/ext/couchbase/operations/analytics_index_create.hxx +1 -1
- data/ext/couchbase/operations/analytics_index_drop.hxx +1 -1
- data/ext/couchbase/operations/analytics_index_get_all.hxx +1 -1
- data/ext/couchbase/operations/analytics_link_connect.hxx +1 -1
- data/ext/couchbase/operations/analytics_link_disconnect.hxx +1 -1
- data/ext/couchbase/operations/bucket_create.hxx +11 -5
- data/ext/couchbase/operations/bucket_drop.hxx +1 -1
- data/ext/couchbase/operations/bucket_flush.hxx +1 -1
- data/ext/couchbase/operations/bucket_get.hxx +1 -1
- data/ext/couchbase/operations/bucket_get_all.hxx +1 -1
- data/ext/couchbase/operations/bucket_settings.hxx +43 -4
- data/ext/couchbase/operations/bucket_update.hxx +11 -5
- data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +1 -1
- data/ext/couchbase/operations/collection_create.hxx +3 -1
- data/ext/couchbase/operations/collection_drop.hxx +1 -1
- data/ext/couchbase/operations/collections_manifest_get.hxx +70 -0
- data/ext/couchbase/operations/document_analytics.hxx +6 -1
- data/ext/couchbase/operations/document_get_projected.hxx +1 -1
- data/ext/couchbase/operations/document_query.hxx +85 -8
- data/ext/couchbase/operations/document_search.hxx +14 -4
- data/ext/couchbase/operations/document_view.hxx +1 -1
- data/ext/couchbase/operations/group_drop.hxx +71 -0
- data/ext/couchbase/operations/group_get.hxx +75 -0
- data/ext/couchbase/operations/group_get_all.hxx +70 -0
- data/ext/couchbase/operations/group_upsert.hxx +118 -0
- data/ext/couchbase/operations/query_index_build_deferred.hxx +1 -1
- data/ext/couchbase/operations/query_index_create.hxx +1 -1
- data/ext/couchbase/operations/query_index_drop.hxx +1 -1
- data/ext/couchbase/operations/query_index_get_all.hxx +3 -2
- data/ext/couchbase/operations/rbac.hxx +276 -0
- data/ext/couchbase/operations/role_get_all.hxx +70 -0
- data/ext/couchbase/operations/scope_create.hxx +6 -2
- data/ext/couchbase/operations/scope_drop.hxx +1 -1
- data/ext/couchbase/operations/scope_get_all.hxx +1 -1
- data/ext/couchbase/operations/search_get_stats.hxx +59 -0
- data/ext/couchbase/operations/search_index_analyze_document.hxx +1 -1
- data/ext/couchbase/operations/search_index_control_ingest.hxx +1 -1
- data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +1 -1
- data/ext/couchbase/operations/search_index_control_query.hxx +1 -1
- data/ext/couchbase/operations/search_index_drop.hxx +1 -1
- data/ext/couchbase/operations/search_index_get.hxx +1 -1
- data/ext/couchbase/operations/search_index_get_all.hxx +1 -1
- data/ext/couchbase/operations/search_index_get_documents_count.hxx +24 -16
- data/ext/couchbase/operations/search_index_get_stats.hxx +81 -0
- data/ext/couchbase/operations/search_index_upsert.hxx +1 -1
- data/ext/couchbase/operations/user_drop.hxx +72 -0
- data/ext/couchbase/operations/user_get.hxx +76 -0
- data/ext/couchbase/operations/user_get_all.hxx +71 -0
- data/ext/couchbase/operations/user_upsert.hxx +125 -0
- data/ext/couchbase/operations/view_index_drop.hxx +1 -1
- data/ext/couchbase/operations/view_index_get.hxx +1 -1
- data/ext/couchbase/operations/view_index_get_all.hxx +1 -1
- data/ext/couchbase/operations/view_index_upsert.hxx +1 -1
- data/ext/couchbase/origin.hxx +4 -4
- data/ext/couchbase/platform/terminate_handler.cc +5 -4
- data/ext/couchbase/protocol/client_opcode.hxx +38 -38
- data/ext/couchbase/protocol/client_response.hxx +2 -2
- data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -3
- data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +3 -1
- data/ext/couchbase/protocol/magic.hxx +6 -6
- data/ext/couchbase/protocol/server_opcode.hxx +2 -2
- data/ext/couchbase/protocol/status.hxx +57 -57
- data/ext/couchbase/service_type.hxx +1 -1
- data/ext/couchbase/utils/connection_string.hxx +12 -3
- data/ext/couchbase/version.hxx +1 -1
- data/ext/extconf.rb +21 -9
- data/ext/test/test_helper.hxx +141 -0
- data/ext/test/test_helper_native.hxx +59 -0
- data/ext/test/test_helper_ruby.hxx +72 -0
- data/ext/test/test_native_diagnostics.cxx +385 -0
- data/ext/test/test_native_trivial_crud.cxx +83 -0
- data/ext/test/test_ruby_trivial_crud.cxx +35 -0
- data/ext/test/test_ruby_trivial_query.cxx +34 -0
- data/ext/third_party/asio/asio/include/asio.hpp +35 -0
- data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
- data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
- data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
- data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
- data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
- data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
- data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
- data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
- data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
- data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
- data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
- data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
- data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
- data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
- data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
- data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
- data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
- data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
- data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
- data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
- data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
- data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
- data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
- data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
- data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
- data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
- data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
- data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
- data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
- data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
- data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
- data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
- data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
- data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
- data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
- data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
- data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
- data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
- data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
- data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
- data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
- data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
- data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
- data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
- data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
- data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
- data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
- data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
- data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
- data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
- data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
- data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
- data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
- data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
- data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
- data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
- data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
- data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
- data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
- data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
- data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
- data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
- data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
- data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
- data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
- data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
- data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
- data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
- data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
- data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
- data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
- data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
- data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
- data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
- data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
- data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
- data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
- data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
- data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
- data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
- data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
- data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
- data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
- data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
- data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
- data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
- data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
- data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
- data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
- data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
- data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
- data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
- data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
- data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
- data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
- data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
- data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
- data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
- data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
- data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
- data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
- data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
- data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
- data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
- data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
- data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
- data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
- data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
- data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
- data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
- data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
- data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
- data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
- data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
- data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
- data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
- data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
- data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
- data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
- data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
- data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
- data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
- data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
- data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
- data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
- data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
- data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
- data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
- data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
- data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
- data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
- data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
- data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
- data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
- data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
- data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
- data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
- data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
- data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
- data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
- data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
- data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
- data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
- data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
- data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
- data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
- data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
- data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
- data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
- data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
- data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
- data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
- data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
- data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
- data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
- data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
- data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
- data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
- data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
- data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
- data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
- data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
- data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
- data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
- data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
- data/ext/third_party/gsl/CMakeLists.txt +13 -5
- data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
- data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
- data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
- data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
- data/ext/third_party/gsl/include/gsl/multi_span +0 -10
- data/ext/third_party/gsl/include/gsl/pointers +14 -28
- data/ext/third_party/gsl/include/gsl/span +98 -46
- data/ext/third_party/gsl/include/gsl/string_span +37 -47
- data/ext/third_party/http_parser/http_parser.c +17 -10
- data/ext/third_party/http_parser/http_parser.h +4 -2
- data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
- data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
- data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
- data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
- data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
- data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
- data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
- data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
- data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
- data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
- data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
- data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
- data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
- data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
- data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
- data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
- data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
- data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
- data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
- data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
- data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
- data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
- data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
- data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
- data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
- data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
- data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
- data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
- data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
- data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +29 -26
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
- data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
- data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
- data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
- data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
- data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
- data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
- data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
- data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
- data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
- data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
- data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
- data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
- data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
- data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
- data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
- data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
- data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
- data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
- data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
- data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
- data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
- data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
- data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
- data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
- data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
- data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
- data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
- data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
- data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
- data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
- data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
- data/ext/third_party/json/include/tao/json/span.hpp +94 -166
- data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
- data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
- data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
- data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
- data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
- data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
- data/ext/third_party/snappy/snappy.cc +6 -2
- data/ext/third_party/spdlog/CMakeLists.txt +24 -57
- data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
- data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
- data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
- data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
- data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
- data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
- data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
- data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
- data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
- data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
- data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
- data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
- data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
- data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
- data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
- data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
- data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
- data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
- data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
- data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
- data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
- data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
- data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
- data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
- data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
- data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
- data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
- data/ext/third_party/spdlog/src/fmt.cpp +21 -147
- data/lib/couchbase/cluster.rb +111 -1
- data/lib/couchbase/collection_options.rb +18 -1
- data/lib/couchbase/errors.rb +3 -0
- data/lib/couchbase/libcouchbase.bundle +0 -0
- data/lib/couchbase/management/bucket_manager.rb +36 -3
- data/lib/couchbase/management/search_index_manager.rb +42 -1
- data/lib/couchbase/management/user_manager.rb +155 -48
- data/lib/couchbase/query_options.rb +7 -0
- data/lib/couchbase/scope.rb +1 -0
- data/lib/couchbase/search_options.rb +69 -1
- data/lib/couchbase/version.rb +1 -1
- metadata +171 -267
- data/.rubocop.yml +0 -227
- data/.rubocop_todo.yml +0 -47
- data/.yardopts +0 -1
- data/CONTRIBUTING.md +0 -110
- data/Gemfile +0 -37
- data/Rakefile +0 -51
- data/couchbase.gemspec +0 -79
- data/examples/analytics.rb +0 -236
- data/examples/auth.rb +0 -33
- data/examples/crud.rb +0 -34
- data/examples/managing_analytics_indexes.rb +0 -86
- data/examples/managing_buckets.rb +0 -61
- data/examples/managing_collections.rb +0 -71
- data/examples/managing_query_indexes.rb +0 -83
- data/examples/managing_search_indexes.rb +0 -77
- data/examples/managing_view_indexes.rb +0 -68
- data/examples/query.rb +0 -32
- data/examples/query_with_consistency.rb +0 -86
- data/examples/search.rb +0 -202
- data/examples/search_with_consistency.rb +0 -97
- data/examples/subdocument.rb +0 -63
- data/examples/view.rb +0 -59
- data/ext/.clang-format +0 -15
- data/ext/.clang-tidy +0 -22
- data/ext/.cmake-format.yaml +0 -8
- data/ext/.gitignore +0 -2
- data/ext/.idea/.name +0 -1
- data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
- data/ext/.idea/ext.iml +0 -2
- data/ext/.idea/misc.xml +0 -16
- data/ext/.idea/modules.xml +0 -8
- data/ext/.idea/vcs.xml +0 -12
- data/ext/test/main.cxx +0 -184
- data/ext/third_party/asio/.appveyor.yml +0 -107
- data/ext/third_party/asio/.cirrus.yml +0 -16
- data/ext/third_party/asio/.gitignore +0 -3
- data/ext/third_party/asio/.travis.yml +0 -323
- data/ext/third_party/asio/asio/.gitignore +0 -23
- data/ext/third_party/asio/asio/COPYING +0 -4
- data/ext/third_party/asio/asio/INSTALL +0 -5
- data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
- data/ext/third_party/asio/asio/Makefile.am +0 -19
- data/ext/third_party/asio/asio/README +0 -4
- data/ext/third_party/asio/asio/asio.manifest +0 -4865
- data/ext/third_party/asio/asio/autogen.sh +0 -55
- data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
- data/ext/third_party/asio/asio/boostify.pl +0 -603
- data/ext/third_party/asio/asio/configure.ac +0 -182
- data/ext/third_party/asio/asio/include/.gitignore +0 -2
- data/ext/third_party/asio/asio/include/Makefile.am +0 -484
- data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
- data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
- data/ext/third_party/asio/asio/release.pl +0 -440
- data/ext/third_party/asio/asio/src/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/Makefile.am +0 -23
- data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
- data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
- data/ext/third_party/asio/asio/src/asio.cpp +0 -11
- data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
- data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
- data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
- data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
- data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
- data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
- data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
- data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
- data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
- data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
- data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
- data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
- data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
- data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
- data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
- data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
- data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
- data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
- data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
- data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
- data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
- data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
- data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
- data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
- data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
- data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
- data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
- data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
- data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
- data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
- data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
- data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
- data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
- data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
- data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
- data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
- data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
- data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
- data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
- data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
- data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
- data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
- data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
- data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
- data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
- data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
- data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
- data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
- data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
- data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
- data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
- data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
- data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
- data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
- data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
- data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
- data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
- data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
- data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
- data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
- data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
- data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
- data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
- data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
- data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
- data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
- data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
- data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
- data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
- data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
- data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
- data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
- data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
- data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
- data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
- data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
- data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
- data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
- data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
- data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
- data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
- data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
- data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
- data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
- data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
- data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
- data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
- data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
- data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
- data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
- data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
- data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
- data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
- data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
- data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
- data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
- data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
- data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
- data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
- data/ext/third_party/asio/asio/tsify.pl +0 -574
- data/ext/third_party/gsl/.clang-format +0 -34
- data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
- data/ext/third_party/gsl/.gitignore +0 -16
- data/ext/third_party/gsl/.travis.yml +0 -551
- data/ext/third_party/gsl/CMakeSettings.json +0 -18
- data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
- data/ext/third_party/gsl/GSL.natvis +0 -98
- data/ext/third_party/gsl/README.md +0 -124
- data/ext/third_party/gsl/appveyor.yml +0 -128
- data/ext/third_party/http_parser/.gitignore +0 -30
- data/ext/third_party/http_parser/.mailmap +0 -8
- data/ext/third_party/http_parser/.travis.yml +0 -13
- data/ext/third_party/http_parser/AUTHORS +0 -68
- data/ext/third_party/http_parser/Makefile +0 -160
- data/ext/third_party/http_parser/README.md +0 -246
- data/ext/third_party/http_parser/bench.c +0 -128
- data/ext/third_party/http_parser/http_parser.gyp +0 -111
- data/ext/third_party/http_parser/test.c +0 -4600
- data/ext/third_party/json/.appveyor.yml +0 -44
- data/ext/third_party/json/.clang-format +0 -84
- data/ext/third_party/json/.conan/build.py +0 -80
- data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
- data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
- data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
- data/ext/third_party/json/.gitignore +0 -3
- data/ext/third_party/json/.travis.yml +0 -173
- data/ext/third_party/json/Makefile +0 -77
- data/ext/third_party/json/README.md +0 -149
- data/ext/third_party/json/conanfile.py +0 -28
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
- data/ext/third_party/snappy/.appveyor.yml +0 -36
- data/ext/third_party/snappy/.gitignore +0 -8
- data/ext/third_party/snappy/.travis.yml +0 -98
- data/ext/third_party/snappy/AUTHORS +0 -1
- data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
- data/ext/third_party/snappy/NEWS +0 -188
- data/ext/third_party/snappy/README.md +0 -148
- data/ext/third_party/snappy/docs/README.md +0 -72
- data/ext/third_party/snappy/format_description.txt +0 -110
- data/ext/third_party/snappy/framing_format.txt +0 -135
- data/ext/third_party/snappy/snappy-test.cc +0 -613
- data/ext/third_party/snappy/snappy-test.h +0 -526
- data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
- data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
- data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
- data/ext/third_party/spdlog/.clang-format +0 -108
- data/ext/third_party/spdlog/.clang-tidy +0 -54
- data/ext/third_party/spdlog/.gitattributes +0 -1
- data/ext/third_party/spdlog/.gitignore +0 -83
- data/ext/third_party/spdlog/.travis.yml +0 -112
- data/ext/third_party/spdlog/INSTALL +0 -24
- data/ext/third_party/spdlog/README.md +0 -423
- data/ext/third_party/spdlog/appveyor.yml +0 -51
- data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
@@ -0,0 +1,390 @@
|
|
1
|
+
//
|
2
|
+
// execution/bulk_execute.hpp
|
3
|
+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
4
|
+
//
|
5
|
+
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
6
|
+
//
|
7
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
8
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
9
|
+
//
|
10
|
+
|
11
|
+
#ifndef ASIO_EXECUTION_BULK_EXECUTE_HPP
|
12
|
+
#define ASIO_EXECUTION_BULK_EXECUTE_HPP
|
13
|
+
|
14
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
15
|
+
# pragma once
|
16
|
+
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
17
|
+
|
18
|
+
#include "asio/detail/config.hpp"
|
19
|
+
#include "asio/detail/type_traits.hpp"
|
20
|
+
#include "asio/execution/bulk_guarantee.hpp"
|
21
|
+
#include "asio/execution/detail/bulk_sender.hpp"
|
22
|
+
#include "asio/execution/executor.hpp"
|
23
|
+
#include "asio/execution/sender.hpp"
|
24
|
+
#include "asio/traits/bulk_execute_member.hpp"
|
25
|
+
#include "asio/traits/bulk_execute_free.hpp"
|
26
|
+
|
27
|
+
#include "asio/detail/push_options.hpp"
|
28
|
+
|
29
|
+
#if defined(GENERATING_DOCUMENTATION)
|
30
|
+
|
31
|
+
namespace asio {
|
32
|
+
namespace execution {
|
33
|
+
|
34
|
+
/// A customisation point that creates a bulk sender.
|
35
|
+
/**
|
36
|
+
* The name <tt>execution::bulk_execute</tt> denotes a customisation point
|
37
|
+
* object. If <tt>is_convertible_v<N, size_t></tt> is true, then the expression
|
38
|
+
* <tt>execution::bulk_execute(S, F, N)</tt> for some subexpressions
|
39
|
+
* <tt>S</tt>, <tt>F</tt>, and <tt>N</tt> is expression-equivalent to:
|
40
|
+
*
|
41
|
+
* @li <tt>S.bulk_execute(F, N)</tt>, if that expression is valid. If the
|
42
|
+
* function selected does not execute <tt>N</tt> invocations of the function
|
43
|
+
* object <tt>F</tt> on the executor <tt>S</tt> in bulk with forward progress
|
44
|
+
* guarantee <tt>asio::query(S, execution::bulk_guarantee)</tt>, and
|
45
|
+
* the result of that function does not model <tt>sender<void></tt>, the
|
46
|
+
* program is ill-formed with no diagnostic required.
|
47
|
+
*
|
48
|
+
* @li Otherwise, <tt>bulk_execute(S, F, N)</tt>, if that expression is valid,
|
49
|
+
* with overload resolution performed in a context that includes the
|
50
|
+
* declaration <tt>void bulk_execute();</tt> and that does not include a
|
51
|
+
* declaration of <tt>execution::bulk_execute</tt>. If the function selected
|
52
|
+
* by overload resolution does not execute <tt>N</tt> invocations of the
|
53
|
+
* function object <tt>F</tt> on the executor <tt>S</tt> in bulk with forward
|
54
|
+
* progress guarantee <tt>asio::query(E,
|
55
|
+
* execution::bulk_guarantee)</tt>, and the result of that function does not
|
56
|
+
* model <tt>sender<void></tt>, the program is ill-formed with no diagnostic
|
57
|
+
* required.
|
58
|
+
*
|
59
|
+
* @li Otherwise, if the types <tt>F</tt> and
|
60
|
+
* <tt>executor_index_t<remove_cvref_t<S>></tt> model <tt>invocable</tt> and
|
61
|
+
* if <tt>asio::query(S, execution::bulk_guarantee)</tt> equals
|
62
|
+
* <tt>execution::bulk_guarantee.unsequenced</tt>, then
|
63
|
+
*
|
64
|
+
* - Evaluates <tt>DECAY_COPY(std::forward<decltype(F)>(F))</tt> on the
|
65
|
+
* calling thread to create a function object <tt>cf</tt>. [Note:
|
66
|
+
* Additional copies of <tt>cf</tt> may subsequently be created. --end
|
67
|
+
* note.]
|
68
|
+
*
|
69
|
+
* - For each value of <tt>i</tt> in <tt>N</tt>, <tt>cf(i)</tt> (or copy of
|
70
|
+
* <tt>cf</tt>)) will be invoked at most once by an execution agent that is
|
71
|
+
* unique for each value of <tt>i</tt>.
|
72
|
+
*
|
73
|
+
* - May block pending completion of one or more invocations of <tt>cf</tt>.
|
74
|
+
*
|
75
|
+
* - Synchronizes with (C++Std [intro.multithread]) the invocations of
|
76
|
+
* <tt>cf</tt>.
|
77
|
+
*
|
78
|
+
* @li Otherwise, <tt>execution::bulk_execute(S, F, N)</tt> is ill-formed.
|
79
|
+
*/
|
80
|
+
inline constexpr unspecified bulk_execute = unspecified;
|
81
|
+
|
82
|
+
/// A type trait that determines whether a @c bulk_execute expression is
|
83
|
+
/// well-formed.
|
84
|
+
/**
|
85
|
+
* Class template @c can_bulk_execute is a trait that is derived from @c
|
86
|
+
* true_type if the expression <tt>execution::bulk_execute(std::declval<S>(),
|
87
|
+
* std::declval<F>(), std::declval<N>)</tt> is well formed; otherwise @c
|
88
|
+
* false_type.
|
89
|
+
*/
|
90
|
+
template <typename S, typename F, typename N>
|
91
|
+
struct can_bulk_execute :
|
92
|
+
integral_constant<bool, automatically_determined>
|
93
|
+
{
|
94
|
+
};
|
95
|
+
|
96
|
+
} // namespace execution
|
97
|
+
} // namespace asio
|
98
|
+
|
99
|
+
#else // defined(GENERATING_DOCUMENTATION)
|
100
|
+
|
101
|
+
namespace asio_execution_bulk_execute_fn {
|
102
|
+
|
103
|
+
using asio::declval;
|
104
|
+
using asio::enable_if;
|
105
|
+
using asio::execution::bulk_guarantee_t;
|
106
|
+
using asio::execution::detail::bulk_sender;
|
107
|
+
using asio::execution::executor_index;
|
108
|
+
using asio::execution::is_sender;
|
109
|
+
using asio::is_convertible;
|
110
|
+
using asio::is_same;
|
111
|
+
using asio::remove_cvref;
|
112
|
+
using asio::result_of;
|
113
|
+
using asio::traits::bulk_execute_free;
|
114
|
+
using asio::traits::bulk_execute_member;
|
115
|
+
using asio::traits::static_require;
|
116
|
+
|
117
|
+
void bulk_execute();
|
118
|
+
|
119
|
+
enum overload_type
|
120
|
+
{
|
121
|
+
call_member,
|
122
|
+
call_free,
|
123
|
+
adapter,
|
124
|
+
ill_formed
|
125
|
+
};
|
126
|
+
|
127
|
+
template <typename S, typename Args, typename = void>
|
128
|
+
struct call_traits
|
129
|
+
{
|
130
|
+
ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed);
|
131
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
132
|
+
typedef void result_type;
|
133
|
+
};
|
134
|
+
|
135
|
+
template <typename S, typename F, typename N>
|
136
|
+
struct call_traits<S, void(F, N),
|
137
|
+
typename enable_if<
|
138
|
+
(
|
139
|
+
is_convertible<N, std::size_t>::value
|
140
|
+
&&
|
141
|
+
bulk_execute_member<S, F, N>::is_valid
|
142
|
+
&&
|
143
|
+
is_sender<
|
144
|
+
typename bulk_execute_member<S, F, N>::result_type
|
145
|
+
>::value
|
146
|
+
)
|
147
|
+
>::type> :
|
148
|
+
bulk_execute_member<S, F, N>
|
149
|
+
{
|
150
|
+
ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member);
|
151
|
+
};
|
152
|
+
|
153
|
+
template <typename S, typename F, typename N>
|
154
|
+
struct call_traits<S, void(F, N),
|
155
|
+
typename enable_if<
|
156
|
+
(
|
157
|
+
is_convertible<N, std::size_t>::value
|
158
|
+
&&
|
159
|
+
!bulk_execute_member<S, F, N>::is_valid
|
160
|
+
&&
|
161
|
+
bulk_execute_free<S, F, N>::is_valid
|
162
|
+
&&
|
163
|
+
is_sender<
|
164
|
+
typename bulk_execute_free<S, F, N>::result_type
|
165
|
+
>::value
|
166
|
+
)
|
167
|
+
>::type> :
|
168
|
+
bulk_execute_free<S, F, N>
|
169
|
+
{
|
170
|
+
ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free);
|
171
|
+
};
|
172
|
+
|
173
|
+
template <typename S, typename F, typename N>
|
174
|
+
struct call_traits<S, void(F, N),
|
175
|
+
typename enable_if<
|
176
|
+
(
|
177
|
+
is_convertible<N, std::size_t>::value
|
178
|
+
&&
|
179
|
+
!bulk_execute_member<S, F, N>::is_valid
|
180
|
+
&&
|
181
|
+
!bulk_execute_free<S, F, N>::is_valid
|
182
|
+
&&
|
183
|
+
is_sender<S>::value
|
184
|
+
&&
|
185
|
+
is_same<
|
186
|
+
typename result_of<
|
187
|
+
F(typename executor_index<typename remove_cvref<S>::type>::type)
|
188
|
+
>::type,
|
189
|
+
typename result_of<
|
190
|
+
F(typename executor_index<typename remove_cvref<S>::type>::type)
|
191
|
+
>::type
|
192
|
+
>::value
|
193
|
+
&&
|
194
|
+
static_require<S, bulk_guarantee_t::unsequenced_t>::is_valid
|
195
|
+
)
|
196
|
+
>::type>
|
197
|
+
{
|
198
|
+
ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter);
|
199
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
200
|
+
typedef bulk_sender<S, F, N> result_type;
|
201
|
+
};
|
202
|
+
|
203
|
+
struct impl
|
204
|
+
{
|
205
|
+
#if defined(ASIO_HAS_MOVE)
|
206
|
+
template <typename S, typename F, typename N>
|
207
|
+
ASIO_CONSTEXPR typename enable_if<
|
208
|
+
call_traits<S, void(F, N)>::overload == call_member,
|
209
|
+
typename call_traits<S, void(F, N)>::result_type
|
210
|
+
>::type
|
211
|
+
operator()(S&& s, F&& f, N&& n) const
|
212
|
+
ASIO_NOEXCEPT_IF((
|
213
|
+
call_traits<S, void(F, N)>::is_noexcept))
|
214
|
+
{
|
215
|
+
return ASIO_MOVE_CAST(S)(s).bulk_execute(
|
216
|
+
ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n));
|
217
|
+
}
|
218
|
+
|
219
|
+
template <typename S, typename F, typename N>
|
220
|
+
ASIO_CONSTEXPR typename enable_if<
|
221
|
+
call_traits<S, void(F, N)>::overload == call_free,
|
222
|
+
typename call_traits<S, void(F, N)>::result_type
|
223
|
+
>::type
|
224
|
+
operator()(S&& s, F&& f, N&& n) const
|
225
|
+
ASIO_NOEXCEPT_IF((
|
226
|
+
call_traits<S, void(F, N)>::is_noexcept))
|
227
|
+
{
|
228
|
+
return bulk_execute(ASIO_MOVE_CAST(S)(s),
|
229
|
+
ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n));
|
230
|
+
}
|
231
|
+
|
232
|
+
template <typename S, typename F, typename N>
|
233
|
+
ASIO_CONSTEXPR typename enable_if<
|
234
|
+
call_traits<S, void(F, N)>::overload == adapter,
|
235
|
+
typename call_traits<S, void(F, N)>::result_type
|
236
|
+
>::type
|
237
|
+
operator()(S&& s, F&& f, N&& n) const
|
238
|
+
ASIO_NOEXCEPT_IF((
|
239
|
+
call_traits<S, void(F, N)>::is_noexcept))
|
240
|
+
{
|
241
|
+
return typename call_traits<S, void(F, N)>::result_type(
|
242
|
+
ASIO_MOVE_CAST(S)(s), ASIO_MOVE_CAST(F)(f),
|
243
|
+
ASIO_MOVE_CAST(N)(n));
|
244
|
+
}
|
245
|
+
#else // defined(ASIO_HAS_MOVE)
|
246
|
+
template <typename S, typename F, typename N>
|
247
|
+
ASIO_CONSTEXPR typename enable_if<
|
248
|
+
call_traits<S, void(const F&, const N&)>::overload == call_member,
|
249
|
+
typename call_traits<S, void(const F&, const N&)>::result_type
|
250
|
+
>::type
|
251
|
+
operator()(S& s, const F& f, const N& n) const
|
252
|
+
ASIO_NOEXCEPT_IF((
|
253
|
+
call_traits<S, void(const F&, const N&)>::is_noexcept))
|
254
|
+
{
|
255
|
+
return s.bulk_execute(ASIO_MOVE_CAST(F)(f),
|
256
|
+
ASIO_MOVE_CAST(N)(n));
|
257
|
+
}
|
258
|
+
|
259
|
+
template <typename S, typename F, typename N>
|
260
|
+
ASIO_CONSTEXPR typename enable_if<
|
261
|
+
call_traits<S, void(const F&, const N&)>::overload == call_member,
|
262
|
+
typename call_traits<S, void(const F&, const N&)>::result_type
|
263
|
+
>::type
|
264
|
+
operator()(const S& s, const F& f, const N& n) const
|
265
|
+
ASIO_NOEXCEPT_IF((
|
266
|
+
call_traits<S, void(const F&, const N&)>::is_noexcept))
|
267
|
+
{
|
268
|
+
return s.bulk_execute(ASIO_MOVE_CAST(F)(f),
|
269
|
+
ASIO_MOVE_CAST(N)(n));
|
270
|
+
}
|
271
|
+
|
272
|
+
template <typename S, typename F, typename N>
|
273
|
+
ASIO_CONSTEXPR typename enable_if<
|
274
|
+
call_traits<S, void(const F&, const N&)>::overload == call_free,
|
275
|
+
typename call_traits<S, void(const F&, const N&)>::result_type
|
276
|
+
>::type
|
277
|
+
operator()(S& s, const F& f, const N& n) const
|
278
|
+
ASIO_NOEXCEPT_IF((
|
279
|
+
call_traits<S, void(const F&, const N&)>::is_noexcept))
|
280
|
+
{
|
281
|
+
return bulk_execute(s, ASIO_MOVE_CAST(F)(f),
|
282
|
+
ASIO_MOVE_CAST(N)(n));
|
283
|
+
}
|
284
|
+
|
285
|
+
template <typename S, typename F, typename N>
|
286
|
+
ASIO_CONSTEXPR typename enable_if<
|
287
|
+
call_traits<S, void(const F&, const N&)>::overload == call_free,
|
288
|
+
typename call_traits<S, void(const F&, const N&)>::result_type
|
289
|
+
>::type
|
290
|
+
operator()(const S& s, const F& f, const N& n) const
|
291
|
+
ASIO_NOEXCEPT_IF((
|
292
|
+
call_traits<S, void(const F&, const N&)>::is_noexcept))
|
293
|
+
{
|
294
|
+
return bulk_execute(s, ASIO_MOVE_CAST(F)(f),
|
295
|
+
ASIO_MOVE_CAST(N)(n));
|
296
|
+
}
|
297
|
+
|
298
|
+
template <typename S, typename F, typename N>
|
299
|
+
ASIO_CONSTEXPR typename enable_if<
|
300
|
+
call_traits<S, void(const F&, const N&)>::overload == adapter,
|
301
|
+
typename call_traits<S, void(const F&, const N&)>::result_type
|
302
|
+
>::type
|
303
|
+
operator()(S& s, const F& f, const N& n) const
|
304
|
+
ASIO_NOEXCEPT_IF((
|
305
|
+
call_traits<S, void(const F&, const N&)>::is_noexcept))
|
306
|
+
{
|
307
|
+
return typename call_traits<S, void(const F&, const N&)>::result_type(
|
308
|
+
s, ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n));
|
309
|
+
}
|
310
|
+
|
311
|
+
template <typename S, typename F, typename N>
|
312
|
+
ASIO_CONSTEXPR typename enable_if<
|
313
|
+
call_traits<S, void(const F&, const N&)>::overload == adapter,
|
314
|
+
typename call_traits<S, void(const F&, const N&)>::result_type
|
315
|
+
>::type
|
316
|
+
operator()(const S& s, const F& f, const N& n) const
|
317
|
+
ASIO_NOEXCEPT_IF((
|
318
|
+
call_traits<S, void(const F&, const N&)>::is_noexcept))
|
319
|
+
{
|
320
|
+
return typename call_traits<S, void(const F&, const N&)>::result_type(
|
321
|
+
s, ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n));
|
322
|
+
}
|
323
|
+
#endif // defined(ASIO_HAS_MOVE)
|
324
|
+
};
|
325
|
+
|
326
|
+
template <typename T = impl>
|
327
|
+
struct static_instance
|
328
|
+
{
|
329
|
+
static const T instance;
|
330
|
+
};
|
331
|
+
|
332
|
+
template <typename T>
|
333
|
+
const T static_instance<T>::instance = {};
|
334
|
+
|
335
|
+
} // namespace asio_execution_bulk_execute_fn
|
336
|
+
namespace asio {
|
337
|
+
namespace execution {
|
338
|
+
namespace {
|
339
|
+
|
340
|
+
static ASIO_CONSTEXPR
|
341
|
+
const asio_execution_bulk_execute_fn::impl& bulk_execute =
|
342
|
+
asio_execution_bulk_execute_fn::static_instance<>::instance;
|
343
|
+
|
344
|
+
} // namespace
|
345
|
+
|
346
|
+
template <typename S, typename F, typename N>
|
347
|
+
struct can_bulk_execute :
|
348
|
+
integral_constant<bool,
|
349
|
+
asio_execution_bulk_execute_fn::call_traits<S, void(F, N)>::overload !=
|
350
|
+
asio_execution_bulk_execute_fn::ill_formed>
|
351
|
+
{
|
352
|
+
};
|
353
|
+
|
354
|
+
#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
355
|
+
|
356
|
+
template <typename S, typename F, typename N>
|
357
|
+
constexpr bool can_bulk_execute_v = can_bulk_execute<S, F, N>::value;
|
358
|
+
|
359
|
+
#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
360
|
+
|
361
|
+
template <typename S, typename F, typename N>
|
362
|
+
struct is_nothrow_bulk_execute :
|
363
|
+
integral_constant<bool,
|
364
|
+
asio_execution_bulk_execute_fn::call_traits<S, void(F, N)>::is_noexcept>
|
365
|
+
{
|
366
|
+
};
|
367
|
+
|
368
|
+
#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
369
|
+
|
370
|
+
template <typename S, typename F, typename N>
|
371
|
+
constexpr bool is_nothrow_bulk_execute_v
|
372
|
+
= is_nothrow_bulk_execute<S, F, N>::value;
|
373
|
+
|
374
|
+
#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
375
|
+
|
376
|
+
template <typename S, typename F, typename N>
|
377
|
+
struct bulk_execute_result
|
378
|
+
{
|
379
|
+
typedef typename asio_execution_bulk_execute_fn::call_traits<
|
380
|
+
S, void(F, N)>::result_type type;
|
381
|
+
};
|
382
|
+
|
383
|
+
} // namespace execution
|
384
|
+
} // namespace asio
|
385
|
+
|
386
|
+
#endif // defined(GENERATING_DOCUMENTATION)
|
387
|
+
|
388
|
+
#include "asio/detail/pop_options.hpp"
|
389
|
+
|
390
|
+
#endif // ASIO_EXECUTION_BULK_EXECUTE_HPP
|
@@ -0,0 +1,1018 @@
|
|
1
|
+
//
|
2
|
+
// execution/bulk_guarantee.hpp
|
3
|
+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
4
|
+
//
|
5
|
+
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
6
|
+
//
|
7
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
8
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
9
|
+
//
|
10
|
+
|
11
|
+
#ifndef ASIO_EXECUTION_BULK_GUARANTEE_HPP
|
12
|
+
#define ASIO_EXECUTION_BULK_GUARANTEE_HPP
|
13
|
+
|
14
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
15
|
+
# pragma once
|
16
|
+
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
17
|
+
|
18
|
+
#include "asio/detail/config.hpp"
|
19
|
+
#include "asio/detail/type_traits.hpp"
|
20
|
+
#include "asio/execution/executor.hpp"
|
21
|
+
#include "asio/execution/scheduler.hpp"
|
22
|
+
#include "asio/execution/sender.hpp"
|
23
|
+
#include "asio/is_applicable_property.hpp"
|
24
|
+
#include "asio/query.hpp"
|
25
|
+
#include "asio/traits/query_free.hpp"
|
26
|
+
#include "asio/traits/query_member.hpp"
|
27
|
+
#include "asio/traits/query_static_constexpr_member.hpp"
|
28
|
+
#include "asio/traits/static_query.hpp"
|
29
|
+
#include "asio/traits/static_require.hpp"
|
30
|
+
|
31
|
+
#include "asio/detail/push_options.hpp"
|
32
|
+
|
33
|
+
namespace asio {
|
34
|
+
|
35
|
+
#if defined(GENERATING_DOCUMENTATION)
|
36
|
+
|
37
|
+
namespace execution {
|
38
|
+
|
39
|
+
/// A property to communicate the forward progress and ordering guarantees of
|
40
|
+
/// execution agents associated with the bulk execution.
|
41
|
+
struct bulk_guarantee_t
|
42
|
+
{
|
43
|
+
/// The bulk_guarantee_t property applies to executors, senders, and
|
44
|
+
/// schedulers.
|
45
|
+
template <typename T>
|
46
|
+
static constexpr bool is_applicable_property_v =
|
47
|
+
is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
|
48
|
+
|
49
|
+
/// The top-level bulk_guarantee_t property cannot be required.
|
50
|
+
static constexpr bool is_requirable = false;
|
51
|
+
|
52
|
+
/// The top-level bulk_guarantee_t property cannot be preferred.
|
53
|
+
static constexpr bool is_preferable = false;
|
54
|
+
|
55
|
+
/// The type returned by queries against an @c any_executor.
|
56
|
+
typedef bulk_guarantee_t polymorphic_query_result_type;
|
57
|
+
|
58
|
+
/// A sub-property that indicates that execution agents within the same bulk
|
59
|
+
/// execution may be parallelised and vectorised.
|
60
|
+
struct unsequenced_t
|
61
|
+
{
|
62
|
+
/// The bulk_guarantee_t::unsequenced_t property applies to executors,
|
63
|
+
/// senders, and schedulers.
|
64
|
+
template <typename T>
|
65
|
+
static constexpr bool is_applicable_property_v =
|
66
|
+
is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
|
67
|
+
|
68
|
+
/// The bulk_guarantee_t::unsequenced_t property can be required.
|
69
|
+
static constexpr bool is_requirable = true;
|
70
|
+
|
71
|
+
/// The bulk_guarantee_t::unsequenced_t property can be preferred.
|
72
|
+
static constexpr bool is_preferable = true;
|
73
|
+
|
74
|
+
/// The type returned by queries against an @c any_executor.
|
75
|
+
typedef bulk_guarantee_t polymorphic_query_result_type;
|
76
|
+
|
77
|
+
/// Default constructor.
|
78
|
+
constexpr unsequenced_t();
|
79
|
+
|
80
|
+
/// Get the value associated with a property object.
|
81
|
+
/**
|
82
|
+
* @returns unsequenced_t();
|
83
|
+
*/
|
84
|
+
static constexpr bulk_guarantee_t value();
|
85
|
+
};
|
86
|
+
|
87
|
+
/// A sub-property that indicates that execution agents within the same bulk
|
88
|
+
/// execution may not be parallelised and vectorised.
|
89
|
+
struct sequenced_t
|
90
|
+
{
|
91
|
+
/// The bulk_guarantee_t::sequenced_t property applies to executors,
|
92
|
+
/// senders, and schedulers.
|
93
|
+
template <typename T>
|
94
|
+
static constexpr bool is_applicable_property_v =
|
95
|
+
is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
|
96
|
+
|
97
|
+
/// The bulk_guarantee_t::sequenced_t property can be required.
|
98
|
+
static constexpr bool is_requirable = true;
|
99
|
+
|
100
|
+
/// The bulk_guarantee_t::sequenced_t property can be preferred.
|
101
|
+
static constexpr bool is_preferable = true;
|
102
|
+
|
103
|
+
/// The type returned by queries against an @c any_executor.
|
104
|
+
typedef bulk_guarantee_t polymorphic_query_result_type;
|
105
|
+
|
106
|
+
/// Default constructor.
|
107
|
+
constexpr sequenced_t();
|
108
|
+
|
109
|
+
/// Get the value associated with a property object.
|
110
|
+
/**
|
111
|
+
* @returns sequenced_t();
|
112
|
+
*/
|
113
|
+
static constexpr bulk_guarantee_t value();
|
114
|
+
};
|
115
|
+
|
116
|
+
/// A sub-property that indicates that execution agents within the same bulk
|
117
|
+
/// execution may be parallelised.
|
118
|
+
struct parallel_t
|
119
|
+
{
|
120
|
+
/// The bulk_guarantee_t::parallel_t property applies to executors,
|
121
|
+
/// senders, and schedulers.
|
122
|
+
template <typename T>
|
123
|
+
static constexpr bool is_applicable_property_v =
|
124
|
+
is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
|
125
|
+
|
126
|
+
/// The bulk_guarantee_t::parallel_t property can be required.
|
127
|
+
static constexpr bool is_requirable = true;
|
128
|
+
|
129
|
+
/// The bulk_guarantee_t::parallel_t property can be preferred.
|
130
|
+
static constexpr bool is_preferable = true;
|
131
|
+
|
132
|
+
/// The type returned by queries against an @c any_executor.
|
133
|
+
typedef bulk_guarantee_t polymorphic_query_result_type;
|
134
|
+
|
135
|
+
/// Default constructor.
|
136
|
+
constexpr parallel_t();
|
137
|
+
|
138
|
+
/// Get the value associated with a property object.
|
139
|
+
/**
|
140
|
+
* @returns parallel_t();
|
141
|
+
*/
|
142
|
+
static constexpr bulk_guarantee_t value();
|
143
|
+
};
|
144
|
+
|
145
|
+
/// A special value used for accessing the bulk_guarantee_t::unsequenced_t
|
146
|
+
/// property.
|
147
|
+
static constexpr unsequenced_t unsequenced;
|
148
|
+
|
149
|
+
/// A special value used for accessing the bulk_guarantee_t::sequenced_t
|
150
|
+
/// property.
|
151
|
+
static constexpr sequenced_t sequenced;
|
152
|
+
|
153
|
+
/// A special value used for accessing the bulk_guarantee_t::parallel_t
|
154
|
+
/// property.
|
155
|
+
static constexpr parallel_t parallel;
|
156
|
+
|
157
|
+
/// Default constructor.
|
158
|
+
constexpr bulk_guarantee_t();
|
159
|
+
|
160
|
+
/// Construct from a sub-property value.
|
161
|
+
constexpr bulk_guarantee_t(unsequenced_t);
|
162
|
+
|
163
|
+
/// Construct from a sub-property value.
|
164
|
+
constexpr bulk_guarantee_t(sequenced_t);
|
165
|
+
|
166
|
+
/// Construct from a sub-property value.
|
167
|
+
constexpr bulk_guarantee_t(parallel_t);
|
168
|
+
|
169
|
+
/// Compare property values for equality.
|
170
|
+
friend constexpr bool operator==(
|
171
|
+
const bulk_guarantee_t& a, const bulk_guarantee_t& b) noexcept;
|
172
|
+
|
173
|
+
/// Compare property values for inequality.
|
174
|
+
friend constexpr bool operator!=(
|
175
|
+
const bulk_guarantee_t& a, const bulk_guarantee_t& b) noexcept;
|
176
|
+
};
|
177
|
+
|
178
|
+
/// A special value used for accessing the bulk_guarantee_t property.
|
179
|
+
constexpr bulk_guarantee_t bulk_guarantee;
|
180
|
+
|
181
|
+
} // namespace execution
|
182
|
+
|
183
|
+
#else // defined(GENERATING_DOCUMENTATION)
|
184
|
+
|
185
|
+
namespace execution {
|
186
|
+
namespace detail {
|
187
|
+
namespace bulk_guarantee {
|
188
|
+
|
189
|
+
template <int I> struct unsequenced_t;
|
190
|
+
template <int I> struct sequenced_t;
|
191
|
+
template <int I> struct parallel_t;
|
192
|
+
|
193
|
+
} // namespace bulk_guarantee
|
194
|
+
|
195
|
+
template <int I = 0>
|
196
|
+
struct bulk_guarantee_t
|
197
|
+
{
|
198
|
+
#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
199
|
+
template <typename T>
|
200
|
+
ASIO_STATIC_CONSTEXPR(bool,
|
201
|
+
is_applicable_property_v = is_executor<T>::value
|
202
|
+
|| is_sender<T>::value || is_scheduler<T>::value);
|
203
|
+
#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
204
|
+
|
205
|
+
ASIO_STATIC_CONSTEXPR(bool, is_requirable = false);
|
206
|
+
ASIO_STATIC_CONSTEXPR(bool, is_preferable = false);
|
207
|
+
typedef bulk_guarantee_t polymorphic_query_result_type;
|
208
|
+
|
209
|
+
typedef detail::bulk_guarantee::unsequenced_t<I> unsequenced_t;
|
210
|
+
typedef detail::bulk_guarantee::sequenced_t<I> sequenced_t;
|
211
|
+
typedef detail::bulk_guarantee::parallel_t<I> parallel_t;
|
212
|
+
|
213
|
+
ASIO_CONSTEXPR bulk_guarantee_t()
|
214
|
+
: value_(-1)
|
215
|
+
{
|
216
|
+
}
|
217
|
+
|
218
|
+
ASIO_CONSTEXPR bulk_guarantee_t(unsequenced_t)
|
219
|
+
: value_(0)
|
220
|
+
{
|
221
|
+
}
|
222
|
+
|
223
|
+
ASIO_CONSTEXPR bulk_guarantee_t(sequenced_t)
|
224
|
+
: value_(1)
|
225
|
+
{
|
226
|
+
}
|
227
|
+
|
228
|
+
ASIO_CONSTEXPR bulk_guarantee_t(parallel_t)
|
229
|
+
: value_(2)
|
230
|
+
{
|
231
|
+
}
|
232
|
+
|
233
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
234
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
235
|
+
template <typename T>
|
236
|
+
static ASIO_CONSTEXPR
|
237
|
+
typename traits::query_static_constexpr_member<
|
238
|
+
T, bulk_guarantee_t>::result_type
|
239
|
+
static_query()
|
240
|
+
ASIO_NOEXCEPT_IF((
|
241
|
+
traits::query_static_constexpr_member<T, bulk_guarantee_t>::is_noexcept))
|
242
|
+
{
|
243
|
+
return traits::query_static_constexpr_member<T, bulk_guarantee_t>::value();
|
244
|
+
}
|
245
|
+
|
246
|
+
template <typename T>
|
247
|
+
static ASIO_CONSTEXPR
|
248
|
+
typename traits::static_query<T, unsequenced_t>::result_type
|
249
|
+
static_query(
|
250
|
+
typename enable_if<
|
251
|
+
!traits::query_static_constexpr_member<T, bulk_guarantee_t>::is_valid
|
252
|
+
&& !traits::query_member<T, bulk_guarantee_t>::is_valid
|
253
|
+
&& traits::static_query<T, unsequenced_t>::is_valid
|
254
|
+
>::type* = 0) ASIO_NOEXCEPT
|
255
|
+
{
|
256
|
+
return traits::static_query<T, unsequenced_t>::value();
|
257
|
+
}
|
258
|
+
|
259
|
+
template <typename T>
|
260
|
+
static ASIO_CONSTEXPR
|
261
|
+
typename traits::static_query<T, sequenced_t>::result_type
|
262
|
+
static_query(
|
263
|
+
typename enable_if<
|
264
|
+
!traits::query_static_constexpr_member<T, bulk_guarantee_t>::is_valid
|
265
|
+
&& !traits::query_member<T, bulk_guarantee_t>::is_valid
|
266
|
+
&& !traits::static_query<T, unsequenced_t>::is_valid
|
267
|
+
&& traits::static_query<T, sequenced_t>::is_valid
|
268
|
+
>::type* = 0) ASIO_NOEXCEPT
|
269
|
+
{
|
270
|
+
return traits::static_query<T, sequenced_t>::value();
|
271
|
+
}
|
272
|
+
|
273
|
+
template <typename T>
|
274
|
+
static ASIO_CONSTEXPR
|
275
|
+
typename traits::static_query<T, parallel_t>::result_type
|
276
|
+
static_query(
|
277
|
+
typename enable_if<
|
278
|
+
!traits::query_static_constexpr_member<T, bulk_guarantee_t>::is_valid
|
279
|
+
&& !traits::query_member<T, bulk_guarantee_t>::is_valid
|
280
|
+
&& !traits::static_query<T, unsequenced_t>::is_valid
|
281
|
+
&& !traits::static_query<T, sequenced_t>::is_valid
|
282
|
+
&& traits::static_query<T, parallel_t>::is_valid
|
283
|
+
>::type* = 0) ASIO_NOEXCEPT
|
284
|
+
{
|
285
|
+
return traits::static_query<T, parallel_t>::value();
|
286
|
+
}
|
287
|
+
|
288
|
+
template <typename E,
|
289
|
+
typename T = decltype(bulk_guarantee_t::static_query<E>())>
|
290
|
+
static ASIO_CONSTEXPR const T static_query_v
|
291
|
+
= bulk_guarantee_t::static_query<E>();
|
292
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
293
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
294
|
+
|
295
|
+
friend ASIO_CONSTEXPR bool operator==(
|
296
|
+
const bulk_guarantee_t& a, const bulk_guarantee_t& b)
|
297
|
+
{
|
298
|
+
return a.value_ == b.value_;
|
299
|
+
}
|
300
|
+
|
301
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
302
|
+
const bulk_guarantee_t& a, const bulk_guarantee_t& b)
|
303
|
+
{
|
304
|
+
return a.value_ != b.value_;
|
305
|
+
}
|
306
|
+
|
307
|
+
struct convertible_from_bulk_guarantee_t
|
308
|
+
{
|
309
|
+
ASIO_CONSTEXPR convertible_from_bulk_guarantee_t(bulk_guarantee_t) {}
|
310
|
+
};
|
311
|
+
|
312
|
+
template <typename Executor>
|
313
|
+
friend ASIO_CONSTEXPR bulk_guarantee_t query(
|
314
|
+
const Executor& ex, convertible_from_bulk_guarantee_t,
|
315
|
+
typename enable_if<
|
316
|
+
can_query<const Executor&, unsequenced_t>::value
|
317
|
+
>::type* = 0)
|
318
|
+
#if !defined(__clang__) // Clang crashes if noexcept is used here.
|
319
|
+
#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified.
|
320
|
+
ASIO_NOEXCEPT_IF((
|
321
|
+
is_nothrow_query<const Executor&,
|
322
|
+
bulk_guarantee_t<>::unsequenced_t>::value))
|
323
|
+
#else // defined(ASIO_MSVC)
|
324
|
+
ASIO_NOEXCEPT_IF((
|
325
|
+
is_nothrow_query<const Executor&, unsequenced_t>::value))
|
326
|
+
#endif // defined(ASIO_MSVC)
|
327
|
+
#endif // !defined(__clang__)
|
328
|
+
{
|
329
|
+
return asio::query(ex, unsequenced_t());
|
330
|
+
}
|
331
|
+
|
332
|
+
template <typename Executor>
|
333
|
+
friend ASIO_CONSTEXPR bulk_guarantee_t query(
|
334
|
+
const Executor& ex, convertible_from_bulk_guarantee_t,
|
335
|
+
typename enable_if<
|
336
|
+
!can_query<const Executor&, unsequenced_t>::value
|
337
|
+
&& can_query<const Executor&, sequenced_t>::value
|
338
|
+
>::type* = 0)
|
339
|
+
#if !defined(__clang__) // Clang crashes if noexcept is used here.
|
340
|
+
#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified.
|
341
|
+
ASIO_NOEXCEPT_IF((
|
342
|
+
is_nothrow_query<const Executor&,
|
343
|
+
bulk_guarantee_t<>::sequenced_t>::value))
|
344
|
+
#else // defined(ASIO_MSVC)
|
345
|
+
ASIO_NOEXCEPT_IF((
|
346
|
+
is_nothrow_query<const Executor&, sequenced_t>::value))
|
347
|
+
#endif // defined(ASIO_MSVC)
|
348
|
+
#endif // !defined(__clang__)
|
349
|
+
{
|
350
|
+
return asio::query(ex, sequenced_t());
|
351
|
+
}
|
352
|
+
|
353
|
+
template <typename Executor>
|
354
|
+
friend ASIO_CONSTEXPR bulk_guarantee_t query(
|
355
|
+
const Executor& ex, convertible_from_bulk_guarantee_t,
|
356
|
+
typename enable_if<
|
357
|
+
!can_query<const Executor&, unsequenced_t>::value
|
358
|
+
&& !can_query<const Executor&, sequenced_t>::value
|
359
|
+
&& can_query<const Executor&, parallel_t>::value
|
360
|
+
>::type* = 0)
|
361
|
+
#if !defined(__clang__) // Clang crashes if noexcept is used here.
|
362
|
+
#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified.
|
363
|
+
ASIO_NOEXCEPT_IF((
|
364
|
+
is_nothrow_query<const Executor&, bulk_guarantee_t<>::parallel_t>::value))
|
365
|
+
#else // defined(ASIO_MSVC)
|
366
|
+
ASIO_NOEXCEPT_IF((
|
367
|
+
is_nothrow_query<const Executor&, parallel_t>::value))
|
368
|
+
#endif // defined(ASIO_MSVC)
|
369
|
+
#endif // !defined(__clang__)
|
370
|
+
{
|
371
|
+
return asio::query(ex, parallel_t());
|
372
|
+
}
|
373
|
+
|
374
|
+
ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(unsequenced_t, unsequenced);
|
375
|
+
ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(sequenced_t, sequenced);
|
376
|
+
ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(parallel_t, parallel);
|
377
|
+
|
378
|
+
#if !defined(ASIO_HAS_CONSTEXPR)
|
379
|
+
static const bulk_guarantee_t instance;
|
380
|
+
#endif // !defined(ASIO_HAS_CONSTEXPR)
|
381
|
+
|
382
|
+
private:
|
383
|
+
int value_;
|
384
|
+
};
|
385
|
+
|
386
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
387
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
388
|
+
template <int I> template <typename E, typename T>
|
389
|
+
const T bulk_guarantee_t<I>::static_query_v;
|
390
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
391
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
392
|
+
|
393
|
+
#if !defined(ASIO_HAS_CONSTEXPR)
|
394
|
+
template <int I>
|
395
|
+
const bulk_guarantee_t<I> bulk_guarantee_t<I>::instance;
|
396
|
+
#endif
|
397
|
+
|
398
|
+
template <int I>
|
399
|
+
const typename bulk_guarantee_t<I>::unsequenced_t
|
400
|
+
bulk_guarantee_t<I>::unsequenced;
|
401
|
+
|
402
|
+
template <int I>
|
403
|
+
const typename bulk_guarantee_t<I>::sequenced_t
|
404
|
+
bulk_guarantee_t<I>::sequenced;
|
405
|
+
|
406
|
+
template <int I>
|
407
|
+
const typename bulk_guarantee_t<I>::parallel_t
|
408
|
+
bulk_guarantee_t<I>::parallel;
|
409
|
+
|
410
|
+
namespace bulk_guarantee {
|
411
|
+
|
412
|
+
template <int I = 0>
|
413
|
+
struct unsequenced_t
|
414
|
+
{
|
415
|
+
#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
416
|
+
template <typename T>
|
417
|
+
ASIO_STATIC_CONSTEXPR(bool,
|
418
|
+
is_applicable_property_v = is_executor<T>::value
|
419
|
+
|| is_sender<T>::value || is_scheduler<T>::value);
|
420
|
+
#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
421
|
+
|
422
|
+
ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
|
423
|
+
ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
|
424
|
+
typedef bulk_guarantee_t<I> polymorphic_query_result_type;
|
425
|
+
|
426
|
+
ASIO_CONSTEXPR unsequenced_t()
|
427
|
+
{
|
428
|
+
}
|
429
|
+
|
430
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
431
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
432
|
+
template <typename T>
|
433
|
+
static ASIO_CONSTEXPR
|
434
|
+
typename traits::query_static_constexpr_member<T, unsequenced_t>::result_type
|
435
|
+
static_query()
|
436
|
+
ASIO_NOEXCEPT_IF((
|
437
|
+
traits::query_static_constexpr_member<T, unsequenced_t>::is_noexcept))
|
438
|
+
{
|
439
|
+
return traits::query_static_constexpr_member<T, unsequenced_t>::value();
|
440
|
+
}
|
441
|
+
|
442
|
+
template <typename T>
|
443
|
+
static ASIO_CONSTEXPR unsequenced_t static_query(
|
444
|
+
typename enable_if<
|
445
|
+
!traits::query_static_constexpr_member<T, unsequenced_t>::is_valid
|
446
|
+
&& !traits::query_member<T, unsequenced_t>::is_valid
|
447
|
+
&& !traits::query_free<T, unsequenced_t>::is_valid
|
448
|
+
&& !can_query<T, sequenced_t<I> >::value
|
449
|
+
&& !can_query<T, parallel_t<I> >::value
|
450
|
+
>::type* = 0) ASIO_NOEXCEPT
|
451
|
+
{
|
452
|
+
return unsequenced_t();
|
453
|
+
}
|
454
|
+
|
455
|
+
template <typename E, typename T = decltype(unsequenced_t::static_query<E>())>
|
456
|
+
static ASIO_CONSTEXPR const T static_query_v
|
457
|
+
= unsequenced_t::static_query<E>();
|
458
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
459
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
460
|
+
|
461
|
+
static ASIO_CONSTEXPR bulk_guarantee_t<I> value()
|
462
|
+
{
|
463
|
+
return unsequenced_t();
|
464
|
+
}
|
465
|
+
|
466
|
+
friend ASIO_CONSTEXPR bool operator==(
|
467
|
+
const unsequenced_t&, const unsequenced_t&)
|
468
|
+
{
|
469
|
+
return true;
|
470
|
+
}
|
471
|
+
|
472
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
473
|
+
const unsequenced_t&, const unsequenced_t&)
|
474
|
+
{
|
475
|
+
return false;
|
476
|
+
}
|
477
|
+
|
478
|
+
friend ASIO_CONSTEXPR bool operator==(
|
479
|
+
const unsequenced_t&, const sequenced_t<I>&)
|
480
|
+
{
|
481
|
+
return false;
|
482
|
+
}
|
483
|
+
|
484
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
485
|
+
const unsequenced_t&, const sequenced_t<I>&)
|
486
|
+
{
|
487
|
+
return true;
|
488
|
+
}
|
489
|
+
|
490
|
+
friend ASIO_CONSTEXPR bool operator==(
|
491
|
+
const unsequenced_t&, const parallel_t<I>&)
|
492
|
+
{
|
493
|
+
return false;
|
494
|
+
}
|
495
|
+
|
496
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
497
|
+
const unsequenced_t&, const parallel_t<I>&)
|
498
|
+
{
|
499
|
+
return true;
|
500
|
+
}
|
501
|
+
};
|
502
|
+
|
503
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
504
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
505
|
+
template <int I> template <typename E, typename T>
|
506
|
+
const T unsequenced_t<I>::static_query_v;
|
507
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
508
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
509
|
+
|
510
|
+
template <int I = 0>
|
511
|
+
struct sequenced_t
|
512
|
+
{
|
513
|
+
#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
514
|
+
template <typename T>
|
515
|
+
ASIO_STATIC_CONSTEXPR(bool,
|
516
|
+
is_applicable_property_v = is_executor<T>::value
|
517
|
+
|| is_sender<T>::value || is_scheduler<T>::value);
|
518
|
+
#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
519
|
+
|
520
|
+
ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
|
521
|
+
ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
|
522
|
+
typedef bulk_guarantee_t<I> polymorphic_query_result_type;
|
523
|
+
|
524
|
+
ASIO_CONSTEXPR sequenced_t()
|
525
|
+
{
|
526
|
+
}
|
527
|
+
|
528
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
529
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
530
|
+
template <typename T>
|
531
|
+
static ASIO_CONSTEXPR
|
532
|
+
typename traits::query_static_constexpr_member<T, sequenced_t>::result_type
|
533
|
+
static_query()
|
534
|
+
ASIO_NOEXCEPT_IF((
|
535
|
+
traits::query_static_constexpr_member<T, sequenced_t>::is_noexcept))
|
536
|
+
{
|
537
|
+
return traits::query_static_constexpr_member<T, sequenced_t>::value();
|
538
|
+
}
|
539
|
+
|
540
|
+
template <typename E, typename T = decltype(sequenced_t::static_query<E>())>
|
541
|
+
static ASIO_CONSTEXPR const T static_query_v
|
542
|
+
= sequenced_t::static_query<E>();
|
543
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
544
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
545
|
+
|
546
|
+
static ASIO_CONSTEXPR bulk_guarantee_t<I> value()
|
547
|
+
{
|
548
|
+
return sequenced_t();
|
549
|
+
}
|
550
|
+
|
551
|
+
friend ASIO_CONSTEXPR bool operator==(
|
552
|
+
const sequenced_t&, const sequenced_t&)
|
553
|
+
{
|
554
|
+
return true;
|
555
|
+
}
|
556
|
+
|
557
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
558
|
+
const sequenced_t&, const sequenced_t&)
|
559
|
+
{
|
560
|
+
return false;
|
561
|
+
}
|
562
|
+
|
563
|
+
friend ASIO_CONSTEXPR bool operator==(
|
564
|
+
const sequenced_t&, const unsequenced_t<I>&)
|
565
|
+
{
|
566
|
+
return false;
|
567
|
+
}
|
568
|
+
|
569
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
570
|
+
const sequenced_t&, const unsequenced_t<I>&)
|
571
|
+
{
|
572
|
+
return true;
|
573
|
+
}
|
574
|
+
|
575
|
+
friend ASIO_CONSTEXPR bool operator==(
|
576
|
+
const sequenced_t&, const parallel_t<I>&)
|
577
|
+
{
|
578
|
+
return false;
|
579
|
+
}
|
580
|
+
|
581
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
582
|
+
const sequenced_t&, const parallel_t<I>&)
|
583
|
+
{
|
584
|
+
return true;
|
585
|
+
}
|
586
|
+
};
|
587
|
+
|
588
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
589
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
590
|
+
template <int I> template <typename E, typename T>
|
591
|
+
const T sequenced_t<I>::static_query_v;
|
592
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
593
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
594
|
+
|
595
|
+
template <int I>
|
596
|
+
struct parallel_t
|
597
|
+
{
|
598
|
+
#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
599
|
+
template <typename T>
|
600
|
+
ASIO_STATIC_CONSTEXPR(bool,
|
601
|
+
is_applicable_property_v = is_executor<T>::value
|
602
|
+
|| is_sender<T>::value || is_scheduler<T>::value);
|
603
|
+
#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
604
|
+
|
605
|
+
ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
|
606
|
+
ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
|
607
|
+
typedef bulk_guarantee_t<I> polymorphic_query_result_type;
|
608
|
+
|
609
|
+
ASIO_CONSTEXPR parallel_t()
|
610
|
+
{
|
611
|
+
}
|
612
|
+
|
613
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
614
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
615
|
+
template <typename T>
|
616
|
+
static ASIO_CONSTEXPR
|
617
|
+
typename traits::query_static_constexpr_member<T, parallel_t>::result_type
|
618
|
+
static_query()
|
619
|
+
ASIO_NOEXCEPT_IF((
|
620
|
+
traits::query_static_constexpr_member<T, parallel_t>::is_noexcept))
|
621
|
+
{
|
622
|
+
return traits::query_static_constexpr_member<T, parallel_t>::value();
|
623
|
+
}
|
624
|
+
|
625
|
+
template <typename E, typename T = decltype(parallel_t::static_query<E>())>
|
626
|
+
static ASIO_CONSTEXPR const T static_query_v
|
627
|
+
= parallel_t::static_query<E>();
|
628
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
629
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
630
|
+
|
631
|
+
static ASIO_CONSTEXPR bulk_guarantee_t<I> value()
|
632
|
+
{
|
633
|
+
return parallel_t();
|
634
|
+
}
|
635
|
+
|
636
|
+
friend ASIO_CONSTEXPR bool operator==(
|
637
|
+
const parallel_t&, const parallel_t&)
|
638
|
+
{
|
639
|
+
return true;
|
640
|
+
}
|
641
|
+
|
642
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
643
|
+
const parallel_t&, const parallel_t&)
|
644
|
+
{
|
645
|
+
return false;
|
646
|
+
}
|
647
|
+
|
648
|
+
friend ASIO_CONSTEXPR bool operator==(
|
649
|
+
const parallel_t&, const unsequenced_t<I>&)
|
650
|
+
{
|
651
|
+
return false;
|
652
|
+
}
|
653
|
+
|
654
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
655
|
+
const parallel_t&, const unsequenced_t<I>&)
|
656
|
+
{
|
657
|
+
return true;
|
658
|
+
}
|
659
|
+
|
660
|
+
friend ASIO_CONSTEXPR bool operator==(
|
661
|
+
const parallel_t&, const sequenced_t<I>&)
|
662
|
+
{
|
663
|
+
return false;
|
664
|
+
}
|
665
|
+
|
666
|
+
friend ASIO_CONSTEXPR bool operator!=(
|
667
|
+
const parallel_t&, const sequenced_t<I>&)
|
668
|
+
{
|
669
|
+
return true;
|
670
|
+
}
|
671
|
+
};
|
672
|
+
|
673
|
+
#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
674
|
+
&& defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
675
|
+
template <int I> template <typename E, typename T>
|
676
|
+
const T parallel_t<I>::static_query_v;
|
677
|
+
#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
678
|
+
// && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
679
|
+
|
680
|
+
} // namespace bulk_guarantee
|
681
|
+
} // namespace detail
|
682
|
+
|
683
|
+
typedef detail::bulk_guarantee_t<> bulk_guarantee_t;
|
684
|
+
|
685
|
+
#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
|
686
|
+
constexpr bulk_guarantee_t bulk_guarantee;
|
687
|
+
#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
|
688
|
+
namespace { static const bulk_guarantee_t&
|
689
|
+
bulk_guarantee = bulk_guarantee_t::instance; }
|
690
|
+
#endif
|
691
|
+
|
692
|
+
} // namespace execution
|
693
|
+
|
694
|
+
#if !defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
695
|
+
|
696
|
+
template <typename T>
|
697
|
+
struct is_applicable_property<T, execution::bulk_guarantee_t>
|
698
|
+
: integral_constant<bool,
|
699
|
+
execution::is_executor<T>::value
|
700
|
+
|| execution::is_sender<T>::value
|
701
|
+
|| execution::is_scheduler<T>::value>
|
702
|
+
{
|
703
|
+
};
|
704
|
+
|
705
|
+
template <typename T>
|
706
|
+
struct is_applicable_property<T, execution::bulk_guarantee_t::unsequenced_t>
|
707
|
+
: integral_constant<bool,
|
708
|
+
execution::is_executor<T>::value
|
709
|
+
|| execution::is_sender<T>::value
|
710
|
+
|| execution::is_scheduler<T>::value>
|
711
|
+
{
|
712
|
+
};
|
713
|
+
|
714
|
+
template <typename T>
|
715
|
+
struct is_applicable_property<T, execution::bulk_guarantee_t::sequenced_t>
|
716
|
+
: integral_constant<bool,
|
717
|
+
execution::is_executor<T>::value
|
718
|
+
|| execution::is_sender<T>::value
|
719
|
+
|| execution::is_scheduler<T>::value>
|
720
|
+
{
|
721
|
+
};
|
722
|
+
|
723
|
+
template <typename T>
|
724
|
+
struct is_applicable_property<T, execution::bulk_guarantee_t::parallel_t>
|
725
|
+
: integral_constant<bool,
|
726
|
+
execution::is_executor<T>::value
|
727
|
+
|| execution::is_sender<T>::value
|
728
|
+
|| execution::is_scheduler<T>::value>
|
729
|
+
{
|
730
|
+
};
|
731
|
+
|
732
|
+
#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES)
|
733
|
+
|
734
|
+
namespace traits {
|
735
|
+
|
736
|
+
#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
|
737
|
+
|
738
|
+
template <typename T>
|
739
|
+
struct query_free_default<T, execution::bulk_guarantee_t,
|
740
|
+
typename enable_if<
|
741
|
+
can_query<T, execution::bulk_guarantee_t::unsequenced_t>::value
|
742
|
+
>::type>
|
743
|
+
{
|
744
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
745
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept =
|
746
|
+
(is_nothrow_query<T, execution::bulk_guarantee_t::unsequenced_t>::value));
|
747
|
+
|
748
|
+
typedef execution::bulk_guarantee_t result_type;
|
749
|
+
};
|
750
|
+
|
751
|
+
template <typename T>
|
752
|
+
struct query_free_default<T, execution::bulk_guarantee_t,
|
753
|
+
typename enable_if<
|
754
|
+
!can_query<T, execution::bulk_guarantee_t::unsequenced_t>::value
|
755
|
+
&& can_query<T, execution::bulk_guarantee_t::sequenced_t>::value
|
756
|
+
>::type>
|
757
|
+
{
|
758
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
759
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept =
|
760
|
+
(is_nothrow_query<T, execution::bulk_guarantee_t::sequenced_t>::value));
|
761
|
+
|
762
|
+
typedef execution::bulk_guarantee_t result_type;
|
763
|
+
};
|
764
|
+
|
765
|
+
template <typename T>
|
766
|
+
struct query_free_default<T, execution::bulk_guarantee_t,
|
767
|
+
typename enable_if<
|
768
|
+
!can_query<T, execution::bulk_guarantee_t::unsequenced_t>::value
|
769
|
+
&& !can_query<T, execution::bulk_guarantee_t::sequenced_t>::value
|
770
|
+
&& can_query<T, execution::bulk_guarantee_t::parallel_t>::value
|
771
|
+
>::type>
|
772
|
+
{
|
773
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
774
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept =
|
775
|
+
(is_nothrow_query<T, execution::bulk_guarantee_t::parallel_t>::value));
|
776
|
+
|
777
|
+
typedef execution::bulk_guarantee_t result_type;
|
778
|
+
};
|
779
|
+
|
780
|
+
#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
|
781
|
+
|
782
|
+
#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
|
783
|
+
|| !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
784
|
+
|
785
|
+
template <typename T>
|
786
|
+
struct static_query<T, execution::bulk_guarantee_t,
|
787
|
+
typename enable_if<
|
788
|
+
traits::query_static_constexpr_member<T,
|
789
|
+
execution::bulk_guarantee_t>::is_valid
|
790
|
+
>::type>
|
791
|
+
{
|
792
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
793
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
794
|
+
|
795
|
+
typedef typename traits::query_static_constexpr_member<T,
|
796
|
+
execution::bulk_guarantee_t>::result_type result_type;
|
797
|
+
|
798
|
+
static ASIO_CONSTEXPR result_type value()
|
799
|
+
{
|
800
|
+
return traits::query_static_constexpr_member<T,
|
801
|
+
execution::bulk_guarantee_t>::value();
|
802
|
+
}
|
803
|
+
};
|
804
|
+
|
805
|
+
template <typename T>
|
806
|
+
struct static_query<T, execution::bulk_guarantee_t,
|
807
|
+
typename enable_if<
|
808
|
+
!traits::query_static_constexpr_member<T,
|
809
|
+
execution::bulk_guarantee_t>::is_valid
|
810
|
+
&& !traits::query_member<T,
|
811
|
+
execution::bulk_guarantee_t>::is_valid
|
812
|
+
&& traits::static_query<T,
|
813
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
814
|
+
>::type>
|
815
|
+
{
|
816
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
817
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
818
|
+
|
819
|
+
typedef typename traits::static_query<T,
|
820
|
+
execution::bulk_guarantee_t::unsequenced_t>::result_type result_type;
|
821
|
+
|
822
|
+
static ASIO_CONSTEXPR result_type value()
|
823
|
+
{
|
824
|
+
return traits::static_query<T,
|
825
|
+
execution::bulk_guarantee_t::unsequenced_t>::value();
|
826
|
+
}
|
827
|
+
};
|
828
|
+
|
829
|
+
template <typename T>
|
830
|
+
struct static_query<T, execution::bulk_guarantee_t,
|
831
|
+
typename enable_if<
|
832
|
+
!traits::query_static_constexpr_member<T,
|
833
|
+
execution::bulk_guarantee_t>::is_valid
|
834
|
+
&& !traits::query_member<T,
|
835
|
+
execution::bulk_guarantee_t>::is_valid
|
836
|
+
&& !traits::static_query<T,
|
837
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
838
|
+
&& traits::static_query<T,
|
839
|
+
execution::bulk_guarantee_t::sequenced_t>::is_valid
|
840
|
+
>::type>
|
841
|
+
{
|
842
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
843
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
844
|
+
|
845
|
+
typedef typename traits::static_query<T,
|
846
|
+
execution::bulk_guarantee_t::sequenced_t>::result_type result_type;
|
847
|
+
|
848
|
+
static ASIO_CONSTEXPR result_type value()
|
849
|
+
{
|
850
|
+
return traits::static_query<T,
|
851
|
+
execution::bulk_guarantee_t::sequenced_t>::value();
|
852
|
+
}
|
853
|
+
};
|
854
|
+
|
855
|
+
template <typename T>
|
856
|
+
struct static_query<T, execution::bulk_guarantee_t,
|
857
|
+
typename enable_if<
|
858
|
+
!traits::query_static_constexpr_member<T,
|
859
|
+
execution::bulk_guarantee_t>::is_valid
|
860
|
+
&& !traits::query_member<T,
|
861
|
+
execution::bulk_guarantee_t>::is_valid
|
862
|
+
&& !traits::static_query<T,
|
863
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
864
|
+
&& !traits::static_query<T,
|
865
|
+
execution::bulk_guarantee_t::sequenced_t>::is_valid
|
866
|
+
&& traits::static_query<T,
|
867
|
+
execution::bulk_guarantee_t::parallel_t>::is_valid
|
868
|
+
>::type>
|
869
|
+
{
|
870
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
871
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
872
|
+
|
873
|
+
typedef typename traits::static_query<T,
|
874
|
+
execution::bulk_guarantee_t::parallel_t>::result_type result_type;
|
875
|
+
|
876
|
+
static ASIO_CONSTEXPR result_type value()
|
877
|
+
{
|
878
|
+
return traits::static_query<T,
|
879
|
+
execution::bulk_guarantee_t::parallel_t>::value();
|
880
|
+
}
|
881
|
+
};
|
882
|
+
|
883
|
+
template <typename T>
|
884
|
+
struct static_query<T, execution::bulk_guarantee_t::unsequenced_t,
|
885
|
+
typename enable_if<
|
886
|
+
traits::query_static_constexpr_member<T,
|
887
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
888
|
+
>::type>
|
889
|
+
{
|
890
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
891
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
892
|
+
|
893
|
+
typedef typename traits::query_static_constexpr_member<T,
|
894
|
+
execution::bulk_guarantee_t::unsequenced_t>::result_type result_type;
|
895
|
+
|
896
|
+
static ASIO_CONSTEXPR result_type value()
|
897
|
+
{
|
898
|
+
return traits::query_static_constexpr_member<T,
|
899
|
+
execution::bulk_guarantee_t::unsequenced_t>::value();
|
900
|
+
}
|
901
|
+
};
|
902
|
+
|
903
|
+
template <typename T>
|
904
|
+
struct static_query<T, execution::bulk_guarantee_t::unsequenced_t,
|
905
|
+
typename enable_if<
|
906
|
+
!traits::query_static_constexpr_member<T,
|
907
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
908
|
+
&& !traits::query_member<T,
|
909
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
910
|
+
&& !traits::query_free<T,
|
911
|
+
execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
912
|
+
&& !can_query<T, execution::bulk_guarantee_t::sequenced_t>::value
|
913
|
+
&& !can_query<T, execution::bulk_guarantee_t::parallel_t>::value
|
914
|
+
>::type>
|
915
|
+
{
|
916
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
917
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
918
|
+
|
919
|
+
typedef execution::bulk_guarantee_t::unsequenced_t result_type;
|
920
|
+
|
921
|
+
static ASIO_CONSTEXPR result_type value()
|
922
|
+
{
|
923
|
+
return result_type();
|
924
|
+
}
|
925
|
+
};
|
926
|
+
|
927
|
+
template <typename T>
|
928
|
+
struct static_query<T, execution::bulk_guarantee_t::sequenced_t,
|
929
|
+
typename enable_if<
|
930
|
+
traits::query_static_constexpr_member<T,
|
931
|
+
execution::bulk_guarantee_t::sequenced_t>::is_valid
|
932
|
+
>::type>
|
933
|
+
{
|
934
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
935
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
936
|
+
|
937
|
+
typedef typename traits::query_static_constexpr_member<T,
|
938
|
+
execution::bulk_guarantee_t::sequenced_t>::result_type result_type;
|
939
|
+
|
940
|
+
static ASIO_CONSTEXPR result_type value()
|
941
|
+
{
|
942
|
+
return traits::query_static_constexpr_member<T,
|
943
|
+
execution::bulk_guarantee_t::sequenced_t>::value();
|
944
|
+
}
|
945
|
+
};
|
946
|
+
|
947
|
+
template <typename T>
|
948
|
+
struct static_query<T, execution::bulk_guarantee_t::parallel_t,
|
949
|
+
typename enable_if<
|
950
|
+
traits::query_static_constexpr_member<T,
|
951
|
+
execution::bulk_guarantee_t::parallel_t>::is_valid
|
952
|
+
>::type>
|
953
|
+
{
|
954
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
955
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
956
|
+
|
957
|
+
typedef typename traits::query_static_constexpr_member<T,
|
958
|
+
execution::bulk_guarantee_t::parallel_t>::result_type result_type;
|
959
|
+
|
960
|
+
static ASIO_CONSTEXPR result_type value()
|
961
|
+
{
|
962
|
+
return traits::query_static_constexpr_member<T,
|
963
|
+
execution::bulk_guarantee_t::parallel_t>::value();
|
964
|
+
}
|
965
|
+
};
|
966
|
+
|
967
|
+
#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
|
968
|
+
// || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
|
969
|
+
|
970
|
+
#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT)
|
971
|
+
|
972
|
+
template <typename T>
|
973
|
+
struct static_require<T, execution::bulk_guarantee_t::unsequenced_t,
|
974
|
+
typename enable_if<
|
975
|
+
static_query<T, execution::bulk_guarantee_t::unsequenced_t>::is_valid
|
976
|
+
>::type>
|
977
|
+
{
|
978
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid =
|
979
|
+
(is_same<typename static_query<T,
|
980
|
+
execution::bulk_guarantee_t::unsequenced_t>::result_type,
|
981
|
+
execution::bulk_guarantee_t::unsequenced_t>::value));
|
982
|
+
};
|
983
|
+
|
984
|
+
template <typename T>
|
985
|
+
struct static_require<T, execution::bulk_guarantee_t::sequenced_t,
|
986
|
+
typename enable_if<
|
987
|
+
static_query<T, execution::bulk_guarantee_t::sequenced_t>::is_valid
|
988
|
+
>::type>
|
989
|
+
{
|
990
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid =
|
991
|
+
(is_same<typename static_query<T,
|
992
|
+
execution::bulk_guarantee_t::sequenced_t>::result_type,
|
993
|
+
execution::bulk_guarantee_t::sequenced_t>::value));
|
994
|
+
};
|
995
|
+
|
996
|
+
template <typename T>
|
997
|
+
struct static_require<T, execution::bulk_guarantee_t::parallel_t,
|
998
|
+
typename enable_if<
|
999
|
+
static_query<T, execution::bulk_guarantee_t::parallel_t>::is_valid
|
1000
|
+
>::type>
|
1001
|
+
{
|
1002
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid =
|
1003
|
+
(is_same<typename static_query<T,
|
1004
|
+
execution::bulk_guarantee_t::parallel_t>::result_type,
|
1005
|
+
execution::bulk_guarantee_t::parallel_t>::value));
|
1006
|
+
};
|
1007
|
+
|
1008
|
+
#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT)
|
1009
|
+
|
1010
|
+
} // namespace traits
|
1011
|
+
|
1012
|
+
#endif // defined(GENERATING_DOCUMENTATION)
|
1013
|
+
|
1014
|
+
} // namespace asio
|
1015
|
+
|
1016
|
+
#include "asio/detail/pop_options.hpp"
|
1017
|
+
|
1018
|
+
#endif // ASIO_EXECUTION_BULK_GUARANTEE_HPP
|