grpc 1.47.0 → 1.48.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "absl/strings/internal/str_format/checker.h"
|
26
26
|
#include "absl/strings/internal/str_format/parser.h"
|
27
27
|
#include "absl/types/span.h"
|
28
|
+
#include "absl/utility/utility.h"
|
28
29
|
|
29
30
|
namespace absl {
|
30
31
|
ABSL_NAMESPACE_BEGIN
|
@@ -87,6 +88,36 @@ class FormatSpecTemplate
|
|
87
88
|
: public MakeDependent<UntypedFormatSpec, Args...>::type {
|
88
89
|
using Base = typename MakeDependent<UntypedFormatSpec, Args...>::type;
|
89
90
|
|
91
|
+
template <bool res>
|
92
|
+
struct ErrorMaker {
|
93
|
+
constexpr bool operator()(int) const { return res; }
|
94
|
+
};
|
95
|
+
|
96
|
+
template <int i, int j>
|
97
|
+
static constexpr bool CheckArity(ErrorMaker<true> SpecifierCount = {},
|
98
|
+
ErrorMaker<i == j> ParametersPassed = {}) {
|
99
|
+
static_assert(SpecifierCount(i) == ParametersPassed(j),
|
100
|
+
"Number of arguments passed must match the number of "
|
101
|
+
"conversion specifiers.");
|
102
|
+
return true;
|
103
|
+
}
|
104
|
+
|
105
|
+
template <FormatConversionCharSet specified, FormatConversionCharSet passed,
|
106
|
+
int arg>
|
107
|
+
static constexpr bool CheckMatch(
|
108
|
+
ErrorMaker<Contains(specified, passed)> MismatchedArgumentNumber = {}) {
|
109
|
+
static_assert(MismatchedArgumentNumber(arg),
|
110
|
+
"Passed argument must match specified format.");
|
111
|
+
return true;
|
112
|
+
}
|
113
|
+
|
114
|
+
template <FormatConversionCharSet... C, size_t... I>
|
115
|
+
static bool CheckMatches(absl::index_sequence<I...>) {
|
116
|
+
bool res[] = {true, CheckMatch<Args, C, I + 1>()...};
|
117
|
+
(void)res;
|
118
|
+
return true;
|
119
|
+
}
|
120
|
+
|
90
121
|
public:
|
91
122
|
#ifdef ABSL_INTERNAL_ENABLE_FORMAT_CHECKER
|
92
123
|
|
@@ -112,7 +143,8 @@ class FormatSpecTemplate
|
|
112
143
|
template <typename T = void>
|
113
144
|
FormatSpecTemplate(string_view s) // NOLINT
|
114
145
|
__attribute__((enable_if(str_format_internal::EnsureConstexpr(s),
|
115
|
-
"constexpr trap")))
|
146
|
+
"constexpr trap")))
|
147
|
+
: Base("to avoid noise in the compiler error") {
|
116
148
|
static_assert(sizeof(T*) == 0,
|
117
149
|
"Format specified does not match the arguments passed.");
|
118
150
|
}
|
@@ -133,13 +165,12 @@ class FormatSpecTemplate
|
|
133
165
|
|
134
166
|
#endif // ABSL_INTERNAL_ENABLE_FORMAT_CHECKER
|
135
167
|
|
136
|
-
template <
|
137
|
-
FormatConversionCharSet... C,
|
138
|
-
typename = typename std::enable_if<sizeof...(C) == sizeof...(Args)>::type,
|
139
|
-
typename = typename std::enable_if<AllOf(Contains(Args,
|
140
|
-
C)...)>::type>
|
168
|
+
template <FormatConversionCharSet... C>
|
141
169
|
FormatSpecTemplate(const ExtendedParsedFormat<C...>& pc) // NOLINT
|
142
|
-
: Base(&pc) {
|
170
|
+
: Base(&pc) {
|
171
|
+
CheckArity<sizeof...(C), sizeof...(Args)>();
|
172
|
+
CheckMatches<C...>(absl::make_index_sequence<sizeof...(C)>{});
|
173
|
+
}
|
143
174
|
};
|
144
175
|
|
145
176
|
class Streamable {
|
@@ -22,9 +22,14 @@
|
|
22
22
|
// Compile time check support for entry points.
|
23
23
|
|
24
24
|
#ifndef ABSL_INTERNAL_ENABLE_FORMAT_CHECKER
|
25
|
-
|
25
|
+
// We disable format checker under vscode intellisense compilation.
|
26
|
+
// See https://github.com/microsoft/vscode-cpptools/issues/3683 for
|
27
|
+
// more details.
|
28
|
+
#if ABSL_HAVE_ATTRIBUTE(enable_if) && !defined(__native_client__) && \
|
29
|
+
!defined(__INTELLISENSE__)
|
26
30
|
#define ABSL_INTERNAL_ENABLE_FORMAT_CHECKER 1
|
27
|
-
#endif // ABSL_HAVE_ATTRIBUTE(enable_if) && !defined(__native_client__)
|
31
|
+
#endif // ABSL_HAVE_ATTRIBUTE(enable_if) && !defined(__native_client__) &&
|
32
|
+
// !defined(__INTELLISENSE__)
|
28
33
|
#endif // ABSL_INTERNAL_ENABLE_FORMAT_CHECKER
|
29
34
|
|
30
35
|
namespace absl {
|
@@ -33,6 +33,8 @@ std::string FlagsToString(Flags v) {
|
|
33
33
|
return s;
|
34
34
|
}
|
35
35
|
|
36
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
37
|
+
|
36
38
|
#define ABSL_INTERNAL_X_VAL(id) \
|
37
39
|
constexpr absl::FormatConversionChar FormatConversionCharInternal::id;
|
38
40
|
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_X_VAL, )
|
@@ -45,17 +47,14 @@ constexpr absl::FormatConversionChar FormatConversionCharInternal::kNone;
|
|
45
47
|
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_CHAR_SET_CASE, )
|
46
48
|
#undef ABSL_INTERNAL_CHAR_SET_CASE
|
47
49
|
|
48
|
-
// NOLINTNEXTLINE(readability-redundant-declaration)
|
49
50
|
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kStar;
|
50
|
-
// NOLINTNEXTLINE(readability-redundant-declaration)
|
51
51
|
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kIntegral;
|
52
|
-
// NOLINTNEXTLINE(readability-redundant-declaration)
|
53
52
|
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kFloating;
|
54
|
-
// NOLINTNEXTLINE(readability-redundant-declaration)
|
55
53
|
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kNumeric;
|
56
|
-
// NOLINTNEXTLINE(readability-redundant-declaration)
|
57
54
|
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kPointer;
|
58
55
|
|
56
|
+
#endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
57
|
+
|
59
58
|
bool FormatSinkImpl::PutPaddedString(string_view value, int width,
|
60
59
|
int precision, bool left) {
|
61
60
|
size_t space_remaining = 0;
|
@@ -19,6 +19,7 @@
|
|
19
19
|
#include <limits.h>
|
20
20
|
|
21
21
|
#include <cstddef>
|
22
|
+
#include <cstdint>
|
22
23
|
#include <cstring>
|
23
24
|
#include <ostream>
|
24
25
|
|
@@ -70,7 +71,7 @@ class FormatSinkImpl {
|
|
70
71
|
~FormatSinkImpl() { Flush(); }
|
71
72
|
|
72
73
|
void Flush() {
|
73
|
-
raw_.Write(string_view(buf_, pos_ - buf_));
|
74
|
+
raw_.Write(string_view(buf_, static_cast<size_t>(pos_ - buf_)));
|
74
75
|
pos_ = buf_;
|
75
76
|
}
|
76
77
|
|
@@ -120,7 +121,9 @@ class FormatSinkImpl {
|
|
120
121
|
}
|
121
122
|
|
122
123
|
private:
|
123
|
-
size_t Avail() const {
|
124
|
+
size_t Avail() const {
|
125
|
+
return static_cast<size_t>(buf_ + sizeof(buf_) - pos_);
|
126
|
+
}
|
124
127
|
|
125
128
|
FormatRawSinkImpl raw_;
|
126
129
|
size_t size_ = 0;
|
@@ -22,6 +22,7 @@
|
|
22
22
|
#define ABSL_STRINGS_INTERNAL_STR_FORMAT_OUTPUT_H_
|
23
23
|
|
24
24
|
#include <cstdio>
|
25
|
+
#include <ios>
|
25
26
|
#include <ostream>
|
26
27
|
#include <string>
|
27
28
|
|
@@ -71,7 +72,7 @@ inline void AbslFormatFlush(std::string* out, string_view s) {
|
|
71
72
|
out->append(s.data(), s.size());
|
72
73
|
}
|
73
74
|
inline void AbslFormatFlush(std::ostream* out, string_view s) {
|
74
|
-
out->write(s.data(), s.size());
|
75
|
+
out->write(s.data(), static_cast<std::streamsize>(s.size()));
|
75
76
|
}
|
76
77
|
|
77
78
|
inline void AbslFormatFlush(FILERawSink* sink, string_view v) {
|
@@ -151,7 +151,8 @@ bool ParseFormatString(string_view src, Consumer consumer) {
|
|
151
151
|
const char* p = src.data();
|
152
152
|
const char* const end = p + src.size();
|
153
153
|
while (p != end) {
|
154
|
-
const char* percent =
|
154
|
+
const char* percent =
|
155
|
+
static_cast<const char*>(memchr(p, '%', static_cast<size_t>(end - p)));
|
155
156
|
if (!percent) {
|
156
157
|
// We found the last substring.
|
157
158
|
return consumer.Append(string_view(p, end - p));
|
@@ -242,7 +243,8 @@ class ParsedFormatBase {
|
|
242
243
|
string_view text(base, 0);
|
243
244
|
for (const auto& item : items_) {
|
244
245
|
const char* const end = text.data() + text.size();
|
245
|
-
text =
|
246
|
+
text =
|
247
|
+
string_view(end, static_cast<size_t>((base + item.text_end) - end));
|
246
248
|
if (item.is_conversion) {
|
247
249
|
if (!consumer.ConvertOne(item.conv, text)) return false;
|
248
250
|
} else {
|
@@ -229,10 +229,11 @@ std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s,
|
|
229
229
|
std::string result;
|
230
230
|
if (start != end) {
|
231
231
|
// Sums size
|
232
|
-
|
232
|
+
auto&& start_value = *start;
|
233
|
+
size_t result_size = start_value.size();
|
233
234
|
for (Iterator it = start; ++it != end;) {
|
234
235
|
result_size += s.size();
|
235
|
-
result_size += it
|
236
|
+
result_size += (*it).size();
|
236
237
|
}
|
237
238
|
|
238
239
|
if (result_size > 0) {
|
@@ -240,13 +241,15 @@ std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s,
|
|
240
241
|
|
241
242
|
// Joins strings
|
242
243
|
char* result_buf = &*result.begin();
|
243
|
-
|
244
|
-
result_buf
|
244
|
+
|
245
|
+
memcpy(result_buf, start_value.data(), start_value.size());
|
246
|
+
result_buf += start_value.size();
|
245
247
|
for (Iterator it = start; ++it != end;) {
|
246
248
|
memcpy(result_buf, s.data(), s.size());
|
247
249
|
result_buf += s.size();
|
248
|
-
|
249
|
-
result_buf
|
250
|
+
auto&& value = *it;
|
251
|
+
memcpy(result_buf, value.data(), value.size());
|
252
|
+
result_buf += value.size();
|
250
253
|
}
|
251
254
|
}
|
252
255
|
}
|
@@ -35,17 +35,25 @@ namespace strings_internal {
|
|
35
35
|
// below.
|
36
36
|
template <typename T>
|
37
37
|
struct StringConstant {
|
38
|
+
private:
|
39
|
+
static constexpr bool TryConstexprEval(absl::string_view view) {
|
40
|
+
return view.empty() || 2 * view[0] != 1;
|
41
|
+
}
|
42
|
+
|
43
|
+
public:
|
38
44
|
static constexpr absl::string_view value = T{}();
|
39
45
|
constexpr absl::string_view operator()() const { return value; }
|
40
46
|
|
41
47
|
// Check to be sure `view` points to constant data.
|
42
48
|
// Otherwise, it can't be constant evaluated.
|
43
|
-
static_assert(value
|
49
|
+
static_assert(TryConstexprEval(value),
|
44
50
|
"The input string_view must point to constant data.");
|
45
51
|
};
|
46
52
|
|
53
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
47
54
|
template <typename T>
|
48
|
-
constexpr absl::string_view StringConstant<T>::value;
|
55
|
+
constexpr absl::string_view StringConstant<T>::value;
|
56
|
+
#endif
|
49
57
|
|
50
58
|
// Factory function for `StringConstant` instances.
|
51
59
|
// It supports callables that have a constexpr default constructor and a
|
@@ -25,25 +25,25 @@ size_t EncodeUTF8Char(char *buffer, char32_t utf8_char) {
|
|
25
25
|
*buffer = static_cast<char>(utf8_char);
|
26
26
|
return 1;
|
27
27
|
} else if (utf8_char <= 0x7FF) {
|
28
|
-
buffer[1] = 0x80 | (utf8_char & 0x3F);
|
28
|
+
buffer[1] = static_cast<char>(0x80 | (utf8_char & 0x3F));
|
29
29
|
utf8_char >>= 6;
|
30
|
-
buffer[0] = 0xC0 | utf8_char;
|
30
|
+
buffer[0] = static_cast<char>(0xC0 | utf8_char);
|
31
31
|
return 2;
|
32
32
|
} else if (utf8_char <= 0xFFFF) {
|
33
|
-
buffer[2] = 0x80 | (utf8_char & 0x3F);
|
33
|
+
buffer[2] = static_cast<char>(0x80 | (utf8_char & 0x3F));
|
34
34
|
utf8_char >>= 6;
|
35
|
-
buffer[1] = 0x80 | (utf8_char & 0x3F);
|
35
|
+
buffer[1] = static_cast<char>(0x80 | (utf8_char & 0x3F));
|
36
36
|
utf8_char >>= 6;
|
37
|
-
buffer[0] = 0xE0 | utf8_char;
|
37
|
+
buffer[0] = static_cast<char>(0xE0 | utf8_char);
|
38
38
|
return 3;
|
39
39
|
} else {
|
40
|
-
buffer[3] = 0x80 | (utf8_char & 0x3F);
|
40
|
+
buffer[3] = static_cast<char>(0x80 | (utf8_char & 0x3F));
|
41
41
|
utf8_char >>= 6;
|
42
|
-
buffer[2] = 0x80 | (utf8_char & 0x3F);
|
42
|
+
buffer[2] = static_cast<char>(0x80 | (utf8_char & 0x3F));
|
43
43
|
utf8_char >>= 6;
|
44
|
-
buffer[1] = 0x80 | (utf8_char & 0x3F);
|
44
|
+
buffer[1] = static_cast<char>(0x80 | (utf8_char & 0x3F));
|
45
45
|
utf8_char >>= 6;
|
46
|
-
buffer[0] = 0xF0 | utf8_char;
|
46
|
+
buffer[0] = static_cast<char>(0xF0 | utf8_char);
|
47
47
|
return 4;
|
48
48
|
}
|
49
49
|
}
|
@@ -757,8 +757,8 @@ struct LookupTables {
|
|
757
757
|
//
|
758
758
|
// uint128& operator/=(uint128) is not constexpr, so hardcode the resulting
|
759
759
|
// array to avoid a static initializer.
|
760
|
-
template<>
|
761
|
-
const uint128 LookupTables<uint128>::kVmaxOverBase[] = {
|
760
|
+
template <>
|
761
|
+
ABSL_CONST_INIT const uint128 LookupTables<uint128>::kVmaxOverBase[] = {
|
762
762
|
0,
|
763
763
|
0,
|
764
764
|
MakeUint128(9223372036854775807u, 18446744073709551615u),
|
@@ -809,8 +809,8 @@ const uint128 LookupTables<uint128>::kVmaxOverBase[] = {
|
|
809
809
|
//
|
810
810
|
// int128& operator/=(int128) is not constexpr, so hardcode the resulting array
|
811
811
|
// to avoid a static initializer.
|
812
|
-
template<>
|
813
|
-
const int128 LookupTables<int128>::kVmaxOverBase[] = {
|
812
|
+
template <>
|
813
|
+
ABSL_CONST_INIT const int128 LookupTables<int128>::kVmaxOverBase[] = {
|
814
814
|
0,
|
815
815
|
0,
|
816
816
|
MakeInt128(4611686018427387903, 18446744073709551615u),
|
@@ -862,8 +862,8 @@ const int128 LookupTables<int128>::kVmaxOverBase[] = {
|
|
862
862
|
//
|
863
863
|
// int128& operator/=(int128) is not constexpr, so hardcode the resulting array
|
864
864
|
// to avoid a static initializer.
|
865
|
-
template<>
|
866
|
-
const int128 LookupTables<int128>::kVminOverBase[] = {
|
865
|
+
template <>
|
866
|
+
ABSL_CONST_INIT const int128 LookupTables<int128>::kVminOverBase[] = {
|
867
867
|
0,
|
868
868
|
0,
|
869
869
|
MakeInt128(-4611686018427387904, 0u),
|
@@ -904,11 +904,11 @@ const int128 LookupTables<int128>::kVminOverBase[] = {
|
|
904
904
|
};
|
905
905
|
|
906
906
|
template <typename IntType>
|
907
|
-
const IntType LookupTables<IntType>::kVmaxOverBase[] =
|
907
|
+
ABSL_CONST_INIT const IntType LookupTables<IntType>::kVmaxOverBase[] =
|
908
908
|
X_OVER_BASE_INITIALIZER(std::numeric_limits<IntType>::max());
|
909
909
|
|
910
910
|
template <typename IntType>
|
911
|
-
const IntType LookupTables<IntType>::kVminOverBase[] =
|
911
|
+
ABSL_CONST_INIT const IntType LookupTables<IntType>::kVminOverBase[] =
|
912
912
|
X_OVER_BASE_INITIALIZER(std::numeric_limits<IntType>::min());
|
913
913
|
|
914
914
|
#undef X_OVER_BASE_INITIALIZER
|
@@ -23,8 +23,12 @@
|
|
23
23
|
#ifndef ABSL_STRINGS_NUMBERS_H_
|
24
24
|
#define ABSL_STRINGS_NUMBERS_H_
|
25
25
|
|
26
|
-
#ifdef
|
27
|
-
#include <
|
26
|
+
#ifdef __SSSE3__
|
27
|
+
#include <tmmintrin.h>
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#ifdef _MSC_VER
|
31
|
+
#include <intrin.h>
|
28
32
|
#endif
|
29
33
|
|
30
34
|
#include <cstddef>
|
@@ -36,14 +40,7 @@
|
|
36
40
|
#include <type_traits>
|
37
41
|
|
38
42
|
#include "absl/base/config.h"
|
39
|
-
#ifdef __SSE4_2__
|
40
|
-
// TODO(jorg): Remove this when we figure out the right way
|
41
|
-
// to swap bytes on SSE 4.2 that works with the compilers
|
42
|
-
// we claim to support. Also, add tests for the compiler
|
43
|
-
// that doesn't support the Intel _bswap64 intrinsic but
|
44
|
-
// does support all the SSE 4.2 intrinsics
|
45
43
|
#include "absl/base/internal/endian.h"
|
46
|
-
#endif
|
47
44
|
#include "absl/base/macros.h"
|
48
45
|
#include "absl/base/port.h"
|
49
46
|
#include "absl/numeric/bits.h"
|
@@ -181,16 +178,19 @@ char* FastIntToBuffer(int_type i, char* buffer) {
|
|
181
178
|
// TODO(jorg): This signed-ness check is used because it works correctly
|
182
179
|
// with enums, and it also serves to check that int_type is not a pointer.
|
183
180
|
// If one day something like std::is_signed<enum E> works, switch to it.
|
184
|
-
|
185
|
-
|
181
|
+
// These conditions are constexpr bools to suppress MSVC warning C4127.
|
182
|
+
constexpr bool kIsSigned = static_cast<int_type>(1) - 2 < 0;
|
183
|
+
constexpr bool kUse64Bit = sizeof(i) > 32 / 8;
|
184
|
+
if (kIsSigned) {
|
185
|
+
if (kUse64Bit) {
|
186
186
|
return FastIntToBuffer(static_cast<int64_t>(i), buffer);
|
187
|
-
} else {
|
187
|
+
} else {
|
188
188
|
return FastIntToBuffer(static_cast<int32_t>(i), buffer);
|
189
189
|
}
|
190
|
-
} else {
|
191
|
-
if (
|
190
|
+
} else {
|
191
|
+
if (kUse64Bit) {
|
192
192
|
return FastIntToBuffer(static_cast<uint64_t>(i), buffer);
|
193
|
-
} else {
|
193
|
+
} else {
|
194
194
|
return FastIntToBuffer(static_cast<uint32_t>(i), buffer);
|
195
195
|
}
|
196
196
|
}
|
@@ -209,22 +209,25 @@ ABSL_MUST_USE_RESULT bool safe_strtoi_base(absl::string_view s, int_type* out,
|
|
209
209
|
// TODO(jorg): This signed-ness check is used because it works correctly
|
210
210
|
// with enums, and it also serves to check that int_type is not a pointer.
|
211
211
|
// If one day something like std::is_signed<enum E> works, switch to it.
|
212
|
-
|
213
|
-
|
212
|
+
// These conditions are constexpr bools to suppress MSVC warning C4127.
|
213
|
+
constexpr bool kIsSigned = static_cast<int_type>(1) - 2 < 0;
|
214
|
+
constexpr bool kUse64Bit = sizeof(*out) == 64 / 8;
|
215
|
+
if (kIsSigned) {
|
216
|
+
if (kUse64Bit) {
|
214
217
|
int64_t val;
|
215
218
|
parsed = numbers_internal::safe_strto64_base(s, &val, base);
|
216
219
|
*out = static_cast<int_type>(val);
|
217
|
-
} else {
|
220
|
+
} else {
|
218
221
|
int32_t val;
|
219
222
|
parsed = numbers_internal::safe_strto32_base(s, &val, base);
|
220
223
|
*out = static_cast<int_type>(val);
|
221
224
|
}
|
222
|
-
} else {
|
223
|
-
if (
|
225
|
+
} else {
|
226
|
+
if (kUse64Bit) {
|
224
227
|
uint64_t val;
|
225
228
|
parsed = numbers_internal::safe_strtou64_base(s, &val, base);
|
226
229
|
*out = static_cast<int_type>(val);
|
227
|
-
} else {
|
230
|
+
} else {
|
228
231
|
uint32_t val;
|
229
232
|
parsed = numbers_internal::safe_strtou32_base(s, &val, base);
|
230
233
|
*out = static_cast<int_type>(val);
|
@@ -240,7 +243,7 @@ ABSL_MUST_USE_RESULT bool safe_strtoi_base(absl::string_view s, int_type* out,
|
|
240
243
|
// Returns the number of non-pad digits of the output (it can never be zero
|
241
244
|
// since 0 has one digit).
|
242
245
|
inline size_t FastHexToBufferZeroPad16(uint64_t val, char* out) {
|
243
|
-
#ifdef
|
246
|
+
#ifdef ABSL_INTERNAL_HAVE_SSSE3
|
244
247
|
uint64_t be = absl::big_endian::FromHost64(val);
|
245
248
|
const auto kNibbleMask = _mm_set1_epi8(0xf);
|
246
249
|
const auto kHexDigits = _mm_setr_epi8('0', '1', '2', '3', '4', '5', '6', '7',
|
@@ -259,7 +262,7 @@ inline size_t FastHexToBufferZeroPad16(uint64_t val, char* out) {
|
|
259
262
|
}
|
260
263
|
#endif
|
261
264
|
// | 0x1 so that even 0 has 1 digit.
|
262
|
-
return 16 - countl_zero(val | 0x1) / 4;
|
265
|
+
return 16 - static_cast<size_t>(countl_zero(val | 0x1) / 4);
|
263
266
|
}
|
264
267
|
|
265
268
|
} // namespace numbers_internal
|
@@ -214,23 +214,29 @@ class AlphaNum {
|
|
214
214
|
// A bool ctor would also convert incoming pointers (bletch).
|
215
215
|
|
216
216
|
AlphaNum(int x) // NOLINT(runtime/explicit)
|
217
|
-
: piece_(digits_,
|
218
|
-
|
217
|
+
: piece_(digits_, static_cast<size_t>(
|
218
|
+
numbers_internal::FastIntToBuffer(x, digits_) -
|
219
|
+
&digits_[0])) {}
|
219
220
|
AlphaNum(unsigned int x) // NOLINT(runtime/explicit)
|
220
|
-
: piece_(digits_,
|
221
|
-
|
221
|
+
: piece_(digits_, static_cast<size_t>(
|
222
|
+
numbers_internal::FastIntToBuffer(x, digits_) -
|
223
|
+
&digits_[0])) {}
|
222
224
|
AlphaNum(long x) // NOLINT(*)
|
223
|
-
: piece_(digits_,
|
224
|
-
|
225
|
+
: piece_(digits_, static_cast<size_t>(
|
226
|
+
numbers_internal::FastIntToBuffer(x, digits_) -
|
227
|
+
&digits_[0])) {}
|
225
228
|
AlphaNum(unsigned long x) // NOLINT(*)
|
226
|
-
: piece_(digits_,
|
227
|
-
|
229
|
+
: piece_(digits_, static_cast<size_t>(
|
230
|
+
numbers_internal::FastIntToBuffer(x, digits_) -
|
231
|
+
&digits_[0])) {}
|
228
232
|
AlphaNum(long long x) // NOLINT(*)
|
229
|
-
: piece_(digits_,
|
230
|
-
|
233
|
+
: piece_(digits_, static_cast<size_t>(
|
234
|
+
numbers_internal::FastIntToBuffer(x, digits_) -
|
235
|
+
&digits_[0])) {}
|
231
236
|
AlphaNum(unsigned long long x) // NOLINT(*)
|
232
|
-
: piece_(digits_,
|
233
|
-
|
237
|
+
: piece_(digits_, static_cast<size_t>(
|
238
|
+
numbers_internal::FastIntToBuffer(x, digits_) -
|
239
|
+
&digits_[0])) {}
|
234
240
|
|
235
241
|
AlphaNum(float f) // NOLINT(runtime/explicit)
|
236
242
|
: piece_(digits_, numbers_internal::SixDigitsToBuffer(f, digits_)) {}
|
@@ -245,7 +251,8 @@ class AlphaNum {
|
|
245
251
|
const strings_internal::AlphaNumBuffer<size>& buf)
|
246
252
|
: piece_(&buf.data[0], buf.size) {}
|
247
253
|
|
248
|
-
AlphaNum(const char* c_str)
|
254
|
+
AlphaNum(const char* c_str) // NOLINT(runtime/explicit)
|
255
|
+
: piece_(NullSafeStringView(c_str)) {} // NOLINT(runtime/explicit)
|
249
256
|
AlphaNum(absl::string_view pc) : piece_(pc) {} // NOLINT(runtime/explicit)
|
250
257
|
|
251
258
|
template <typename Allocator>
|
@@ -72,21 +72,15 @@ ABSL_NAMESPACE_BEGIN
|
|
72
72
|
// functions. You may provide your own Formatter to enable `absl::StrJoin()` to
|
73
73
|
// work with arbitrary types.
|
74
74
|
//
|
75
|
-
// The following is an example of a custom Formatter that
|
76
|
-
// `
|
77
|
-
//
|
78
|
-
//
|
79
|
-
//
|
80
|
-
//
|
81
|
-
//
|
82
|
-
//
|
83
|
-
//
|
84
|
-
// You would use the above formatter by passing an instance of it as the final
|
85
|
-
// argument to `absl::StrJoin()`:
|
86
|
-
//
|
87
|
-
// std::vector<int> v = {1, 2, 3, 4};
|
88
|
-
// std::string s = absl::StrJoin(v, "-", MyFormatter());
|
89
|
-
// EXPECT_EQ("1-2-3-4", s);
|
75
|
+
// The following is an example of a custom Formatter that uses
|
76
|
+
// `absl::FormatDuration` to join a list of `absl::Duration`s.
|
77
|
+
//
|
78
|
+
// std::vector<absl::Duration> v = {absl::Seconds(1), absl::Milliseconds(10)};
|
79
|
+
// std::string s =
|
80
|
+
// absl::StrJoin(v, ", ", [](std::string* out, absl::Duration dur) {
|
81
|
+
// absl::StrAppend(out, absl::FormatDuration(dur));
|
82
|
+
// });
|
83
|
+
// EXPECT_EQ("1s, 10ms", s);
|
90
84
|
//
|
91
85
|
// The following standard formatters are provided within this file:
|
92
86
|
//
|
@@ -461,8 +461,7 @@ using EnableSplitIfString =
|
|
461
461
|
// first two split strings become the `std::pair` `.first` and `.second`
|
462
462
|
// members, respectively. The remaining split substrings are discarded. If there
|
463
463
|
// are less than two split substrings, the empty string is used for the
|
464
|
-
// corresponding
|
465
|
-
// `std::pair` member.
|
464
|
+
// corresponding `std::pair` member.
|
466
465
|
//
|
467
466
|
// Example:
|
468
467
|
//
|
@@ -207,22 +207,11 @@ string_view::size_type string_view::find_last_not_of(
|
|
207
207
|
return npos;
|
208
208
|
}
|
209
209
|
|
210
|
-
// MSVC has non-standard behavior that implicitly creates definitions for static
|
211
|
-
// const members. These implicit definitions conflict with explicit out-of-class
|
212
|
-
// member definitions that are required by the C++ standard, resulting in
|
213
|
-
// LNK1169 "multiply defined" errors at link time. __declspec(selectany) asks
|
214
|
-
// MSVC to choose only one definition for the symbol it decorates. See details
|
215
|
-
// at https://msdn.microsoft.com/en-us/library/34h23df8(v=vs.100).aspx
|
216
|
-
#ifdef _MSC_VER
|
217
|
-
#define ABSL_STRING_VIEW_SELECTANY __declspec(selectany)
|
218
|
-
#else
|
219
|
-
#define ABSL_STRING_VIEW_SELECTANY
|
220
|
-
#endif
|
221
210
|
|
222
|
-
|
211
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
223
212
|
constexpr string_view::size_type string_view::npos;
|
224
|
-
ABSL_STRING_VIEW_SELECTANY
|
225
213
|
constexpr string_view::size_type string_view::kMaxSize;
|
214
|
+
#endif
|
226
215
|
|
227
216
|
ABSL_NAMESPACE_END
|
228
217
|
} // namespace absl
|
@@ -55,8 +55,9 @@ ABSL_NAMESPACE_END
|
|
55
55
|
|
56
56
|
#else // ABSL_USES_STD_STRING_VIEW
|
57
57
|
|
58
|
-
#if ABSL_HAVE_BUILTIN(__builtin_memcmp) ||
|
59
|
-
(defined(__GNUC__) && !defined(__clang__))
|
58
|
+
#if ABSL_HAVE_BUILTIN(__builtin_memcmp) || \
|
59
|
+
(defined(__GNUC__) && !defined(__clang__)) || \
|
60
|
+
(defined(_MSC_VER) && _MSC_VER >= 1928)
|
60
61
|
#define ABSL_INTERNAL_STRING_VIEW_MEMCMP __builtin_memcmp
|
61
62
|
#else // ABSL_HAVE_BUILTIN(__builtin_memcmp)
|
62
63
|
#define ABSL_INTERNAL_STRING_VIEW_MEMCMP memcmp
|
@@ -34,8 +34,9 @@ ABSL_NAMESPACE_BEGIN
|
|
34
34
|
|
35
35
|
// ConsumePrefix()
|
36
36
|
//
|
37
|
-
// Strips the `expected` prefix from the start of
|
38
|
-
//
|
37
|
+
// Strips the `expected` prefix, if found, from the start of `str`.
|
38
|
+
// If the operation succeeded, `true` is returned. If not, `false`
|
39
|
+
// is returned and `str` is not modified.
|
39
40
|
//
|
40
41
|
// Example:
|
41
42
|
//
|
@@ -49,8 +50,9 @@ inline bool ConsumePrefix(absl::string_view* str, absl::string_view expected) {
|
|
49
50
|
}
|
50
51
|
// ConsumeSuffix()
|
51
52
|
//
|
52
|
-
// Strips the `expected` suffix from the end of
|
53
|
-
//
|
53
|
+
// Strips the `expected` suffix, if found, from the end of `str`.
|
54
|
+
// If the operation succeeded, `true` is returned. If not, `false`
|
55
|
+
// is returned and `str` is not modified.
|
54
56
|
//
|
55
57
|
// Example:
|
56
58
|
//
|
@@ -65,7 +67,7 @@ inline bool ConsumeSuffix(absl::string_view* str, absl::string_view expected) {
|
|
65
67
|
|
66
68
|
// StripPrefix()
|
67
69
|
//
|
68
|
-
// Returns a view into the input string
|
70
|
+
// Returns a view into the input string `str` with the given `prefix` removed,
|
69
71
|
// but leaving the original string intact. If the prefix does not match at the
|
70
72
|
// start of the string, returns the original string instead.
|
71
73
|
ABSL_MUST_USE_RESULT inline absl::string_view StripPrefix(
|
@@ -76,7 +78,7 @@ ABSL_MUST_USE_RESULT inline absl::string_view StripPrefix(
|
|
76
78
|
|
77
79
|
// StripSuffix()
|
78
80
|
//
|
79
|
-
// Returns a view into the input string
|
81
|
+
// Returns a view into the input string `str` with the given `suffix` removed,
|
80
82
|
// but leaving the original string intact. If the suffix does not match at the
|
81
83
|
// end of the string, returns the original string instead.
|
82
84
|
ABSL_MUST_USE_RESULT inline absl::string_view StripSuffix(
|
@@ -159,8 +159,8 @@ class Arg {
|
|
159
159
|
Arg(Hex hex); // NOLINT(runtime/explicit)
|
160
160
|
Arg(Dec dec); // NOLINT(runtime/explicit)
|
161
161
|
|
162
|
-
// vector<bool>::reference and const_reference require special help to
|
163
|
-
//
|
162
|
+
// vector<bool>::reference and const_reference require special help to convert
|
163
|
+
// to `Arg` because it requires two user defined conversions.
|
164
164
|
template <typename T,
|
165
165
|
absl::enable_if_t<
|
166
166
|
std::is_class<T>::value &&
|
@@ -174,6 +174,14 @@ class Arg {
|
|
174
174
|
// "0x<hex value>". However, in the case of `nullptr`, "NULL" is printed.
|
175
175
|
Arg(const void* value); // NOLINT(runtime/explicit)
|
176
176
|
|
177
|
+
// Normal enums are already handled by the integer formatters.
|
178
|
+
// This overload matches only scoped enums.
|
179
|
+
template <typename T,
|
180
|
+
typename = typename std::enable_if<
|
181
|
+
std::is_enum<T>{} && !std::is_convertible<T, int>{}>::type>
|
182
|
+
Arg(T value) // NOLINT(google-explicit-constructor)
|
183
|
+
: Arg(static_cast<typename std::underlying_type<T>::type>(value)) {}
|
184
|
+
|
177
185
|
Arg(const Arg&) = delete;
|
178
186
|
Arg& operator=(const Arg&) = delete;
|
179
187
|
|