grpc 1.42.0 → 1.43.1
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 +85 -34
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc_security.h +276 -145
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
- data/src/core/ext/filters/client_channel/client_channel.h +5 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
- data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +409 -304
- data/src/core/ext/xds/xds_api.h +3 -1
- data/src/core/ext/xds/xds_bootstrap.cc +6 -3
- data/src/core/ext/xds/xds_certificate_provider.h +1 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
- data/src/core/ext/xds/xds_client.cc +395 -291
- data/src/core/ext/xds/xds_client.h +47 -38
- data/src/core/ext/xds/xds_routing.cc +247 -0
- data/src/core/ext/xds/xds_routing.h +98 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -17
- data/src/core/lib/channel/channel_args.h +11 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack_builder.cc +0 -2
- data/src/core/lib/channel/channel_trace.cc +6 -6
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/compression/compression_args.cc +7 -5
- data/src/core/lib/compression/compression_args.h +6 -4
- data/src/core/lib/config/core_configuration.cc +3 -1
- data/src/core/lib/config/core_configuration.h +11 -0
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/tls.h +6 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.h +1 -1
- data/src/core/lib/gprpp/table.h +13 -1
- data/src/core/lib/http/httpcli.cc +30 -26
- data/src/core/lib/http/httpcli.h +14 -12
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +2 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
- data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
- data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
- data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor.cc +12 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
- data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +28 -33
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
- data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +2 -7
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +499 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +44 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +41 -0
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
- data/src/core/lib/security/authorization/evaluate_args.h +2 -1
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +7 -7
- data/src/core/lib/slice/slice.h +341 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/slice/slice_refcount.h +5 -1
- data/src/core/lib/slice/slice_refcount_base.h +19 -11
- data/src/core/lib/slice/static_slice.cc +331 -483
- data/src/core/lib/slice/static_slice.h +101 -132
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +85 -59
- data/src/core/lib/surface/channel.cc +4 -29
- data/src/core/lib/surface/channel.h +2 -12
- data/src/core/lib/surface/completion_queue.cc +2 -2
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +24 -17
- data/src/core/lib/surface/server.cc +22 -22
- data/src/core/lib/surface/server.h +8 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.cc +4 -0
- data/src/core/lib/transport/metadata.h +4 -4
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +174 -99
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +180 -61
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +529 -614
- data/src/core/lib/transport/static_metadata.h +0 -18
- data/src/core/lib/transport/transport.cc +4 -26
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/lib/uri/uri_parser.cc +19 -19
- data/src/core/lib/uri/uri_parser.h +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/local_transport_security.cc +15 -15
- data/src/core/tsi/ssl_transport_security.cc +30 -1
- data/src/core/tsi/ssl_transport_security.h +1 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- metadata +116 -56
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -905,11 +905,11 @@ void c_sort(C& c) {
|
|
905
905
|
|
906
906
|
// Overload of c_sort() for performing a `comp` comparison other than the
|
907
907
|
// default `operator<`.
|
908
|
-
template <typename C, typename
|
909
|
-
void c_sort(C& c,
|
908
|
+
template <typename C, typename LessThan>
|
909
|
+
void c_sort(C& c, LessThan&& comp) {
|
910
910
|
std::sort(container_algorithm_internal::c_begin(c),
|
911
911
|
container_algorithm_internal::c_end(c),
|
912
|
-
std::forward<
|
912
|
+
std::forward<LessThan>(comp));
|
913
913
|
}
|
914
914
|
|
915
915
|
// c_stable_sort()
|
@@ -925,11 +925,11 @@ void c_stable_sort(C& c) {
|
|
925
925
|
|
926
926
|
// Overload of c_stable_sort() for performing a `comp` comparison other than the
|
927
927
|
// default `operator<`.
|
928
|
-
template <typename C, typename
|
929
|
-
void c_stable_sort(C& c,
|
928
|
+
template <typename C, typename LessThan>
|
929
|
+
void c_stable_sort(C& c, LessThan&& comp) {
|
930
930
|
std::stable_sort(container_algorithm_internal::c_begin(c),
|
931
931
|
container_algorithm_internal::c_end(c),
|
932
|
-
std::forward<
|
932
|
+
std::forward<LessThan>(comp));
|
933
933
|
}
|
934
934
|
|
935
935
|
// c_is_sorted()
|
@@ -944,11 +944,11 @@ bool c_is_sorted(const C& c) {
|
|
944
944
|
|
945
945
|
// c_is_sorted() overload for performing a `comp` comparison other than the
|
946
946
|
// default `operator<`.
|
947
|
-
template <typename C, typename
|
948
|
-
bool c_is_sorted(const C& c,
|
947
|
+
template <typename C, typename LessThan>
|
948
|
+
bool c_is_sorted(const C& c, LessThan&& comp) {
|
949
949
|
return std::is_sorted(container_algorithm_internal::c_begin(c),
|
950
950
|
container_algorithm_internal::c_end(c),
|
951
|
-
std::forward<
|
951
|
+
std::forward<LessThan>(comp));
|
952
952
|
}
|
953
953
|
|
954
954
|
// c_partial_sort()
|
@@ -966,14 +966,14 @@ void c_partial_sort(
|
|
966
966
|
|
967
967
|
// Overload of c_partial_sort() for performing a `comp` comparison other than
|
968
968
|
// the default `operator<`.
|
969
|
-
template <typename RandomAccessContainer, typename
|
969
|
+
template <typename RandomAccessContainer, typename LessThan>
|
970
970
|
void c_partial_sort(
|
971
971
|
RandomAccessContainer& sequence,
|
972
972
|
container_algorithm_internal::ContainerIter<RandomAccessContainer> middle,
|
973
|
-
|
973
|
+
LessThan&& comp) {
|
974
974
|
std::partial_sort(container_algorithm_internal::c_begin(sequence), middle,
|
975
975
|
container_algorithm_internal::c_end(sequence),
|
976
|
-
std::forward<
|
976
|
+
std::forward<LessThan>(comp));
|
977
977
|
}
|
978
978
|
|
979
979
|
// c_partial_sort_copy()
|
@@ -994,15 +994,15 @@ c_partial_sort_copy(const C& sequence, RandomAccessContainer& result) {
|
|
994
994
|
|
995
995
|
// Overload of c_partial_sort_copy() for performing a `comp` comparison other
|
996
996
|
// than the default `operator<`.
|
997
|
-
template <typename C, typename RandomAccessContainer, typename
|
997
|
+
template <typename C, typename RandomAccessContainer, typename LessThan>
|
998
998
|
container_algorithm_internal::ContainerIter<RandomAccessContainer>
|
999
999
|
c_partial_sort_copy(const C& sequence, RandomAccessContainer& result,
|
1000
|
-
|
1000
|
+
LessThan&& comp) {
|
1001
1001
|
return std::partial_sort_copy(container_algorithm_internal::c_begin(sequence),
|
1002
1002
|
container_algorithm_internal::c_end(sequence),
|
1003
1003
|
container_algorithm_internal::c_begin(result),
|
1004
1004
|
container_algorithm_internal::c_end(result),
|
1005
|
-
std::forward<
|
1005
|
+
std::forward<LessThan>(comp));
|
1006
1006
|
}
|
1007
1007
|
|
1008
1008
|
// c_is_sorted_until()
|
@@ -1018,12 +1018,12 @@ container_algorithm_internal::ContainerIter<C> c_is_sorted_until(C& c) {
|
|
1018
1018
|
|
1019
1019
|
// Overload of c_is_sorted_until() for performing a `comp` comparison other than
|
1020
1020
|
// the default `operator<`.
|
1021
|
-
template <typename C, typename
|
1021
|
+
template <typename C, typename LessThan>
|
1022
1022
|
container_algorithm_internal::ContainerIter<C> c_is_sorted_until(
|
1023
|
-
C& c,
|
1023
|
+
C& c, LessThan&& comp) {
|
1024
1024
|
return std::is_sorted_until(container_algorithm_internal::c_begin(c),
|
1025
1025
|
container_algorithm_internal::c_end(c),
|
1026
|
-
std::forward<
|
1026
|
+
std::forward<LessThan>(comp));
|
1027
1027
|
}
|
1028
1028
|
|
1029
1029
|
// c_nth_element()
|
@@ -1043,14 +1043,14 @@ void c_nth_element(
|
|
1043
1043
|
|
1044
1044
|
// Overload of c_nth_element() for performing a `comp` comparison other than
|
1045
1045
|
// the default `operator<`.
|
1046
|
-
template <typename RandomAccessContainer, typename
|
1046
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1047
1047
|
void c_nth_element(
|
1048
1048
|
RandomAccessContainer& sequence,
|
1049
1049
|
container_algorithm_internal::ContainerIter<RandomAccessContainer> nth,
|
1050
|
-
|
1050
|
+
LessThan&& comp) {
|
1051
1051
|
std::nth_element(container_algorithm_internal::c_begin(sequence), nth,
|
1052
1052
|
container_algorithm_internal::c_end(sequence),
|
1053
|
-
std::forward<
|
1053
|
+
std::forward<LessThan>(comp));
|
1054
1054
|
}
|
1055
1055
|
|
1056
1056
|
//------------------------------------------------------------------------------
|
@@ -1072,12 +1072,12 @@ container_algorithm_internal::ContainerIter<Sequence> c_lower_bound(
|
|
1072
1072
|
|
1073
1073
|
// Overload of c_lower_bound() for performing a `comp` comparison other than
|
1074
1074
|
// the default `operator<`.
|
1075
|
-
template <typename Sequence, typename T, typename
|
1075
|
+
template <typename Sequence, typename T, typename LessThan>
|
1076
1076
|
container_algorithm_internal::ContainerIter<Sequence> c_lower_bound(
|
1077
|
-
Sequence& sequence, T&& value,
|
1077
|
+
Sequence& sequence, T&& value, LessThan&& comp) {
|
1078
1078
|
return std::lower_bound(container_algorithm_internal::c_begin(sequence),
|
1079
1079
|
container_algorithm_internal::c_end(sequence),
|
1080
|
-
std::forward<T>(value), std::forward<
|
1080
|
+
std::forward<T>(value), std::forward<LessThan>(comp));
|
1081
1081
|
}
|
1082
1082
|
|
1083
1083
|
// c_upper_bound()
|
@@ -1095,12 +1095,12 @@ container_algorithm_internal::ContainerIter<Sequence> c_upper_bound(
|
|
1095
1095
|
|
1096
1096
|
// Overload of c_upper_bound() for performing a `comp` comparison other than
|
1097
1097
|
// the default `operator<`.
|
1098
|
-
template <typename Sequence, typename T, typename
|
1098
|
+
template <typename Sequence, typename T, typename LessThan>
|
1099
1099
|
container_algorithm_internal::ContainerIter<Sequence> c_upper_bound(
|
1100
|
-
Sequence& sequence, T&& value,
|
1100
|
+
Sequence& sequence, T&& value, LessThan&& comp) {
|
1101
1101
|
return std::upper_bound(container_algorithm_internal::c_begin(sequence),
|
1102
1102
|
container_algorithm_internal::c_end(sequence),
|
1103
|
-
std::forward<T>(value), std::forward<
|
1103
|
+
std::forward<T>(value), std::forward<LessThan>(comp));
|
1104
1104
|
}
|
1105
1105
|
|
1106
1106
|
// c_equal_range()
|
@@ -1118,12 +1118,12 @@ c_equal_range(Sequence& sequence, T&& value) {
|
|
1118
1118
|
|
1119
1119
|
// Overload of c_equal_range() for performing a `comp` comparison other than
|
1120
1120
|
// the default `operator<`.
|
1121
|
-
template <typename Sequence, typename T, typename
|
1121
|
+
template <typename Sequence, typename T, typename LessThan>
|
1122
1122
|
container_algorithm_internal::ContainerIterPairType<Sequence, Sequence>
|
1123
|
-
c_equal_range(Sequence& sequence, T&& value,
|
1123
|
+
c_equal_range(Sequence& sequence, T&& value, LessThan&& comp) {
|
1124
1124
|
return std::equal_range(container_algorithm_internal::c_begin(sequence),
|
1125
1125
|
container_algorithm_internal::c_end(sequence),
|
1126
|
-
std::forward<T>(value), std::forward<
|
1126
|
+
std::forward<T>(value), std::forward<LessThan>(comp));
|
1127
1127
|
}
|
1128
1128
|
|
1129
1129
|
// c_binary_search()
|
@@ -1140,12 +1140,12 @@ bool c_binary_search(Sequence&& sequence, T&& value) {
|
|
1140
1140
|
|
1141
1141
|
// Overload of c_binary_search() for performing a `comp` comparison other than
|
1142
1142
|
// the default `operator<`.
|
1143
|
-
template <typename Sequence, typename T, typename
|
1144
|
-
bool c_binary_search(Sequence&& sequence, T&& value,
|
1143
|
+
template <typename Sequence, typename T, typename LessThan>
|
1144
|
+
bool c_binary_search(Sequence&& sequence, T&& value, LessThan&& comp) {
|
1145
1145
|
return std::binary_search(container_algorithm_internal::c_begin(sequence),
|
1146
1146
|
container_algorithm_internal::c_end(sequence),
|
1147
1147
|
std::forward<T>(value),
|
1148
|
-
std::forward<
|
1148
|
+
std::forward<LessThan>(comp));
|
1149
1149
|
}
|
1150
1150
|
|
1151
1151
|
//------------------------------------------------------------------------------
|
@@ -1166,14 +1166,14 @@ OutputIterator c_merge(const C1& c1, const C2& c2, OutputIterator result) {
|
|
1166
1166
|
|
1167
1167
|
// Overload of c_merge() for performing a `comp` comparison other than
|
1168
1168
|
// the default `operator<`.
|
1169
|
-
template <typename C1, typename C2, typename OutputIterator, typename
|
1169
|
+
template <typename C1, typename C2, typename OutputIterator, typename LessThan>
|
1170
1170
|
OutputIterator c_merge(const C1& c1, const C2& c2, OutputIterator result,
|
1171
|
-
|
1171
|
+
LessThan&& comp) {
|
1172
1172
|
return std::merge(container_algorithm_internal::c_begin(c1),
|
1173
1173
|
container_algorithm_internal::c_end(c1),
|
1174
1174
|
container_algorithm_internal::c_begin(c2),
|
1175
1175
|
container_algorithm_internal::c_end(c2), result,
|
1176
|
-
std::forward<
|
1176
|
+
std::forward<LessThan>(comp));
|
1177
1177
|
}
|
1178
1178
|
|
1179
1179
|
// c_inplace_merge()
|
@@ -1189,13 +1189,13 @@ void c_inplace_merge(C& c,
|
|
1189
1189
|
|
1190
1190
|
// Overload of c_inplace_merge() for performing a merge using a `comp` other
|
1191
1191
|
// than `operator<`.
|
1192
|
-
template <typename C, typename
|
1192
|
+
template <typename C, typename LessThan>
|
1193
1193
|
void c_inplace_merge(C& c,
|
1194
1194
|
container_algorithm_internal::ContainerIter<C> middle,
|
1195
|
-
|
1195
|
+
LessThan&& comp) {
|
1196
1196
|
std::inplace_merge(container_algorithm_internal::c_begin(c), middle,
|
1197
1197
|
container_algorithm_internal::c_end(c),
|
1198
|
-
std::forward<
|
1198
|
+
std::forward<LessThan>(comp));
|
1199
1199
|
}
|
1200
1200
|
|
1201
1201
|
// c_includes()
|
@@ -1213,13 +1213,13 @@ bool c_includes(const C1& c1, const C2& c2) {
|
|
1213
1213
|
|
1214
1214
|
// Overload of c_includes() for performing a merge using a `comp` other than
|
1215
1215
|
// `operator<`.
|
1216
|
-
template <typename C1, typename C2, typename
|
1217
|
-
bool c_includes(const C1& c1, const C2& c2,
|
1216
|
+
template <typename C1, typename C2, typename LessThan>
|
1217
|
+
bool c_includes(const C1& c1, const C2& c2, LessThan&& comp) {
|
1218
1218
|
return std::includes(container_algorithm_internal::c_begin(c1),
|
1219
1219
|
container_algorithm_internal::c_end(c1),
|
1220
1220
|
container_algorithm_internal::c_begin(c2),
|
1221
1221
|
container_algorithm_internal::c_end(c2),
|
1222
|
-
std::forward<
|
1222
|
+
std::forward<LessThan>(comp));
|
1223
1223
|
}
|
1224
1224
|
|
1225
1225
|
// c_set_union()
|
@@ -1243,7 +1243,7 @@ OutputIterator c_set_union(const C1& c1, const C2& c2, OutputIterator output) {
|
|
1243
1243
|
|
1244
1244
|
// Overload of c_set_union() for performing a merge using a `comp` other than
|
1245
1245
|
// `operator<`.
|
1246
|
-
template <typename C1, typename C2, typename OutputIterator, typename
|
1246
|
+
template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
1247
1247
|
typename = typename std::enable_if<
|
1248
1248
|
!container_algorithm_internal::IsUnorderedContainer<C1>::value,
|
1249
1249
|
void>::type,
|
@@ -1251,18 +1251,18 @@ template <typename C1, typename C2, typename OutputIterator, typename Compare,
|
|
1251
1251
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
1252
1252
|
void>::type>
|
1253
1253
|
OutputIterator c_set_union(const C1& c1, const C2& c2, OutputIterator output,
|
1254
|
-
|
1254
|
+
LessThan&& comp) {
|
1255
1255
|
return std::set_union(container_algorithm_internal::c_begin(c1),
|
1256
1256
|
container_algorithm_internal::c_end(c1),
|
1257
1257
|
container_algorithm_internal::c_begin(c2),
|
1258
1258
|
container_algorithm_internal::c_end(c2), output,
|
1259
|
-
std::forward<
|
1259
|
+
std::forward<LessThan>(comp));
|
1260
1260
|
}
|
1261
1261
|
|
1262
1262
|
// c_set_intersection()
|
1263
1263
|
//
|
1264
1264
|
// Container-based version of the <algorithm> `std::set_intersection()` function
|
1265
|
-
// to return an iterator containing the intersection of two containers.
|
1265
|
+
// to return an iterator containing the intersection of two sorted containers.
|
1266
1266
|
template <typename C1, typename C2, typename OutputIterator,
|
1267
1267
|
typename = typename std::enable_if<
|
1268
1268
|
!container_algorithm_internal::IsUnorderedContainer<C1>::value,
|
@@ -1272,6 +1272,11 @@ template <typename C1, typename C2, typename OutputIterator,
|
|
1272
1272
|
void>::type>
|
1273
1273
|
OutputIterator c_set_intersection(const C1& c1, const C2& c2,
|
1274
1274
|
OutputIterator output) {
|
1275
|
+
// In debug builds, ensure that both containers are sorted with respect to the
|
1276
|
+
// default comparator. std::set_intersection requires the containers be sorted
|
1277
|
+
// using operator<.
|
1278
|
+
assert(absl::c_is_sorted(c1));
|
1279
|
+
assert(absl::c_is_sorted(c2));
|
1275
1280
|
return std::set_intersection(container_algorithm_internal::c_begin(c1),
|
1276
1281
|
container_algorithm_internal::c_end(c1),
|
1277
1282
|
container_algorithm_internal::c_begin(c2),
|
@@ -1280,7 +1285,7 @@ OutputIterator c_set_intersection(const C1& c1, const C2& c2,
|
|
1280
1285
|
|
1281
1286
|
// Overload of c_set_intersection() for performing a merge using a `comp` other
|
1282
1287
|
// than `operator<`.
|
1283
|
-
template <typename C1, typename C2, typename OutputIterator, typename
|
1288
|
+
template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
1284
1289
|
typename = typename std::enable_if<
|
1285
1290
|
!container_algorithm_internal::IsUnorderedContainer<C1>::value,
|
1286
1291
|
void>::type,
|
@@ -1288,12 +1293,17 @@ template <typename C1, typename C2, typename OutputIterator, typename Compare,
|
|
1288
1293
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
1289
1294
|
void>::type>
|
1290
1295
|
OutputIterator c_set_intersection(const C1& c1, const C2& c2,
|
1291
|
-
OutputIterator output,
|
1296
|
+
OutputIterator output, LessThan&& comp) {
|
1297
|
+
// In debug builds, ensure that both containers are sorted with respect to the
|
1298
|
+
// default comparator. std::set_intersection requires the containers be sorted
|
1299
|
+
// using the same comparator.
|
1300
|
+
assert(absl::c_is_sorted(c1, comp));
|
1301
|
+
assert(absl::c_is_sorted(c2, comp));
|
1292
1302
|
return std::set_intersection(container_algorithm_internal::c_begin(c1),
|
1293
1303
|
container_algorithm_internal::c_end(c1),
|
1294
1304
|
container_algorithm_internal::c_begin(c2),
|
1295
1305
|
container_algorithm_internal::c_end(c2), output,
|
1296
|
-
std::forward<
|
1306
|
+
std::forward<LessThan>(comp));
|
1297
1307
|
}
|
1298
1308
|
|
1299
1309
|
// c_set_difference()
|
@@ -1318,7 +1328,7 @@ OutputIterator c_set_difference(const C1& c1, const C2& c2,
|
|
1318
1328
|
|
1319
1329
|
// Overload of c_set_difference() for performing a merge using a `comp` other
|
1320
1330
|
// than `operator<`.
|
1321
|
-
template <typename C1, typename C2, typename OutputIterator, typename
|
1331
|
+
template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
1322
1332
|
typename = typename std::enable_if<
|
1323
1333
|
!container_algorithm_internal::IsUnorderedContainer<C1>::value,
|
1324
1334
|
void>::type,
|
@@ -1326,12 +1336,12 @@ template <typename C1, typename C2, typename OutputIterator, typename Compare,
|
|
1326
1336
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
1327
1337
|
void>::type>
|
1328
1338
|
OutputIterator c_set_difference(const C1& c1, const C2& c2,
|
1329
|
-
OutputIterator output,
|
1339
|
+
OutputIterator output, LessThan&& comp) {
|
1330
1340
|
return std::set_difference(container_algorithm_internal::c_begin(c1),
|
1331
1341
|
container_algorithm_internal::c_end(c1),
|
1332
1342
|
container_algorithm_internal::c_begin(c2),
|
1333
1343
|
container_algorithm_internal::c_end(c2), output,
|
1334
|
-
std::forward<
|
1344
|
+
std::forward<LessThan>(comp));
|
1335
1345
|
}
|
1336
1346
|
|
1337
1347
|
// c_set_symmetric_difference()
|
@@ -1357,7 +1367,7 @@ OutputIterator c_set_symmetric_difference(const C1& c1, const C2& c2,
|
|
1357
1367
|
|
1358
1368
|
// Overload of c_set_symmetric_difference() for performing a merge using a
|
1359
1369
|
// `comp` other than `operator<`.
|
1360
|
-
template <typename C1, typename C2, typename OutputIterator, typename
|
1370
|
+
template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
1361
1371
|
typename = typename std::enable_if<
|
1362
1372
|
!container_algorithm_internal::IsUnorderedContainer<C1>::value,
|
1363
1373
|
void>::type,
|
@@ -1366,13 +1376,13 @@ template <typename C1, typename C2, typename OutputIterator, typename Compare,
|
|
1366
1376
|
void>::type>
|
1367
1377
|
OutputIterator c_set_symmetric_difference(const C1& c1, const C2& c2,
|
1368
1378
|
OutputIterator output,
|
1369
|
-
|
1379
|
+
LessThan&& comp) {
|
1370
1380
|
return std::set_symmetric_difference(
|
1371
1381
|
container_algorithm_internal::c_begin(c1),
|
1372
1382
|
container_algorithm_internal::c_end(c1),
|
1373
1383
|
container_algorithm_internal::c_begin(c2),
|
1374
1384
|
container_algorithm_internal::c_end(c2), output,
|
1375
|
-
std::forward<
|
1385
|
+
std::forward<LessThan>(comp));
|
1376
1386
|
}
|
1377
1387
|
|
1378
1388
|
//------------------------------------------------------------------------------
|
@@ -1391,11 +1401,11 @@ void c_push_heap(RandomAccessContainer& sequence) {
|
|
1391
1401
|
|
1392
1402
|
// Overload of c_push_heap() for performing a push operation on a heap using a
|
1393
1403
|
// `comp` other than `operator<`.
|
1394
|
-
template <typename RandomAccessContainer, typename
|
1395
|
-
void c_push_heap(RandomAccessContainer& sequence,
|
1404
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1405
|
+
void c_push_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
1396
1406
|
std::push_heap(container_algorithm_internal::c_begin(sequence),
|
1397
1407
|
container_algorithm_internal::c_end(sequence),
|
1398
|
-
std::forward<
|
1408
|
+
std::forward<LessThan>(comp));
|
1399
1409
|
}
|
1400
1410
|
|
1401
1411
|
// c_pop_heap()
|
@@ -1410,11 +1420,11 @@ void c_pop_heap(RandomAccessContainer& sequence) {
|
|
1410
1420
|
|
1411
1421
|
// Overload of c_pop_heap() for performing a pop operation on a heap using a
|
1412
1422
|
// `comp` other than `operator<`.
|
1413
|
-
template <typename RandomAccessContainer, typename
|
1414
|
-
void c_pop_heap(RandomAccessContainer& sequence,
|
1423
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1424
|
+
void c_pop_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
1415
1425
|
std::pop_heap(container_algorithm_internal::c_begin(sequence),
|
1416
1426
|
container_algorithm_internal::c_end(sequence),
|
1417
|
-
std::forward<
|
1427
|
+
std::forward<LessThan>(comp));
|
1418
1428
|
}
|
1419
1429
|
|
1420
1430
|
// c_make_heap()
|
@@ -1429,11 +1439,11 @@ void c_make_heap(RandomAccessContainer& sequence) {
|
|
1429
1439
|
|
1430
1440
|
// Overload of c_make_heap() for performing heap comparisons using a
|
1431
1441
|
// `comp` other than `operator<`
|
1432
|
-
template <typename RandomAccessContainer, typename
|
1433
|
-
void c_make_heap(RandomAccessContainer& sequence,
|
1442
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1443
|
+
void c_make_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
1434
1444
|
std::make_heap(container_algorithm_internal::c_begin(sequence),
|
1435
1445
|
container_algorithm_internal::c_end(sequence),
|
1436
|
-
std::forward<
|
1446
|
+
std::forward<LessThan>(comp));
|
1437
1447
|
}
|
1438
1448
|
|
1439
1449
|
// c_sort_heap()
|
@@ -1448,11 +1458,11 @@ void c_sort_heap(RandomAccessContainer& sequence) {
|
|
1448
1458
|
|
1449
1459
|
// Overload of c_sort_heap() for performing heap comparisons using a
|
1450
1460
|
// `comp` other than `operator<`
|
1451
|
-
template <typename RandomAccessContainer, typename
|
1452
|
-
void c_sort_heap(RandomAccessContainer& sequence,
|
1461
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1462
|
+
void c_sort_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
1453
1463
|
std::sort_heap(container_algorithm_internal::c_begin(sequence),
|
1454
1464
|
container_algorithm_internal::c_end(sequence),
|
1455
|
-
std::forward<
|
1465
|
+
std::forward<LessThan>(comp));
|
1456
1466
|
}
|
1457
1467
|
|
1458
1468
|
// c_is_heap()
|
@@ -1467,11 +1477,11 @@ bool c_is_heap(const RandomAccessContainer& sequence) {
|
|
1467
1477
|
|
1468
1478
|
// Overload of c_is_heap() for performing heap comparisons using a
|
1469
1479
|
// `comp` other than `operator<`
|
1470
|
-
template <typename RandomAccessContainer, typename
|
1471
|
-
bool c_is_heap(const RandomAccessContainer& sequence,
|
1480
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1481
|
+
bool c_is_heap(const RandomAccessContainer& sequence, LessThan&& comp) {
|
1472
1482
|
return std::is_heap(container_algorithm_internal::c_begin(sequence),
|
1473
1483
|
container_algorithm_internal::c_end(sequence),
|
1474
|
-
std::forward<
|
1484
|
+
std::forward<LessThan>(comp));
|
1475
1485
|
}
|
1476
1486
|
|
1477
1487
|
// c_is_heap_until()
|
@@ -1487,12 +1497,12 @@ c_is_heap_until(RandomAccessContainer& sequence) {
|
|
1487
1497
|
|
1488
1498
|
// Overload of c_is_heap_until() for performing heap comparisons using a
|
1489
1499
|
// `comp` other than `operator<`
|
1490
|
-
template <typename RandomAccessContainer, typename
|
1500
|
+
template <typename RandomAccessContainer, typename LessThan>
|
1491
1501
|
container_algorithm_internal::ContainerIter<RandomAccessContainer>
|
1492
|
-
c_is_heap_until(RandomAccessContainer& sequence,
|
1502
|
+
c_is_heap_until(RandomAccessContainer& sequence, LessThan&& comp) {
|
1493
1503
|
return std::is_heap_until(container_algorithm_internal::c_begin(sequence),
|
1494
1504
|
container_algorithm_internal::c_end(sequence),
|
1495
|
-
std::forward<
|
1505
|
+
std::forward<LessThan>(comp));
|
1496
1506
|
}
|
1497
1507
|
|
1498
1508
|
//------------------------------------------------------------------------------
|
@@ -1513,12 +1523,12 @@ container_algorithm_internal::ContainerIter<Sequence> c_min_element(
|
|
1513
1523
|
|
1514
1524
|
// Overload of c_min_element() for performing a `comp` comparison other than
|
1515
1525
|
// `operator<`.
|
1516
|
-
template <typename Sequence, typename
|
1526
|
+
template <typename Sequence, typename LessThan>
|
1517
1527
|
container_algorithm_internal::ContainerIter<Sequence> c_min_element(
|
1518
|
-
Sequence& sequence,
|
1528
|
+
Sequence& sequence, LessThan&& comp) {
|
1519
1529
|
return std::min_element(container_algorithm_internal::c_begin(sequence),
|
1520
1530
|
container_algorithm_internal::c_end(sequence),
|
1521
|
-
std::forward<
|
1531
|
+
std::forward<LessThan>(comp));
|
1522
1532
|
}
|
1523
1533
|
|
1524
1534
|
// c_max_element()
|
@@ -1535,12 +1545,12 @@ container_algorithm_internal::ContainerIter<Sequence> c_max_element(
|
|
1535
1545
|
|
1536
1546
|
// Overload of c_max_element() for performing a `comp` comparison other than
|
1537
1547
|
// `operator<`.
|
1538
|
-
template <typename Sequence, typename
|
1548
|
+
template <typename Sequence, typename LessThan>
|
1539
1549
|
container_algorithm_internal::ContainerIter<Sequence> c_max_element(
|
1540
|
-
Sequence& sequence,
|
1550
|
+
Sequence& sequence, LessThan&& comp) {
|
1541
1551
|
return std::max_element(container_algorithm_internal::c_begin(sequence),
|
1542
1552
|
container_algorithm_internal::c_end(sequence),
|
1543
|
-
std::forward<
|
1553
|
+
std::forward<LessThan>(comp));
|
1544
1554
|
}
|
1545
1555
|
|
1546
1556
|
// c_minmax_element()
|
@@ -1558,12 +1568,12 @@ c_minmax_element(C& c) {
|
|
1558
1568
|
|
1559
1569
|
// Overload of c_minmax_element() for performing `comp` comparisons other than
|
1560
1570
|
// `operator<`.
|
1561
|
-
template <typename C, typename
|
1571
|
+
template <typename C, typename LessThan>
|
1562
1572
|
container_algorithm_internal::ContainerIterPairType<C, C>
|
1563
|
-
c_minmax_element(C& c,
|
1573
|
+
c_minmax_element(C& c, LessThan&& comp) {
|
1564
1574
|
return std::minmax_element(container_algorithm_internal::c_begin(c),
|
1565
1575
|
container_algorithm_internal::c_end(c),
|
1566
|
-
std::forward<
|
1576
|
+
std::forward<LessThan>(comp));
|
1567
1577
|
}
|
1568
1578
|
|
1569
1579
|
//------------------------------------------------------------------------------
|
@@ -1588,15 +1598,15 @@ bool c_lexicographical_compare(Sequence1&& sequence1, Sequence2&& sequence2) {
|
|
1588
1598
|
|
1589
1599
|
// Overload of c_lexicographical_compare() for performing a lexicographical
|
1590
1600
|
// comparison using a `comp` operator instead of `operator<`.
|
1591
|
-
template <typename Sequence1, typename Sequence2, typename
|
1601
|
+
template <typename Sequence1, typename Sequence2, typename LessThan>
|
1592
1602
|
bool c_lexicographical_compare(Sequence1&& sequence1, Sequence2&& sequence2,
|
1593
|
-
|
1603
|
+
LessThan&& comp) {
|
1594
1604
|
return std::lexicographical_compare(
|
1595
1605
|
container_algorithm_internal::c_begin(sequence1),
|
1596
1606
|
container_algorithm_internal::c_end(sequence1),
|
1597
1607
|
container_algorithm_internal::c_begin(sequence2),
|
1598
1608
|
container_algorithm_internal::c_end(sequence2),
|
1599
|
-
std::forward<
|
1609
|
+
std::forward<LessThan>(comp));
|
1600
1610
|
}
|
1601
1611
|
|
1602
1612
|
// c_next_permutation()
|
@@ -1612,11 +1622,11 @@ bool c_next_permutation(C& c) {
|
|
1612
1622
|
|
1613
1623
|
// Overload of c_next_permutation() for performing a lexicographical
|
1614
1624
|
// comparison using a `comp` operator instead of `operator<`.
|
1615
|
-
template <typename C, typename
|
1616
|
-
bool c_next_permutation(C& c,
|
1625
|
+
template <typename C, typename LessThan>
|
1626
|
+
bool c_next_permutation(C& c, LessThan&& comp) {
|
1617
1627
|
return std::next_permutation(container_algorithm_internal::c_begin(c),
|
1618
1628
|
container_algorithm_internal::c_end(c),
|
1619
|
-
std::forward<
|
1629
|
+
std::forward<LessThan>(comp));
|
1620
1630
|
}
|
1621
1631
|
|
1622
1632
|
// c_prev_permutation()
|
@@ -1632,11 +1642,11 @@ bool c_prev_permutation(C& c) {
|
|
1632
1642
|
|
1633
1643
|
// Overload of c_prev_permutation() for performing a lexicographical
|
1634
1644
|
// comparison using a `comp` operator instead of `operator<`.
|
1635
|
-
template <typename C, typename
|
1636
|
-
bool c_prev_permutation(C& c,
|
1645
|
+
template <typename C, typename LessThan>
|
1646
|
+
bool c_prev_permutation(C& c, LessThan&& comp) {
|
1637
1647
|
return std::prev_permutation(container_algorithm_internal::c_begin(c),
|
1638
1648
|
container_algorithm_internal::c_end(c),
|
1639
|
-
std::forward<
|
1649
|
+
std::forward<LessThan>(comp));
|
1640
1650
|
}
|
1641
1651
|
|
1642
1652
|
//------------------------------------------------------------------------------
|