grpc 1.84.0 → 1.85.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +40 -27
- data/include/grpc/event_engine/memory_allocator.h +1 -0
- data/include/grpc/grpc.h +3 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +4 -0
- data/src/core/call/call_filters.h +10 -10
- data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
- data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
- data/src/core/call/filter_fusion.h +15 -15
- data/src/core/call/interception_chain.h +3 -3
- data/src/core/call/metadata_batch.cc +1 -0
- data/src/core/call/metadata_batch.h +45 -33
- data/src/core/call/parsed_metadata.h +3 -3
- data/src/core/call/request_buffer.cc +6 -6
- data/src/core/call/request_buffer.h +1 -1
- data/src/core/channelz/channel_trace.cc +5 -5
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +9 -9
- data/src/core/channelz/channelz.h +12 -12
- data/src/core/channelz/channelz_registry.cc +10 -10
- data/src/core/channelz/ztrace_collector.h +5 -5
- data/src/core/client_channel/client_channel.cc +4 -4
- data/src/core/client_channel/client_channel_filter.cc +14 -14
- data/src/core/client_channel/global_subchannel_pool.cc +4 -4
- data/src/core/client_channel/subchannel.cc +24 -23
- data/src/core/client_channel/subchannel_stream_client.cc +5 -5
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
- data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
- data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
- data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
- data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
- data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
- data/src/core/credentials/transport/tls/tls_utils.h +9 -0
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
- data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
- data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
- data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
- data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
- data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
- data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
- data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
- data/src/core/handshaker/handshaker.cc +4 -4
- data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
- data/src/core/handshaker/security/secure_endpoint.cc +13 -13
- data/src/core/handshaker/security/security_handshaker.cc +6 -6
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
- data/src/core/lib/channel/channel_args.cc +20 -0
- data/src/core/lib/channel/channel_args.h +17 -17
- data/src/core/lib/channel/promise_based_filter.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.h +66 -27
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/ares_resolver.cc +14 -14
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
- data/src/core/lib/event_engine/default_event_engine.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
- data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
- data/src/core/lib/experiments/experiments.cc +48 -0
- data/src/core/lib/experiments/experiments.h +24 -0
- data/src/core/lib/iomgr/buffer_list.cc +3 -3
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/combiner.cc +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_posix.cc +7 -7
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +1 -1
- data/src/core/lib/promise/arena_promise.h +7 -7
- data/src/core/lib/promise/detail/promise_factory.h +8 -8
- data/src/core/lib/promise/detail/promise_like.h +4 -4
- data/src/core/lib/promise/inter_activity_latch.h +6 -6
- data/src/core/lib/promise/inter_activity_pipe.h +1 -1
- data/src/core/lib/promise/observable.h +3 -3
- data/src/core/lib/promise/party.cc +1 -1
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +3 -3
- data/src/core/lib/resource_quota/memory_quota.cc +16 -16
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/resource_quota/thread_quota.cc +3 -3
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.h +1 -1
- data/src/core/lib/surface/call.cc +8 -7
- data/src/core/lib/surface/call.h +3 -3
- data/src/core/lib/surface/call_utils.h +4 -0
- data/src/core/lib/surface/channel.cc +1 -1
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/init.cc +7 -7
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +2 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
- data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
- data/src/core/load_balancing/autosharding/autosharding.h +78 -0
- data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
- data/src/core/load_balancing/health_check_client.cc +7 -7
- data/src/core/load_balancing/lb_policy.cc +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +5 -5
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
- data/src/core/load_balancing/rls/rls.cc +23 -17
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
- data/src/core/load_balancing/xds/cds.cc +6 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
- data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
- data/src/core/mitigation_engine/mitigation_engine.h +28 -4
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
- data/src/core/resolver/dns/dns_resolver.cc +7 -7
- data/src/core/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
- data/src/core/server/server.cc +30 -30
- data/src/core/server/server.h +4 -3
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
- data/src/core/telemetry/default_tcp_tracer.cc +1 -1
- data/src/core/telemetry/instrument.cc +30 -16
- data/src/core/telemetry/instrument.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +46 -13
- data/src/core/tsi/ssl_transport_security.h +7 -0
- data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
- data/src/core/util/event_log.cc +3 -3
- data/src/core/util/http_client/httpcli.cc +5 -5
- data/src/core/util/http_client/httpcli.h +1 -1
- data/src/core/util/json/json_object_loader.cc +7 -0
- data/src/core/util/json/json_object_loader.h +17 -2
- data/src/core/util/latent_see.cc +123 -36
- data/src/core/util/latent_see.h +14 -1
- data/src/core/util/mpscq.cc +1 -1
- data/src/core/util/notification.h +4 -4
- data/src/core/util/sync.h +20 -6
- data/src/core/util/table.h +20 -22
- data/src/core/util/work_serializer.cc +2 -2
- data/src/core/xds/grpc/blackboard.cc +4 -3
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
- data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
- data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint.cc +1 -1
- data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
- data/src/core/xds/grpc/xds_matcher.h +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
- data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
- data/src/core/xds/xds_client/lrs_client.cc +22 -19
- data/src/core/xds/xds_client/xds_client.cc +19 -16
- data/src/core/xds/xds_client/xds_transport.h +49 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
- data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
- data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
- data/third_party/abseil-cpp/absl/base/casts.h +135 -2
- data/third_party/abseil-cpp/absl/base/config.h +63 -41
- data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- data/third_party/abseil-cpp/absl/base/macros.h +76 -37
- data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
- data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
- data/third_party/abseil-cpp/absl/base/options.h +46 -18
- data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
- data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
- data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
- data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
- data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
- data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
- data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
- data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
- data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
- data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
- data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
- data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
- data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
- data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- data/third_party/abseil-cpp/absl/log/log.h +2 -2
- data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
- data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
- data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
- data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
- data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
- data/third_party/abseil-cpp/absl/status/status.cc +66 -70
- data/third_party/abseil-cpp/absl/status/status.h +254 -23
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
- data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
- data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
- data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
- data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
- data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
- data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
- data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
- data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
- data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
- data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
- data/third_party/abseil-cpp/absl/time/clock.h +3 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
- data/third_party/abseil-cpp/absl/time/format.cc +3 -10
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- data/third_party/abseil-cpp/absl/time/time.cc +4 -4
- data/third_party/abseil-cpp/absl/time/time.h +14 -13
- data/third_party/abseil-cpp/absl/types/compare.h +64 -63
- data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
- data/third_party/abseil-cpp/absl/types/optional.h +31 -4
- data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
- data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
- data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
- data/third_party/abseil-cpp/absl/types/span.h +67 -38
- data/third_party/abseil-cpp/absl/types/variant.h +75 -18
- data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
- data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
- data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
- data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
- data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
- data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
- data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
- data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
- data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
- data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
- data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
- data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
- data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
- data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
- data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
- data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
- data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
- data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
- data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
- data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
- data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
- data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
- data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
- data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
- data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
- data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
- data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
- data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
- data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
- data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
- data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
- data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
- data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
- data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
- data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
- data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
- data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
- data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
- data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
- data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
- data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
- data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
- data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
- data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
- data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
- data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
- data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
- data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
- data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
- data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
- data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
- data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
- data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
- data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
- data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
- data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
- data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
- data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
- data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
- data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
- data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
- data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
- data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
- data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
- data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
- data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
- data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
- data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
- data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
- data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
- data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
- data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
- data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
- data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
- data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
- data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
- data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
- data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
- data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
- data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
- data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
- data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
- data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
- data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
- data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
- data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
- data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
- data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
- data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
- data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
- data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
- data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
- data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
- data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
- data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
- data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
- data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
- data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
- data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
- data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
- data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
- data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
- data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
- data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
- data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
- data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
- data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
- data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
- data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
- data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
- data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
- data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
- data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
- data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
- data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
- data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
- data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
- data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
- data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
- data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
- data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
- data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
- data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
- data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
- data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
- data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
- data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
- data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
- data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
- data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
- data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
- data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
- data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
- data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
- data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
- data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
- data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
- data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
- data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
- data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
- data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
- data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
- data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
- data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
- data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
- data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
- data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
- data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
- data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
- data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
- data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
- data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
- data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
- data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
- data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
- data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
- data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
- data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
- data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
- data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
- data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
- data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
- data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
- data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
- data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
- data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
- data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
- data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
- data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
- data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
- data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
- data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
- data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
- data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
- data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
- data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
- data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
- data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
- data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
- data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
- data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
- data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
- data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
- data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
- data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
- data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
- data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
- data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
- data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
- data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
- data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
- data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
- data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
- data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
- data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
- data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
- data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
- data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
- data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
- data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
- data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
- data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
- data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
- data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
- data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
- data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
- data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
- data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
- data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
- data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
- data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
- data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
- data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
- data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
- data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
- data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
- data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
- data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
- data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
- data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
- data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
- data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
- data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
- data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
- data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
- data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
- data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
- data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
- data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
- data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
- data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
- data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
- data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
- data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
- data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
- data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
- data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
- data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
- data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
- data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
- data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
- data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
- data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
- data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
- data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
- data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
- data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
- data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
- data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
- data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
- data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
- data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
- data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
- data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
- data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
- data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
- data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
- data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
- data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
- data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
- data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
- data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
- data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
- data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
- data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
- data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
- data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
- data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
- data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
- data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
- data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
- data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
- data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
- data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
- metadata +77 -52
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
- data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
- data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
- data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
- data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
- data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
- data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
- data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
- data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
- data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
|
@@ -52,8 +52,9 @@
|
|
|
52
52
|
|
|
53
53
|
#include "absl/algorithm/algorithm.h"
|
|
54
54
|
#include "absl/base/config.h"
|
|
55
|
+
#include "absl/base/internal/hardening.h"
|
|
56
|
+
#include "absl/base/internal/iterator_traits.h"
|
|
55
57
|
#include "absl/base/macros.h"
|
|
56
|
-
#include "absl/base/nullability.h"
|
|
57
58
|
#include "absl/meta/type_traits.h"
|
|
58
59
|
|
|
59
60
|
namespace absl {
|
|
@@ -107,6 +108,42 @@ ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 ContainerIter<C> c_end(C& c) {
|
|
|
107
108
|
return end(c);
|
|
108
109
|
}
|
|
109
110
|
|
|
111
|
+
// Helper to check that the `OutputRange` has enough space.
|
|
112
|
+
// Only performs the check if the iterators are ForwardIterators or better.
|
|
113
|
+
template <typename InputSequence, typename Size, typename OutputRange>
|
|
114
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 void AssertCopyNSize(InputSequence& input,
|
|
115
|
+
Size n,
|
|
116
|
+
OutputRange& output) {
|
|
117
|
+
using InputIter = ContainerIter<InputSequence>;
|
|
118
|
+
using OutputIter = ContainerIter<OutputRange>;
|
|
119
|
+
|
|
120
|
+
if constexpr (base_internal::IsAtLeastForwardIterator<InputIter>::value) {
|
|
121
|
+
base_internal::HardeningAssert(
|
|
122
|
+
n <= std::distance(container_algorithm_internal::c_begin(input),
|
|
123
|
+
container_algorithm_internal::c_end(input)));
|
|
124
|
+
}
|
|
125
|
+
if constexpr (base_internal::IsAtLeastForwardIterator<OutputIter>::value) {
|
|
126
|
+
base_internal::HardeningAssert(
|
|
127
|
+
n <= std::distance(container_algorithm_internal::c_begin(output),
|
|
128
|
+
container_algorithm_internal::c_end(output)));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
template <typename InputSequence, typename OutputRange>
|
|
133
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 void AssertCopySize(InputSequence& input,
|
|
134
|
+
OutputRange& output) {
|
|
135
|
+
using InputIter = ContainerIter<InputSequence>;
|
|
136
|
+
using OutputIter = ContainerIter<OutputRange>;
|
|
137
|
+
if constexpr (base_internal::IsAtLeastForwardIterator<InputIter>::value &&
|
|
138
|
+
base_internal::IsAtLeastForwardIterator<OutputIter>::value) {
|
|
139
|
+
base_internal::HardeningAssert(
|
|
140
|
+
std::distance(container_algorithm_internal::c_begin(input),
|
|
141
|
+
container_algorithm_internal::c_end(input)) <=
|
|
142
|
+
std::distance(container_algorithm_internal::c_begin(output),
|
|
143
|
+
container_algorithm_internal::c_end(output)));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
110
147
|
template <typename T>
|
|
111
148
|
struct IsUnorderedContainer : std::false_type {};
|
|
112
149
|
|
|
@@ -118,6 +155,27 @@ template <class Key, class Hash, class KeyEqual, class Allocator>
|
|
|
118
155
|
struct IsUnorderedContainer<std::unordered_set<Key, Hash, KeyEqual, Allocator>>
|
|
119
156
|
: std::true_type {};
|
|
120
157
|
|
|
158
|
+
template <typename T, typename = void>
|
|
159
|
+
struct HasBeginEnd : std::false_type {};
|
|
160
|
+
|
|
161
|
+
template <typename T>
|
|
162
|
+
struct HasBeginEnd<T, std::void_t<decltype(container_algorithm_internal::begin(
|
|
163
|
+
std::declval<T (*)()>()())),
|
|
164
|
+
decltype(container_algorithm_internal::end(
|
|
165
|
+
std::declval<T (*)()>()()))>>
|
|
166
|
+
: std::true_type {};
|
|
167
|
+
|
|
168
|
+
// We don't support multidimensional arrays yet
|
|
169
|
+
template <class T>
|
|
170
|
+
using IsMultidimensionalArray = std::is_array<std::remove_extent_t<T>>;
|
|
171
|
+
|
|
172
|
+
template <typename Iter, typename = void>
|
|
173
|
+
struct IsIterator : std::false_type {};
|
|
174
|
+
|
|
175
|
+
template <typename Iter>
|
|
176
|
+
struct IsIterator<
|
|
177
|
+
Iter, std::void_t<typename std::iterator_traits<Iter>::iterator_category>>
|
|
178
|
+
: std::true_type {};
|
|
121
179
|
} // namespace container_algorithm_internal
|
|
122
180
|
|
|
123
181
|
// PUBLIC API
|
|
@@ -198,8 +256,8 @@ ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_none_of(const C& c, Pred&& pred) {
|
|
|
198
256
|
// Container-based version of the <algorithm> `std::for_each()` function to
|
|
199
257
|
// apply a function to a container's elements.
|
|
200
258
|
template <typename C, typename Function>
|
|
201
|
-
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 decay_t<Function> c_for_each(
|
|
202
|
-
|
|
259
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<Function> c_for_each(
|
|
260
|
+
C&& c, Function&& f) {
|
|
203
261
|
return std::for_each(container_algorithm_internal::c_begin(c),
|
|
204
262
|
container_algorithm_internal::c_end(c),
|
|
205
263
|
std::forward<Function>(f));
|
|
@@ -522,9 +580,41 @@ ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
|
522
580
|
// Container-based version of the <algorithm> `std::copy()` function to copy a
|
|
523
581
|
// container's elements into an iterator.
|
|
524
582
|
template <typename InputSequence, typename OutputIterator>
|
|
525
|
-
|
|
583
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
584
|
+
std::enable_if_t<container_algorithm_internal::IsIterator<
|
|
585
|
+
absl::remove_cvref_t<OutputIterator>>::value &&
|
|
586
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
587
|
+
InputSequence>::value,
|
|
588
|
+
std::decay_t<OutputIterator>>
|
|
589
|
+
c_copy(const InputSequence& input, OutputIterator&& output) {
|
|
526
590
|
return std::copy(container_algorithm_internal::c_begin(input),
|
|
527
|
-
container_algorithm_internal::c_end(input),
|
|
591
|
+
container_algorithm_internal::c_end(input),
|
|
592
|
+
std::forward<OutputIterator>(output));
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
// Copies elements from `input` to `output`. `absl::c_copy(input, output)` is
|
|
596
|
+
// equivalent to `std::copy(std::begin(input), std::end(input),
|
|
597
|
+
// std::begin(output))`.
|
|
598
|
+
//
|
|
599
|
+
// The `output` container must be large enough to hold all elements of `input`;
|
|
600
|
+
// this function does not resize `output`.
|
|
601
|
+
|
|
602
|
+
// If `std::size(input) > std::size(output)`, behavior is undefined.
|
|
603
|
+
// If `std::size(output) > std::size(input)`, only `std::size(input)` elements
|
|
604
|
+
// are copied, and `output` is not truncated.
|
|
605
|
+
template <typename InputSequence, typename OutputRange>
|
|
606
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
607
|
+
std::enable_if_t<container_algorithm_internal::HasBeginEnd<
|
|
608
|
+
std::add_lvalue_reference_t<OutputRange>>::value &&
|
|
609
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
610
|
+
std::remove_reference_t<OutputRange>>::value &&
|
|
611
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
612
|
+
InputSequence>::value,
|
|
613
|
+
void>
|
|
614
|
+
c_copy(const InputSequence& input, OutputRange&& output) {
|
|
615
|
+
container_algorithm_internal::AssertCopySize(input, output);
|
|
616
|
+
absl::c_copy(input, container_algorithm_internal::c_begin(
|
|
617
|
+
std::forward<OutputRange>(output)));
|
|
528
618
|
}
|
|
529
619
|
|
|
530
620
|
// c_copy_n()
|
|
@@ -532,8 +622,40 @@ OutputIterator c_copy(const InputSequence& input, OutputIterator output) {
|
|
|
532
622
|
// Container-based version of the <algorithm> `std::copy_n()` function to copy a
|
|
533
623
|
// container's first N elements into an iterator.
|
|
534
624
|
template <typename C, typename Size, typename OutputIterator>
|
|
535
|
-
|
|
536
|
-
|
|
625
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::enable_if_t<
|
|
626
|
+
container_algorithm_internal::IsIterator<
|
|
627
|
+
absl::remove_cvref_t<OutputIterator>>::value &&
|
|
628
|
+
!container_algorithm_internal::IsMultidimensionalArray<C>::value,
|
|
629
|
+
std::decay_t<OutputIterator>>
|
|
630
|
+
c_copy_n(const C& input, Size n, OutputIterator&& output) {
|
|
631
|
+
return std::copy_n(container_algorithm_internal::c_begin(input), n,
|
|
632
|
+
std::forward<OutputIterator>(output));
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// Copies the first `n` elements from `input` to `output`.
|
|
636
|
+
// `absl::c_copy_n(input, n, output)` is equivalent to
|
|
637
|
+
// `std::copy_n(std::begin(input), n, std::begin(output))`.
|
|
638
|
+
//
|
|
639
|
+
// The `output` container must be large enough to hold N elements; this function
|
|
640
|
+
// does not resize `output`.
|
|
641
|
+
//
|
|
642
|
+
// If `n > std::size(output)` or `n > std::size(input)`, behavior is
|
|
643
|
+
// undefined.
|
|
644
|
+
// If `std::size(output) > n`, only `n` elements are copied, and `output` is not
|
|
645
|
+
// truncated.
|
|
646
|
+
template <typename C, typename Size, typename OutputRange>
|
|
647
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::enable_if_t<
|
|
648
|
+
container_algorithm_internal::HasBeginEnd<
|
|
649
|
+
std::add_lvalue_reference_t<OutputRange>>::value &&
|
|
650
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
651
|
+
std::remove_reference_t<OutputRange>>::value &&
|
|
652
|
+
!container_algorithm_internal::IsMultidimensionalArray<C>::value,
|
|
653
|
+
void>
|
|
654
|
+
c_copy_n(const C& input, Size n, OutputRange&& output) {
|
|
655
|
+
container_algorithm_internal::AssertCopyNSize(input, n, output);
|
|
656
|
+
absl::c_copy_n(
|
|
657
|
+
input, n,
|
|
658
|
+
container_algorithm_internal::c_begin(std::forward<OutputRange>(output)));
|
|
537
659
|
}
|
|
538
660
|
|
|
539
661
|
// c_copy_if()
|
|
@@ -541,8 +663,8 @@ OutputIterator c_copy_n(const C& input, Size n, OutputIterator output) {
|
|
|
541
663
|
// Container-based version of the <algorithm> `std::copy_if()` function to copy
|
|
542
664
|
// a container's elements satisfying some condition into an iterator.
|
|
543
665
|
template <typename InputSequence, typename OutputIterator, typename Pred>
|
|
544
|
-
|
|
545
|
-
|
|
666
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
667
|
+
c_copy_if(const InputSequence& input, OutputIterator output, Pred&& pred) {
|
|
546
668
|
return std::copy_if(container_algorithm_internal::c_begin(input),
|
|
547
669
|
container_algorithm_internal::c_end(input), output,
|
|
548
670
|
std::forward<Pred>(pred));
|
|
@@ -553,8 +675,8 @@ OutputIterator c_copy_if(const InputSequence& input, OutputIterator output,
|
|
|
553
675
|
// Container-based version of the <algorithm> `std::copy_backward()` function to
|
|
554
676
|
// copy a container's elements in reverse order into an iterator.
|
|
555
677
|
template <typename C, typename BidirectionalIterator>
|
|
556
|
-
BidirectionalIterator
|
|
557
|
-
|
|
678
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 BidirectionalIterator
|
|
679
|
+
c_copy_backward(const C& src, BidirectionalIterator dest) {
|
|
558
680
|
return std::copy_backward(container_algorithm_internal::c_begin(src),
|
|
559
681
|
container_algorithm_internal::c_end(src), dest);
|
|
560
682
|
}
|
|
@@ -564,9 +686,36 @@ BidirectionalIterator c_copy_backward(const C& src,
|
|
|
564
686
|
// Container-based version of the <algorithm> `std::move()` function to move
|
|
565
687
|
// a container's elements into an iterator.
|
|
566
688
|
template <typename C, typename OutputIterator>
|
|
567
|
-
|
|
689
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
690
|
+
std::enable_if_t<container_algorithm_internal::IsIterator<
|
|
691
|
+
absl::remove_cvref_t<OutputIterator>>::value &&
|
|
692
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
693
|
+
std::remove_reference_t<C>>::value,
|
|
694
|
+
std::decay_t<OutputIterator>>
|
|
695
|
+
c_move(C&& src, OutputIterator&& dest) {
|
|
568
696
|
return std::move(container_algorithm_internal::c_begin(src),
|
|
569
|
-
container_algorithm_internal::c_end(src),
|
|
697
|
+
container_algorithm_internal::c_end(src),
|
|
698
|
+
std::forward<OutputIterator>(dest));
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
// Moves elements from `src` to `dest`. `absl::c_move(src, dest)` is
|
|
702
|
+
// equivalent to `std::move(std::begin(src), std::end(src), std::begin(dest))`.
|
|
703
|
+
//
|
|
704
|
+
// The `dest` container must be large enough to hold all elements of `src`;
|
|
705
|
+
// this function does not resize `dest`.
|
|
706
|
+
template <typename C, typename OutputRange>
|
|
707
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
708
|
+
std::enable_if_t<container_algorithm_internal::HasBeginEnd<
|
|
709
|
+
std::add_lvalue_reference_t<OutputRange>>::value &&
|
|
710
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
711
|
+
std::remove_reference_t<OutputRange>>::value &&
|
|
712
|
+
!container_algorithm_internal::IsMultidimensionalArray<
|
|
713
|
+
std::remove_reference_t<C>>::value,
|
|
714
|
+
void>
|
|
715
|
+
c_move(C&& src, OutputRange&& dest) {
|
|
716
|
+
container_algorithm_internal::AssertCopySize(src, dest);
|
|
717
|
+
absl::c_move(std::forward<C>(src), container_algorithm_internal::c_begin(
|
|
718
|
+
std::forward<OutputRange>(dest)));
|
|
570
719
|
}
|
|
571
720
|
|
|
572
721
|
// c_move_backward()
|
|
@@ -574,7 +723,8 @@ OutputIterator c_move(C&& src, OutputIterator dest) {
|
|
|
574
723
|
// Container-based version of the <algorithm> `std::move_backward()` function to
|
|
575
724
|
// move a container's elements into an iterator in reverse order.
|
|
576
725
|
template <typename C, typename BidirectionalIterator>
|
|
577
|
-
|
|
726
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 BidirectionalIterator
|
|
727
|
+
c_move_backward(C&& src, BidirectionalIterator dest) {
|
|
578
728
|
return std::move_backward(container_algorithm_internal::c_begin(src),
|
|
579
729
|
container_algorithm_internal::c_end(src), dest);
|
|
580
730
|
}
|
|
@@ -585,7 +735,9 @@ BidirectionalIterator c_move_backward(C&& src, BidirectionalIterator dest) {
|
|
|
585
735
|
// swap a container's elements with another container's elements. Swaps the
|
|
586
736
|
// first N elements of `c1` and `c2`, where N = min(size(c1), size(c2)).
|
|
587
737
|
template <typename C1, typename C2>
|
|
588
|
-
|
|
738
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
739
|
+
container_algorithm_internal::ContainerIter<C2>
|
|
740
|
+
c_swap_ranges(C1& c1, C2& c2) {
|
|
589
741
|
auto first1 = container_algorithm_internal::c_begin(c1);
|
|
590
742
|
auto last1 = container_algorithm_internal::c_end(c1);
|
|
591
743
|
auto first2 = container_algorithm_internal::c_begin(c2);
|
|
@@ -605,8 +757,8 @@ container_algorithm_internal::ContainerIter<C2> c_swap_ranges(C1& c1, C2& c2) {
|
|
|
605
757
|
// result in an iterator pointing to the last transformed element in the output
|
|
606
758
|
// range.
|
|
607
759
|
template <typename InputSequence, typename OutputIterator, typename UnaryOp>
|
|
608
|
-
OutputIterator c_transform(
|
|
609
|
-
|
|
760
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_transform(
|
|
761
|
+
const InputSequence& input, OutputIterator output, UnaryOp&& unary_op) {
|
|
610
762
|
return std::transform(container_algorithm_internal::c_begin(input),
|
|
611
763
|
container_algorithm_internal::c_end(input), output,
|
|
612
764
|
std::forward<UnaryOp>(unary_op));
|
|
@@ -617,9 +769,9 @@ OutputIterator c_transform(const InputSequence& input, OutputIterator output,
|
|
|
617
769
|
// where N = min(size(c1), size(c2)).
|
|
618
770
|
template <typename InputSequence1, typename InputSequence2,
|
|
619
771
|
typename OutputIterator, typename BinaryOp>
|
|
620
|
-
OutputIterator
|
|
621
|
-
|
|
622
|
-
|
|
772
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
773
|
+
c_transform(const InputSequence1& input1, const InputSequence2& input2,
|
|
774
|
+
OutputIterator output, BinaryOp&& binary_op) {
|
|
623
775
|
auto first1 = container_algorithm_internal::c_begin(input1);
|
|
624
776
|
auto last1 = container_algorithm_internal::c_end(input1);
|
|
625
777
|
auto first2 = container_algorithm_internal::c_begin(input2);
|
|
@@ -638,7 +790,9 @@ OutputIterator c_transform(const InputSequence1& input1,
|
|
|
638
790
|
// replace a container's elements of some value with a new value. The container
|
|
639
791
|
// is modified in place.
|
|
640
792
|
template <typename Sequence, typename T>
|
|
641
|
-
void c_replace(Sequence& sequence,
|
|
793
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_replace(Sequence& sequence,
|
|
794
|
+
const T& old_value,
|
|
795
|
+
const T& new_value) {
|
|
642
796
|
std::replace(container_algorithm_internal::c_begin(sequence),
|
|
643
797
|
container_algorithm_internal::c_end(sequence), old_value,
|
|
644
798
|
new_value);
|
|
@@ -650,7 +804,8 @@ void c_replace(Sequence& sequence, const T& old_value, const T& new_value) {
|
|
|
650
804
|
// replace a container's elements of some value with a new value based on some
|
|
651
805
|
// condition. The container is modified in place.
|
|
652
806
|
template <typename C, typename Pred, typename T>
|
|
653
|
-
void c_replace_if(C& c, Pred&& pred,
|
|
807
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_replace_if(C& c, Pred&& pred,
|
|
808
|
+
T&& new_value) {
|
|
654
809
|
std::replace_if(container_algorithm_internal::c_begin(c),
|
|
655
810
|
container_algorithm_internal::c_end(c),
|
|
656
811
|
std::forward<Pred>(pred), std::forward<T>(new_value));
|
|
@@ -662,8 +817,8 @@ void c_replace_if(C& c, Pred&& pred, T&& new_value) {
|
|
|
662
817
|
// replace a container's elements of some value with a new value and return the
|
|
663
818
|
// results within an iterator.
|
|
664
819
|
template <typename C, typename OutputIterator, typename T>
|
|
665
|
-
OutputIterator c_replace_copy(
|
|
666
|
-
|
|
820
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_replace_copy(
|
|
821
|
+
const C& c, OutputIterator result, T&& old_value, T&& new_value) {
|
|
667
822
|
return std::replace_copy(container_algorithm_internal::c_begin(c),
|
|
668
823
|
container_algorithm_internal::c_end(c), result,
|
|
669
824
|
std::forward<T>(old_value),
|
|
@@ -676,8 +831,8 @@ OutputIterator c_replace_copy(const C& c, OutputIterator result, T&& old_value,
|
|
|
676
831
|
// to replace a container's elements of some value with a new value based on
|
|
677
832
|
// some condition, and return the results within an iterator.
|
|
678
833
|
template <typename C, typename OutputIterator, typename Pred, typename T>
|
|
679
|
-
OutputIterator c_replace_copy_if(
|
|
680
|
-
|
|
834
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_replace_copy_if(
|
|
835
|
+
const C& c, OutputIterator result, Pred&& pred, const T& new_value) {
|
|
681
836
|
return std::replace_copy_if(container_algorithm_internal::c_begin(c),
|
|
682
837
|
container_algorithm_internal::c_end(c), result,
|
|
683
838
|
std::forward<Pred>(pred), new_value);
|
|
@@ -688,7 +843,7 @@ OutputIterator c_replace_copy_if(const C& c, OutputIterator result, Pred&& pred,
|
|
|
688
843
|
// Container-based version of the <algorithm> `std::fill()` function to fill a
|
|
689
844
|
// container with some value.
|
|
690
845
|
template <typename C, typename T>
|
|
691
|
-
void c_fill(C& c, const T& value) {
|
|
846
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_fill(C& c, const T& value) {
|
|
692
847
|
std::fill(container_algorithm_internal::c_begin(c),
|
|
693
848
|
container_algorithm_internal::c_end(c), value);
|
|
694
849
|
}
|
|
@@ -698,7 +853,8 @@ void c_fill(C& c, const T& value) {
|
|
|
698
853
|
// Container-based version of the <algorithm> `std::fill_n()` function to fill
|
|
699
854
|
// the first N elements in a container with some value.
|
|
700
855
|
template <typename C, typename Size, typename T>
|
|
701
|
-
void c_fill_n(C& c, Size n,
|
|
856
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_fill_n(C& c, Size n,
|
|
857
|
+
const T& value) {
|
|
702
858
|
std::fill_n(container_algorithm_internal::c_begin(c), n, value);
|
|
703
859
|
}
|
|
704
860
|
|
|
@@ -707,7 +863,7 @@ void c_fill_n(C& c, Size n, const T& value) {
|
|
|
707
863
|
// Container-based version of the <algorithm> `std::generate()` function to
|
|
708
864
|
// assign a container's elements to the values provided by the given generator.
|
|
709
865
|
template <typename C, typename Generator>
|
|
710
|
-
void c_generate(C& c, Generator&& gen) {
|
|
866
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_generate(C& c, Generator&& gen) {
|
|
711
867
|
std::generate(container_algorithm_internal::c_begin(c),
|
|
712
868
|
container_algorithm_internal::c_end(c),
|
|
713
869
|
std::forward<Generator>(gen));
|
|
@@ -719,8 +875,9 @@ void c_generate(C& c, Generator&& gen) {
|
|
|
719
875
|
// assign a container's first N elements to the values provided by the given
|
|
720
876
|
// generator.
|
|
721
877
|
template <typename C, typename Size, typename Generator>
|
|
722
|
-
|
|
723
|
-
|
|
878
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
879
|
+
container_algorithm_internal::ContainerIter<C>
|
|
880
|
+
c_generate_n(C& c, Size n, Generator&& gen) {
|
|
724
881
|
return std::generate_n(container_algorithm_internal::c_begin(c), n,
|
|
725
882
|
std::forward<Generator>(gen));
|
|
726
883
|
}
|
|
@@ -736,8 +893,8 @@ container_algorithm_internal::ContainerIter<C> c_generate_n(C& c, Size n,
|
|
|
736
893
|
// copy a container's elements while removing any elements matching the given
|
|
737
894
|
// `value`.
|
|
738
895
|
template <typename C, typename OutputIterator, typename T>
|
|
739
|
-
|
|
740
|
-
|
|
896
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
897
|
+
c_remove_copy(const C& c, OutputIterator result, const T& value) {
|
|
741
898
|
return std::remove_copy(container_algorithm_internal::c_begin(c),
|
|
742
899
|
container_algorithm_internal::c_end(c), result,
|
|
743
900
|
value);
|
|
@@ -749,8 +906,8 @@ OutputIterator c_remove_copy(const C& c, OutputIterator result,
|
|
|
749
906
|
// to copy a container's elements while removing any elements matching the given
|
|
750
907
|
// condition.
|
|
751
908
|
template <typename C, typename OutputIterator, typename Pred>
|
|
752
|
-
|
|
753
|
-
|
|
909
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
910
|
+
c_remove_copy_if(const C& c, OutputIterator result, Pred&& pred) {
|
|
754
911
|
return std::remove_copy_if(container_algorithm_internal::c_begin(c),
|
|
755
912
|
container_algorithm_internal::c_end(c), result,
|
|
756
913
|
std::forward<Pred>(pred));
|
|
@@ -762,7 +919,8 @@ OutputIterator c_remove_copy_if(const C& c, OutputIterator result,
|
|
|
762
919
|
// copy a container's elements while removing any elements containing duplicate
|
|
763
920
|
// values.
|
|
764
921
|
template <typename C, typename OutputIterator>
|
|
765
|
-
|
|
922
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
923
|
+
c_unique_copy(const C& c, OutputIterator result) {
|
|
766
924
|
return std::unique_copy(container_algorithm_internal::c_begin(c),
|
|
767
925
|
container_algorithm_internal::c_end(c), result);
|
|
768
926
|
}
|
|
@@ -770,8 +928,8 @@ OutputIterator c_unique_copy(const C& c, OutputIterator result) {
|
|
|
770
928
|
// Overload of c_unique_copy() for using a predicate evaluation other than
|
|
771
929
|
// `==` for comparing uniqueness of the element values.
|
|
772
930
|
template <typename C, typename OutputIterator, typename BinaryPredicate>
|
|
773
|
-
|
|
774
|
-
|
|
931
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
932
|
+
c_unique_copy(const C& c, OutputIterator result, BinaryPredicate&& pred) {
|
|
775
933
|
return std::unique_copy(container_algorithm_internal::c_begin(c),
|
|
776
934
|
container_algorithm_internal::c_end(c), result,
|
|
777
935
|
std::forward<BinaryPredicate>(pred));
|
|
@@ -782,7 +940,7 @@ OutputIterator c_unique_copy(const C& c, OutputIterator result,
|
|
|
782
940
|
// Container-based version of the <algorithm> `std::reverse()` function to
|
|
783
941
|
// reverse a container's elements.
|
|
784
942
|
template <typename Sequence>
|
|
785
|
-
void c_reverse(Sequence& sequence) {
|
|
943
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_reverse(Sequence& sequence) {
|
|
786
944
|
std::reverse(container_algorithm_internal::c_begin(sequence),
|
|
787
945
|
container_algorithm_internal::c_end(sequence));
|
|
788
946
|
}
|
|
@@ -792,7 +950,8 @@ void c_reverse(Sequence& sequence) {
|
|
|
792
950
|
// Container-based version of the <algorithm> `std::reverse()` function to
|
|
793
951
|
// reverse a container's elements and write them to an iterator range.
|
|
794
952
|
template <typename C, typename OutputIterator>
|
|
795
|
-
|
|
953
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
954
|
+
c_reverse_copy(const C& sequence, OutputIterator result) {
|
|
796
955
|
return std::reverse_copy(container_algorithm_internal::c_begin(sequence),
|
|
797
956
|
container_algorithm_internal::c_end(sequence),
|
|
798
957
|
result);
|
|
@@ -805,7 +964,8 @@ OutputIterator c_reverse_copy(const C& sequence, OutputIterator result) {
|
|
|
805
964
|
// the first element in the container.
|
|
806
965
|
template <typename C,
|
|
807
966
|
typename Iterator = container_algorithm_internal::ContainerIter<C>>
|
|
808
|
-
Iterator c_rotate(C& sequence,
|
|
967
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 Iterator c_rotate(C& sequence,
|
|
968
|
+
Iterator middle) {
|
|
809
969
|
return absl::rotate(container_algorithm_internal::c_begin(sequence), middle,
|
|
810
970
|
container_algorithm_internal::c_end(sequence));
|
|
811
971
|
}
|
|
@@ -816,10 +976,10 @@ Iterator c_rotate(C& sequence, Iterator middle) {
|
|
|
816
976
|
// shift a container's elements leftward such that the `middle` element becomes
|
|
817
977
|
// the first element in a new iterator range.
|
|
818
978
|
template <typename C, typename OutputIterator>
|
|
819
|
-
OutputIterator
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
979
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
980
|
+
c_rotate_copy(const C& sequence,
|
|
981
|
+
container_algorithm_internal::ContainerIter<const C> middle,
|
|
982
|
+
OutputIterator result) {
|
|
823
983
|
return std::rotate_copy(container_algorithm_internal::c_begin(sequence),
|
|
824
984
|
middle, container_algorithm_internal::c_end(sequence),
|
|
825
985
|
result);
|
|
@@ -861,7 +1021,8 @@ OutputIterator c_sample(const C& c, OutputIterator result, Distance n,
|
|
|
861
1021
|
// to test whether all elements in the container for which `pred` returns `true`
|
|
862
1022
|
// precede those for which `pred` is `false`.
|
|
863
1023
|
template <typename C, typename Pred>
|
|
864
|
-
bool c_is_partitioned(const C& c,
|
|
1024
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_partitioned(const C& c,
|
|
1025
|
+
Pred&& pred) {
|
|
865
1026
|
return std::is_partitioned(container_algorithm_internal::c_begin(c),
|
|
866
1027
|
container_algorithm_internal::c_end(c),
|
|
867
1028
|
std::forward<Pred>(pred));
|
|
@@ -874,7 +1035,9 @@ bool c_is_partitioned(const C& c, Pred&& pred) {
|
|
|
874
1035
|
// which `pred` returns `true` precede all those for which it returns `false`,
|
|
875
1036
|
// returning an iterator to the first element of the second group.
|
|
876
1037
|
template <typename C, typename Pred>
|
|
877
|
-
|
|
1038
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1039
|
+
container_algorithm_internal::ContainerIter<C>
|
|
1040
|
+
c_partition(C& c, Pred&& pred) {
|
|
878
1041
|
return std::partition(container_algorithm_internal::c_begin(c),
|
|
879
1042
|
container_algorithm_internal::c_end(c),
|
|
880
1043
|
std::forward<Pred>(pred));
|
|
@@ -903,9 +1066,9 @@ container_algorithm_internal::ContainerIter<C> c_stable_partition(C& c,
|
|
|
903
1066
|
|
|
904
1067
|
template <typename C, typename OutputIterator1, typename OutputIterator2,
|
|
905
1068
|
typename Pred>
|
|
906
|
-
std::pair<OutputIterator1, OutputIterator2>
|
|
907
|
-
|
|
908
|
-
|
|
1069
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::pair<OutputIterator1, OutputIterator2>
|
|
1070
|
+
c_partition_copy(const C& c, OutputIterator1 out_true,
|
|
1071
|
+
OutputIterator2 out_false, Pred&& pred) {
|
|
909
1072
|
return std::partition_copy(container_algorithm_internal::c_begin(c),
|
|
910
1073
|
container_algorithm_internal::c_end(c), out_true,
|
|
911
1074
|
out_false, std::forward<Pred>(pred));
|
|
@@ -917,8 +1080,9 @@ std::pair<OutputIterator1, OutputIterator2> c_partition_copy(
|
|
|
917
1080
|
// to return the first element of an already partitioned container for which
|
|
918
1081
|
// the given `pred` is not `true`.
|
|
919
1082
|
template <typename C, typename Pred>
|
|
920
|
-
|
|
921
|
-
|
|
1083
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1084
|
+
container_algorithm_internal::ContainerIter<C>
|
|
1085
|
+
c_partition_point(C& c, Pred&& pred) {
|
|
922
1086
|
return std::partition_point(container_algorithm_internal::c_begin(c),
|
|
923
1087
|
container_algorithm_internal::c_end(c),
|
|
924
1088
|
std::forward<Pred>(pred));
|
|
@@ -933,7 +1097,7 @@ container_algorithm_internal::ContainerIter<C> c_partition_point(C& c,
|
|
|
933
1097
|
// Container-based version of the <algorithm> `std::sort()` function
|
|
934
1098
|
// to sort elements in ascending order of their values.
|
|
935
1099
|
template <typename C>
|
|
936
|
-
void c_sort(C& c) {
|
|
1100
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort(C& c) {
|
|
937
1101
|
std::sort(container_algorithm_internal::c_begin(c),
|
|
938
1102
|
container_algorithm_internal::c_end(c));
|
|
939
1103
|
}
|
|
@@ -941,7 +1105,7 @@ void c_sort(C& c) {
|
|
|
941
1105
|
// Overload of c_sort() for performing a `comp` comparison other than the
|
|
942
1106
|
// default `operator<`.
|
|
943
1107
|
template <typename C, typename LessThan>
|
|
944
|
-
void c_sort(C& c, LessThan&& comp) {
|
|
1108
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort(C& c, LessThan&& comp) {
|
|
945
1109
|
std::sort(container_algorithm_internal::c_begin(c),
|
|
946
1110
|
container_algorithm_internal::c_end(c),
|
|
947
1111
|
std::forward<LessThan>(comp));
|
|
@@ -972,7 +1136,7 @@ void c_stable_sort(C& c, LessThan&& comp) {
|
|
|
972
1136
|
// Container-based version of the <algorithm> `std::is_sorted()` function
|
|
973
1137
|
// to evaluate whether the given container is sorted in ascending order.
|
|
974
1138
|
template <typename C>
|
|
975
|
-
bool c_is_sorted(const C& c) {
|
|
1139
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_sorted(const C& c) {
|
|
976
1140
|
return std::is_sorted(container_algorithm_internal::c_begin(c),
|
|
977
1141
|
container_algorithm_internal::c_end(c));
|
|
978
1142
|
}
|
|
@@ -980,7 +1144,8 @@ bool c_is_sorted(const C& c) {
|
|
|
980
1144
|
// c_is_sorted() overload for performing a `comp` comparison other than the
|
|
981
1145
|
// default `operator<`.
|
|
982
1146
|
template <typename C, typename LessThan>
|
|
983
|
-
bool c_is_sorted(const C& c,
|
|
1147
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_sorted(const C& c,
|
|
1148
|
+
LessThan&& comp) {
|
|
984
1149
|
return std::is_sorted(container_algorithm_internal::c_begin(c),
|
|
985
1150
|
container_algorithm_internal::c_end(c),
|
|
986
1151
|
std::forward<LessThan>(comp));
|
|
@@ -992,7 +1157,7 @@ bool c_is_sorted(const C& c, LessThan&& comp) {
|
|
|
992
1157
|
// to rearrange elements within a container such that elements before `middle`
|
|
993
1158
|
// are sorted in ascending order.
|
|
994
1159
|
template <typename RandomAccessContainer>
|
|
995
|
-
void c_partial_sort(
|
|
1160
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_partial_sort(
|
|
996
1161
|
RandomAccessContainer& sequence,
|
|
997
1162
|
container_algorithm_internal::ContainerIter<RandomAccessContainer> middle) {
|
|
998
1163
|
std::partial_sort(container_algorithm_internal::c_begin(sequence), middle,
|
|
@@ -1002,7 +1167,7 @@ void c_partial_sort(
|
|
|
1002
1167
|
// Overload of c_partial_sort() for performing a `comp` comparison other than
|
|
1003
1168
|
// the default `operator<`.
|
|
1004
1169
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1005
|
-
void c_partial_sort(
|
|
1170
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_partial_sort(
|
|
1006
1171
|
RandomAccessContainer& sequence,
|
|
1007
1172
|
container_algorithm_internal::ContainerIter<RandomAccessContainer> middle,
|
|
1008
1173
|
LessThan&& comp) {
|
|
@@ -1019,8 +1184,9 @@ void c_partial_sort(
|
|
|
1019
1184
|
// At most min(result.last - result.first, sequence.last - sequence.first)
|
|
1020
1185
|
// elements from the sequence will be stored in the result.
|
|
1021
1186
|
template <typename C, typename RandomAccessContainer>
|
|
1022
|
-
|
|
1023
|
-
|
|
1187
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1188
|
+
container_algorithm_internal::ContainerIter<RandomAccessContainer>
|
|
1189
|
+
c_partial_sort_copy(const C& sequence, RandomAccessContainer& result) {
|
|
1024
1190
|
return std::partial_sort_copy(container_algorithm_internal::c_begin(sequence),
|
|
1025
1191
|
container_algorithm_internal::c_end(sequence),
|
|
1026
1192
|
container_algorithm_internal::c_begin(result),
|
|
@@ -1030,9 +1196,10 @@ c_partial_sort_copy(const C& sequence, RandomAccessContainer& result) {
|
|
|
1030
1196
|
// Overload of c_partial_sort_copy() for performing a `comp` comparison other
|
|
1031
1197
|
// than the default `operator<`.
|
|
1032
1198
|
template <typename C, typename RandomAccessContainer, typename LessThan>
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1199
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1200
|
+
container_algorithm_internal::ContainerIter<RandomAccessContainer>
|
|
1201
|
+
c_partial_sort_copy(const C& sequence, RandomAccessContainer& result,
|
|
1202
|
+
LessThan&& comp) {
|
|
1036
1203
|
return std::partial_sort_copy(container_algorithm_internal::c_begin(sequence),
|
|
1037
1204
|
container_algorithm_internal::c_end(sequence),
|
|
1038
1205
|
container_algorithm_internal::c_begin(result),
|
|
@@ -1046,7 +1213,9 @@ c_partial_sort_copy(const C& sequence, RandomAccessContainer& result,
|
|
|
1046
1213
|
// to return the first element within a container that is not sorted in
|
|
1047
1214
|
// ascending order as an iterator.
|
|
1048
1215
|
template <typename C>
|
|
1049
|
-
|
|
1216
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1217
|
+
container_algorithm_internal::ContainerIter<C>
|
|
1218
|
+
c_is_sorted_until(C& c) {
|
|
1050
1219
|
return std::is_sorted_until(container_algorithm_internal::c_begin(c),
|
|
1051
1220
|
container_algorithm_internal::c_end(c));
|
|
1052
1221
|
}
|
|
@@ -1054,8 +1223,9 @@ container_algorithm_internal::ContainerIter<C> c_is_sorted_until(C& c) {
|
|
|
1054
1223
|
// Overload of c_is_sorted_until() for performing a `comp` comparison other than
|
|
1055
1224
|
// the default `operator<`.
|
|
1056
1225
|
template <typename C, typename LessThan>
|
|
1057
|
-
|
|
1058
|
-
C
|
|
1226
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1227
|
+
container_algorithm_internal::ContainerIter<C>
|
|
1228
|
+
c_is_sorted_until(C& c, LessThan&& comp) {
|
|
1059
1229
|
return std::is_sorted_until(container_algorithm_internal::c_begin(c),
|
|
1060
1230
|
container_algorithm_internal::c_end(c),
|
|
1061
1231
|
std::forward<LessThan>(comp));
|
|
@@ -1069,7 +1239,7 @@ container_algorithm_internal::ContainerIter<C> c_is_sorted_until(
|
|
|
1069
1239
|
// any order, except that all preceding `nth` will be less than that element,
|
|
1070
1240
|
// and all following `nth` will be greater than that element.
|
|
1071
1241
|
template <typename RandomAccessContainer>
|
|
1072
|
-
void c_nth_element(
|
|
1242
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_nth_element(
|
|
1073
1243
|
RandomAccessContainer& sequence,
|
|
1074
1244
|
container_algorithm_internal::ContainerIter<RandomAccessContainer> nth) {
|
|
1075
1245
|
std::nth_element(container_algorithm_internal::c_begin(sequence), nth,
|
|
@@ -1079,7 +1249,7 @@ void c_nth_element(
|
|
|
1079
1249
|
// Overload of c_nth_element() for performing a `comp` comparison other than
|
|
1080
1250
|
// the default `operator<`.
|
|
1081
1251
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1082
|
-
void c_nth_element(
|
|
1252
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_nth_element(
|
|
1083
1253
|
RandomAccessContainer& sequence,
|
|
1084
1254
|
container_algorithm_internal::ContainerIter<RandomAccessContainer> nth,
|
|
1085
1255
|
LessThan&& comp) {
|
|
@@ -1098,8 +1268,9 @@ void c_nth_element(
|
|
|
1098
1268
|
// to return an iterator pointing to the first element in a sorted container
|
|
1099
1269
|
// which does not compare less than `value`.
|
|
1100
1270
|
template <typename Sequence, typename T>
|
|
1101
|
-
|
|
1102
|
-
Sequence
|
|
1271
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1272
|
+
container_algorithm_internal::ContainerIter<Sequence>
|
|
1273
|
+
c_lower_bound(Sequence& sequence, const T& value) {
|
|
1103
1274
|
return std::lower_bound(container_algorithm_internal::c_begin(sequence),
|
|
1104
1275
|
container_algorithm_internal::c_end(sequence), value);
|
|
1105
1276
|
}
|
|
@@ -1107,8 +1278,9 @@ container_algorithm_internal::ContainerIter<Sequence> c_lower_bound(
|
|
|
1107
1278
|
// Overload of c_lower_bound() for performing a `comp` comparison other than
|
|
1108
1279
|
// the default `operator<`.
|
|
1109
1280
|
template <typename Sequence, typename T, typename LessThan>
|
|
1110
|
-
|
|
1111
|
-
Sequence
|
|
1281
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1282
|
+
container_algorithm_internal::ContainerIter<Sequence>
|
|
1283
|
+
c_lower_bound(Sequence& sequence, const T& value, LessThan&& comp) {
|
|
1112
1284
|
return std::lower_bound(container_algorithm_internal::c_begin(sequence),
|
|
1113
1285
|
container_algorithm_internal::c_end(sequence), value,
|
|
1114
1286
|
std::forward<LessThan>(comp));
|
|
@@ -1120,8 +1292,9 @@ container_algorithm_internal::ContainerIter<Sequence> c_lower_bound(
|
|
|
1120
1292
|
// to return an iterator pointing to the first element in a sorted container
|
|
1121
1293
|
// which is greater than `value`.
|
|
1122
1294
|
template <typename Sequence, typename T>
|
|
1123
|
-
|
|
1124
|
-
Sequence
|
|
1295
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1296
|
+
container_algorithm_internal::ContainerIter<Sequence>
|
|
1297
|
+
c_upper_bound(Sequence& sequence, const T& value) {
|
|
1125
1298
|
return std::upper_bound(container_algorithm_internal::c_begin(sequence),
|
|
1126
1299
|
container_algorithm_internal::c_end(sequence), value);
|
|
1127
1300
|
}
|
|
@@ -1129,8 +1302,9 @@ container_algorithm_internal::ContainerIter<Sequence> c_upper_bound(
|
|
|
1129
1302
|
// Overload of c_upper_bound() for performing a `comp` comparison other than
|
|
1130
1303
|
// the default `operator<`.
|
|
1131
1304
|
template <typename Sequence, typename T, typename LessThan>
|
|
1132
|
-
|
|
1133
|
-
Sequence
|
|
1305
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1306
|
+
container_algorithm_internal::ContainerIter<Sequence>
|
|
1307
|
+
c_upper_bound(Sequence& sequence, const T& value, LessThan&& comp) {
|
|
1134
1308
|
return std::upper_bound(container_algorithm_internal::c_begin(sequence),
|
|
1135
1309
|
container_algorithm_internal::c_end(sequence), value,
|
|
1136
1310
|
std::forward<LessThan>(comp));
|
|
@@ -1142,8 +1316,9 @@ container_algorithm_internal::ContainerIter<Sequence> c_upper_bound(
|
|
|
1142
1316
|
// to return an iterator pair pointing to the first and last elements in a
|
|
1143
1317
|
// sorted container which compare equal to `value`.
|
|
1144
1318
|
template <typename Sequence, typename T>
|
|
1145
|
-
|
|
1146
|
-
|
|
1319
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1320
|
+
container_algorithm_internal::ContainerIterPairType<Sequence, Sequence>
|
|
1321
|
+
c_equal_range(Sequence& sequence, const T& value) {
|
|
1147
1322
|
return std::equal_range(container_algorithm_internal::c_begin(sequence),
|
|
1148
1323
|
container_algorithm_internal::c_end(sequence), value);
|
|
1149
1324
|
}
|
|
@@ -1151,8 +1326,9 @@ c_equal_range(Sequence& sequence, const T& value) {
|
|
|
1151
1326
|
// Overload of c_equal_range() for performing a `comp` comparison other than
|
|
1152
1327
|
// the default `operator<`.
|
|
1153
1328
|
template <typename Sequence, typename T, typename LessThan>
|
|
1154
|
-
|
|
1155
|
-
|
|
1329
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1330
|
+
container_algorithm_internal::ContainerIterPairType<Sequence, Sequence>
|
|
1331
|
+
c_equal_range(Sequence& sequence, const T& value, LessThan&& comp) {
|
|
1156
1332
|
return std::equal_range(container_algorithm_internal::c_begin(sequence),
|
|
1157
1333
|
container_algorithm_internal::c_end(sequence), value,
|
|
1158
1334
|
std::forward<LessThan>(comp));
|
|
@@ -1164,7 +1340,8 @@ c_equal_range(Sequence& sequence, const T& value, LessThan&& comp) {
|
|
|
1164
1340
|
// to test if any element in the sorted container contains a value equivalent to
|
|
1165
1341
|
// 'value'.
|
|
1166
1342
|
template <typename Sequence, typename T>
|
|
1167
|
-
bool c_binary_search(
|
|
1343
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_binary_search(
|
|
1344
|
+
const Sequence& sequence, const T& value) {
|
|
1168
1345
|
return std::binary_search(container_algorithm_internal::c_begin(sequence),
|
|
1169
1346
|
container_algorithm_internal::c_end(sequence),
|
|
1170
1347
|
value);
|
|
@@ -1173,8 +1350,8 @@ bool c_binary_search(const Sequence& sequence, const T& value) {
|
|
|
1173
1350
|
// Overload of c_binary_search() for performing a `comp` comparison other than
|
|
1174
1351
|
// the default `operator<`.
|
|
1175
1352
|
template <typename Sequence, typename T, typename LessThan>
|
|
1176
|
-
bool c_binary_search(
|
|
1177
|
-
|
|
1353
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_binary_search(
|
|
1354
|
+
const Sequence& sequence, const T& value, LessThan&& comp) {
|
|
1178
1355
|
return std::binary_search(container_algorithm_internal::c_begin(sequence),
|
|
1179
1356
|
container_algorithm_internal::c_end(sequence),
|
|
1180
1357
|
value, std::forward<LessThan>(comp));
|
|
@@ -1189,7 +1366,8 @@ bool c_binary_search(const Sequence& sequence, const T& value,
|
|
|
1189
1366
|
// Container-based version of the <algorithm> `std::merge()` function
|
|
1190
1367
|
// to merge two sorted containers into a single sorted iterator.
|
|
1191
1368
|
template <typename C1, typename C2, typename OutputIterator>
|
|
1192
|
-
|
|
1369
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
1370
|
+
c_merge(const C1& c1, const C2& c2, OutputIterator result) {
|
|
1193
1371
|
return std::merge(container_algorithm_internal::c_begin(c1),
|
|
1194
1372
|
container_algorithm_internal::c_end(c1),
|
|
1195
1373
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1199,8 +1377,8 @@ OutputIterator c_merge(const C1& c1, const C2& c2, OutputIterator result) {
|
|
|
1199
1377
|
// Overload of c_merge() for performing a `comp` comparison other than
|
|
1200
1378
|
// the default `operator<`.
|
|
1201
1379
|
template <typename C1, typename C2, typename OutputIterator, typename LessThan>
|
|
1202
|
-
|
|
1203
|
-
|
|
1380
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
1381
|
+
c_merge(const C1& c1, const C2& c2, OutputIterator result, LessThan&& comp) {
|
|
1204
1382
|
return std::merge(container_algorithm_internal::c_begin(c1),
|
|
1205
1383
|
container_algorithm_internal::c_end(c1),
|
|
1206
1384
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1236,7 +1414,8 @@ void c_inplace_merge(C& c,
|
|
|
1236
1414
|
// to test whether a sorted container `c1` entirely contains another sorted
|
|
1237
1415
|
// container `c2`.
|
|
1238
1416
|
template <typename C1, typename C2>
|
|
1239
|
-
bool c_includes(const C1& c1,
|
|
1417
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_includes(const C1& c1,
|
|
1418
|
+
const C2& c2) {
|
|
1240
1419
|
return std::includes(container_algorithm_internal::c_begin(c1),
|
|
1241
1420
|
container_algorithm_internal::c_end(c1),
|
|
1242
1421
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1246,7 +1425,8 @@ bool c_includes(const C1& c1, const C2& c2) {
|
|
|
1246
1425
|
// Overload of c_includes() for performing a merge using a `comp` other than
|
|
1247
1426
|
// `operator<`.
|
|
1248
1427
|
template <typename C1, typename C2, typename LessThan>
|
|
1249
|
-
bool c_includes(const C1& c1, const C2& c2,
|
|
1428
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_includes(const C1& c1, const C2& c2,
|
|
1429
|
+
LessThan&& comp) {
|
|
1250
1430
|
return std::includes(container_algorithm_internal::c_begin(c1),
|
|
1251
1431
|
container_algorithm_internal::c_end(c1),
|
|
1252
1432
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1266,7 +1446,8 @@ template <typename C1, typename C2, typename OutputIterator,
|
|
|
1266
1446
|
typename = typename std::enable_if<
|
|
1267
1447
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1268
1448
|
void>::type>
|
|
1269
|
-
|
|
1449
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
1450
|
+
c_set_union(const C1& c1, const C2& c2, OutputIterator output) {
|
|
1270
1451
|
return std::set_union(container_algorithm_internal::c_begin(c1),
|
|
1271
1452
|
container_algorithm_internal::c_end(c1),
|
|
1272
1453
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1282,8 +1463,8 @@ template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
|
|
1282
1463
|
typename = typename std::enable_if<
|
|
1283
1464
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1284
1465
|
void>::type>
|
|
1285
|
-
OutputIterator c_set_union(
|
|
1286
|
-
|
|
1466
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_union(
|
|
1467
|
+
const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) {
|
|
1287
1468
|
return std::set_union(container_algorithm_internal::c_begin(c1),
|
|
1288
1469
|
container_algorithm_internal::c_end(c1),
|
|
1289
1470
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1302,13 +1483,13 @@ template <typename C1, typename C2, typename OutputIterator,
|
|
|
1302
1483
|
typename = typename std::enable_if<
|
|
1303
1484
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1304
1485
|
void>::type>
|
|
1305
|
-
OutputIterator
|
|
1306
|
-
|
|
1486
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
1487
|
+
c_set_intersection(const C1& c1, const C2& c2, OutputIterator output) {
|
|
1307
1488
|
// In debug builds, ensure that both containers are sorted with respect to the
|
|
1308
1489
|
// default comparator. std::set_intersection requires the containers be sorted
|
|
1309
1490
|
// using operator<.
|
|
1310
|
-
|
|
1311
|
-
|
|
1491
|
+
ABSL_ASSERT(absl::c_is_sorted(c1));
|
|
1492
|
+
ABSL_ASSERT(absl::c_is_sorted(c2));
|
|
1312
1493
|
return std::set_intersection(container_algorithm_internal::c_begin(c1),
|
|
1313
1494
|
container_algorithm_internal::c_end(c1),
|
|
1314
1495
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1324,13 +1505,13 @@ template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
|
|
1324
1505
|
typename = typename std::enable_if<
|
|
1325
1506
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1326
1507
|
void>::type>
|
|
1327
|
-
OutputIterator c_set_intersection(
|
|
1328
|
-
|
|
1508
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_intersection(
|
|
1509
|
+
const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) {
|
|
1329
1510
|
// In debug builds, ensure that both containers are sorted with respect to the
|
|
1330
1511
|
// default comparator. std::set_intersection requires the containers be sorted
|
|
1331
1512
|
// using the same comparator.
|
|
1332
|
-
|
|
1333
|
-
|
|
1513
|
+
ABSL_ASSERT(absl::c_is_sorted(c1, comp));
|
|
1514
|
+
ABSL_ASSERT(absl::c_is_sorted(c2, comp));
|
|
1334
1515
|
return std::set_intersection(container_algorithm_internal::c_begin(c1),
|
|
1335
1516
|
container_algorithm_internal::c_end(c1),
|
|
1336
1517
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1350,8 +1531,8 @@ template <typename C1, typename C2, typename OutputIterator,
|
|
|
1350
1531
|
typename = typename std::enable_if<
|
|
1351
1532
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1352
1533
|
void>::type>
|
|
1353
|
-
OutputIterator
|
|
1354
|
-
|
|
1534
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
1535
|
+
c_set_difference(const C1& c1, const C2& c2, OutputIterator output) {
|
|
1355
1536
|
return std::set_difference(container_algorithm_internal::c_begin(c1),
|
|
1356
1537
|
container_algorithm_internal::c_end(c1),
|
|
1357
1538
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1367,8 +1548,8 @@ template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
|
|
1367
1548
|
typename = typename std::enable_if<
|
|
1368
1549
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1369
1550
|
void>::type>
|
|
1370
|
-
OutputIterator c_set_difference(
|
|
1371
|
-
|
|
1551
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_difference(
|
|
1552
|
+
const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) {
|
|
1372
1553
|
return std::set_difference(container_algorithm_internal::c_begin(c1),
|
|
1373
1554
|
container_algorithm_internal::c_end(c1),
|
|
1374
1555
|
container_algorithm_internal::c_begin(c2),
|
|
@@ -1388,8 +1569,8 @@ template <typename C1, typename C2, typename OutputIterator,
|
|
|
1388
1569
|
typename = typename std::enable_if<
|
|
1389
1570
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1390
1571
|
void>::type>
|
|
1391
|
-
OutputIterator
|
|
1392
|
-
|
|
1572
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator
|
|
1573
|
+
c_set_symmetric_difference(const C1& c1, const C2& c2, OutputIterator output) {
|
|
1393
1574
|
return std::set_symmetric_difference(
|
|
1394
1575
|
container_algorithm_internal::c_begin(c1),
|
|
1395
1576
|
container_algorithm_internal::c_end(c1),
|
|
@@ -1406,9 +1587,8 @@ template <typename C1, typename C2, typename OutputIterator, typename LessThan,
|
|
|
1406
1587
|
typename = typename std::enable_if<
|
|
1407
1588
|
!container_algorithm_internal::IsUnorderedContainer<C2>::value,
|
|
1408
1589
|
void>::type>
|
|
1409
|
-
OutputIterator c_set_symmetric_difference(
|
|
1410
|
-
|
|
1411
|
-
LessThan&& comp) {
|
|
1590
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_symmetric_difference(
|
|
1591
|
+
const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) {
|
|
1412
1592
|
return std::set_symmetric_difference(
|
|
1413
1593
|
container_algorithm_internal::c_begin(c1),
|
|
1414
1594
|
container_algorithm_internal::c_end(c1),
|
|
@@ -1426,7 +1606,8 @@ OutputIterator c_set_symmetric_difference(const C1& c1, const C2& c2,
|
|
|
1426
1606
|
// Container-based version of the <algorithm> `std::push_heap()` function
|
|
1427
1607
|
// to push a value onto a container heap.
|
|
1428
1608
|
template <typename RandomAccessContainer>
|
|
1429
|
-
void c_push_heap(
|
|
1609
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_push_heap(
|
|
1610
|
+
RandomAccessContainer& sequence) {
|
|
1430
1611
|
std::push_heap(container_algorithm_internal::c_begin(sequence),
|
|
1431
1612
|
container_algorithm_internal::c_end(sequence));
|
|
1432
1613
|
}
|
|
@@ -1434,7 +1615,8 @@ void c_push_heap(RandomAccessContainer& sequence) {
|
|
|
1434
1615
|
// Overload of c_push_heap() for performing a push operation on a heap using a
|
|
1435
1616
|
// `comp` other than `operator<`.
|
|
1436
1617
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1437
|
-
void c_push_heap(
|
|
1618
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_push_heap(
|
|
1619
|
+
RandomAccessContainer& sequence, LessThan&& comp) {
|
|
1438
1620
|
std::push_heap(container_algorithm_internal::c_begin(sequence),
|
|
1439
1621
|
container_algorithm_internal::c_end(sequence),
|
|
1440
1622
|
std::forward<LessThan>(comp));
|
|
@@ -1445,7 +1627,8 @@ void c_push_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
|
|
1445
1627
|
// Container-based version of the <algorithm> `std::pop_heap()` function
|
|
1446
1628
|
// to pop a value from a heap container.
|
|
1447
1629
|
template <typename RandomAccessContainer>
|
|
1448
|
-
void c_pop_heap(
|
|
1630
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_pop_heap(
|
|
1631
|
+
RandomAccessContainer& sequence) {
|
|
1449
1632
|
std::pop_heap(container_algorithm_internal::c_begin(sequence),
|
|
1450
1633
|
container_algorithm_internal::c_end(sequence));
|
|
1451
1634
|
}
|
|
@@ -1453,7 +1636,8 @@ void c_pop_heap(RandomAccessContainer& sequence) {
|
|
|
1453
1636
|
// Overload of c_pop_heap() for performing a pop operation on a heap using a
|
|
1454
1637
|
// `comp` other than `operator<`.
|
|
1455
1638
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1456
|
-
void c_pop_heap(
|
|
1639
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_pop_heap(
|
|
1640
|
+
RandomAccessContainer& sequence, LessThan&& comp) {
|
|
1457
1641
|
std::pop_heap(container_algorithm_internal::c_begin(sequence),
|
|
1458
1642
|
container_algorithm_internal::c_end(sequence),
|
|
1459
1643
|
std::forward<LessThan>(comp));
|
|
@@ -1464,7 +1648,8 @@ void c_pop_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
|
|
1464
1648
|
// Container-based version of the <algorithm> `std::make_heap()` function
|
|
1465
1649
|
// to make a container a heap.
|
|
1466
1650
|
template <typename RandomAccessContainer>
|
|
1467
|
-
void c_make_heap(
|
|
1651
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_make_heap(
|
|
1652
|
+
RandomAccessContainer& sequence) {
|
|
1468
1653
|
std::make_heap(container_algorithm_internal::c_begin(sequence),
|
|
1469
1654
|
container_algorithm_internal::c_end(sequence));
|
|
1470
1655
|
}
|
|
@@ -1472,7 +1657,8 @@ void c_make_heap(RandomAccessContainer& sequence) {
|
|
|
1472
1657
|
// Overload of c_make_heap() for performing heap comparisons using a
|
|
1473
1658
|
// `comp` other than `operator<`
|
|
1474
1659
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1475
|
-
void c_make_heap(
|
|
1660
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_make_heap(
|
|
1661
|
+
RandomAccessContainer& sequence, LessThan&& comp) {
|
|
1476
1662
|
std::make_heap(container_algorithm_internal::c_begin(sequence),
|
|
1477
1663
|
container_algorithm_internal::c_end(sequence),
|
|
1478
1664
|
std::forward<LessThan>(comp));
|
|
@@ -1483,7 +1669,8 @@ void c_make_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
|
|
1483
1669
|
// Container-based version of the <algorithm> `std::sort_heap()` function
|
|
1484
1670
|
// to sort a heap into ascending order (after which it is no longer a heap).
|
|
1485
1671
|
template <typename RandomAccessContainer>
|
|
1486
|
-
void c_sort_heap(
|
|
1672
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort_heap(
|
|
1673
|
+
RandomAccessContainer& sequence) {
|
|
1487
1674
|
std::sort_heap(container_algorithm_internal::c_begin(sequence),
|
|
1488
1675
|
container_algorithm_internal::c_end(sequence));
|
|
1489
1676
|
}
|
|
@@ -1491,7 +1678,8 @@ void c_sort_heap(RandomAccessContainer& sequence) {
|
|
|
1491
1678
|
// Overload of c_sort_heap() for performing heap comparisons using a
|
|
1492
1679
|
// `comp` other than `operator<`
|
|
1493
1680
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1494
|
-
void c_sort_heap(
|
|
1681
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort_heap(
|
|
1682
|
+
RandomAccessContainer& sequence, LessThan&& comp) {
|
|
1495
1683
|
std::sort_heap(container_algorithm_internal::c_begin(sequence),
|
|
1496
1684
|
container_algorithm_internal::c_end(sequence),
|
|
1497
1685
|
std::forward<LessThan>(comp));
|
|
@@ -1502,7 +1690,8 @@ void c_sort_heap(RandomAccessContainer& sequence, LessThan&& comp) {
|
|
|
1502
1690
|
// Container-based version of the <algorithm> `std::is_heap()` function
|
|
1503
1691
|
// to check whether the given container is a heap.
|
|
1504
1692
|
template <typename RandomAccessContainer>
|
|
1505
|
-
bool c_is_heap(
|
|
1693
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_heap(
|
|
1694
|
+
const RandomAccessContainer& sequence) {
|
|
1506
1695
|
return std::is_heap(container_algorithm_internal::c_begin(sequence),
|
|
1507
1696
|
container_algorithm_internal::c_end(sequence));
|
|
1508
1697
|
}
|
|
@@ -1510,7 +1699,8 @@ bool c_is_heap(const RandomAccessContainer& sequence) {
|
|
|
1510
1699
|
// Overload of c_is_heap() for performing heap comparisons using a
|
|
1511
1700
|
// `comp` other than `operator<`
|
|
1512
1701
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1513
|
-
bool c_is_heap(
|
|
1702
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_heap(
|
|
1703
|
+
const RandomAccessContainer& sequence, LessThan&& comp) {
|
|
1514
1704
|
return std::is_heap(container_algorithm_internal::c_begin(sequence),
|
|
1515
1705
|
container_algorithm_internal::c_end(sequence),
|
|
1516
1706
|
std::forward<LessThan>(comp));
|
|
@@ -1521,8 +1711,9 @@ bool c_is_heap(const RandomAccessContainer& sequence, LessThan&& comp) {
|
|
|
1521
1711
|
// Container-based version of the <algorithm> `std::is_heap_until()` function
|
|
1522
1712
|
// to find the first element in a given container which is not in heap order.
|
|
1523
1713
|
template <typename RandomAccessContainer>
|
|
1524
|
-
|
|
1525
|
-
|
|
1714
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1715
|
+
container_algorithm_internal::ContainerIter<RandomAccessContainer>
|
|
1716
|
+
c_is_heap_until(RandomAccessContainer& sequence) {
|
|
1526
1717
|
return std::is_heap_until(container_algorithm_internal::c_begin(sequence),
|
|
1527
1718
|
container_algorithm_internal::c_end(sequence));
|
|
1528
1719
|
}
|
|
@@ -1530,8 +1721,9 @@ c_is_heap_until(RandomAccessContainer& sequence) {
|
|
|
1530
1721
|
// Overload of c_is_heap_until() for performing heap comparisons using a
|
|
1531
1722
|
// `comp` other than `operator<`
|
|
1532
1723
|
template <typename RandomAccessContainer, typename LessThan>
|
|
1533
|
-
|
|
1534
|
-
|
|
1724
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20
|
|
1725
|
+
container_algorithm_internal::ContainerIter<RandomAccessContainer>
|
|
1726
|
+
c_is_heap_until(RandomAccessContainer& sequence, LessThan&& comp) {
|
|
1535
1727
|
return std::is_heap_until(container_algorithm_internal::c_begin(sequence),
|
|
1536
1728
|
container_algorithm_internal::c_end(sequence),
|
|
1537
1729
|
std::forward<LessThan>(comp));
|
|
@@ -1626,8 +1818,8 @@ ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17
|
|
|
1626
1818
|
// that capital letters ("A-Z") have ASCII values less than lowercase letters
|
|
1627
1819
|
// ("a-z").
|
|
1628
1820
|
template <typename Sequence1, typename Sequence2>
|
|
1629
|
-
bool c_lexicographical_compare(
|
|
1630
|
-
|
|
1821
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_lexicographical_compare(
|
|
1822
|
+
const Sequence1& sequence1, const Sequence2& sequence2) {
|
|
1631
1823
|
return std::lexicographical_compare(
|
|
1632
1824
|
container_algorithm_internal::c_begin(sequence1),
|
|
1633
1825
|
container_algorithm_internal::c_end(sequence1),
|
|
@@ -1638,8 +1830,8 @@ bool c_lexicographical_compare(const Sequence1& sequence1,
|
|
|
1638
1830
|
// Overload of c_lexicographical_compare() for performing a lexicographical
|
|
1639
1831
|
// comparison using a `comp` operator instead of `operator<`.
|
|
1640
1832
|
template <typename Sequence1, typename Sequence2, typename LessThan>
|
|
1641
|
-
bool c_lexicographical_compare(
|
|
1642
|
-
|
|
1833
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_lexicographical_compare(
|
|
1834
|
+
const Sequence1& sequence1, const Sequence2& sequence2, LessThan&& comp) {
|
|
1643
1835
|
return std::lexicographical_compare(
|
|
1644
1836
|
container_algorithm_internal::c_begin(sequence1),
|
|
1645
1837
|
container_algorithm_internal::c_end(sequence1),
|
|
@@ -1654,7 +1846,7 @@ bool c_lexicographical_compare(const Sequence1& sequence1,
|
|
|
1654
1846
|
// to rearrange a container's elements into the next lexicographically greater
|
|
1655
1847
|
// permutation.
|
|
1656
1848
|
template <typename C>
|
|
1657
|
-
bool c_next_permutation(C& c) {
|
|
1849
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_next_permutation(C& c) {
|
|
1658
1850
|
return std::next_permutation(container_algorithm_internal::c_begin(c),
|
|
1659
1851
|
container_algorithm_internal::c_end(c));
|
|
1660
1852
|
}
|
|
@@ -1662,7 +1854,8 @@ bool c_next_permutation(C& c) {
|
|
|
1662
1854
|
// Overload of c_next_permutation() for performing a lexicographical
|
|
1663
1855
|
// comparison using a `comp` operator instead of `operator<`.
|
|
1664
1856
|
template <typename C, typename LessThan>
|
|
1665
|
-
bool c_next_permutation(C& c,
|
|
1857
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_next_permutation(C& c,
|
|
1858
|
+
LessThan&& comp) {
|
|
1666
1859
|
return std::next_permutation(container_algorithm_internal::c_begin(c),
|
|
1667
1860
|
container_algorithm_internal::c_end(c),
|
|
1668
1861
|
std::forward<LessThan>(comp));
|
|
@@ -1674,7 +1867,7 @@ bool c_next_permutation(C& c, LessThan&& comp) {
|
|
|
1674
1867
|
// to rearrange a container's elements into the next lexicographically lesser
|
|
1675
1868
|
// permutation.
|
|
1676
1869
|
template <typename C>
|
|
1677
|
-
bool c_prev_permutation(C& c) {
|
|
1870
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_prev_permutation(C& c) {
|
|
1678
1871
|
return std::prev_permutation(container_algorithm_internal::c_begin(c),
|
|
1679
1872
|
container_algorithm_internal::c_end(c));
|
|
1680
1873
|
}
|
|
@@ -1682,7 +1875,8 @@ bool c_prev_permutation(C& c) {
|
|
|
1682
1875
|
// Overload of c_prev_permutation() for performing a lexicographical
|
|
1683
1876
|
// comparison using a `comp` operator instead of `operator<`.
|
|
1684
1877
|
template <typename C, typename LessThan>
|
|
1685
|
-
bool c_prev_permutation(C& c,
|
|
1878
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_prev_permutation(C& c,
|
|
1879
|
+
LessThan&& comp) {
|
|
1686
1880
|
return std::prev_permutation(container_algorithm_internal::c_begin(c),
|
|
1687
1881
|
container_algorithm_internal::c_end(c),
|
|
1688
1882
|
std::forward<LessThan>(comp));
|
|
@@ -1698,7 +1892,8 @@ bool c_prev_permutation(C& c, LessThan&& comp) {
|
|
|
1698
1892
|
// to compute successive values of `value`, as if incremented with `++value`
|
|
1699
1893
|
// after each element is written, and write them to the container.
|
|
1700
1894
|
template <typename Sequence, typename T>
|
|
1701
|
-
void c_iota(Sequence& sequence,
|
|
1895
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_iota(Sequence& sequence,
|
|
1896
|
+
const T& value) {
|
|
1702
1897
|
std::iota(container_algorithm_internal::c_begin(sequence),
|
|
1703
1898
|
container_algorithm_internal::c_end(sequence), value);
|
|
1704
1899
|
}
|
|
@@ -1710,10 +1905,11 @@ void c_iota(Sequence& sequence, const T& value) {
|
|
|
1710
1905
|
// accumulation by value.
|
|
1711
1906
|
//
|
|
1712
1907
|
// Note: Due to a language technicality this function has return type
|
|
1713
|
-
//
|
|
1908
|
+
// std::decay_t<T>. As a user of this function you can casually read
|
|
1714
1909
|
// this as "returns T by value" and assume it does the right thing.
|
|
1715
1910
|
template <typename Sequence, typename T>
|
|
1716
|
-
decay_t<T> c_accumulate(
|
|
1911
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_accumulate(
|
|
1912
|
+
const Sequence& sequence, T&& init) {
|
|
1717
1913
|
return std::accumulate(container_algorithm_internal::c_begin(sequence),
|
|
1718
1914
|
container_algorithm_internal::c_end(sequence),
|
|
1719
1915
|
std::forward<T>(init));
|
|
@@ -1722,8 +1918,8 @@ decay_t<T> c_accumulate(const Sequence& sequence, T&& init) {
|
|
|
1722
1918
|
// Overload of c_accumulate() for using a binary operations other than
|
|
1723
1919
|
// addition for computing the accumulation.
|
|
1724
1920
|
template <typename Sequence, typename T, typename BinaryOp>
|
|
1725
|
-
decay_t<T> c_accumulate(
|
|
1726
|
-
|
|
1921
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_accumulate(
|
|
1922
|
+
const Sequence& sequence, T&& init, BinaryOp&& binary_op) {
|
|
1727
1923
|
return std::accumulate(container_algorithm_internal::c_begin(sequence),
|
|
1728
1924
|
container_algorithm_internal::c_end(sequence),
|
|
1729
1925
|
std::forward<T>(init),
|
|
@@ -1736,11 +1932,11 @@ decay_t<T> c_accumulate(const Sequence& sequence, T&& init,
|
|
|
1736
1932
|
// to compute the cumulative inner product of container element pairs.
|
|
1737
1933
|
//
|
|
1738
1934
|
// Note: Due to a language technicality this function has return type
|
|
1739
|
-
//
|
|
1935
|
+
// std::decay_t<T>. As a user of this function you can casually read
|
|
1740
1936
|
// this as "returns T by value" and assume it does the right thing.
|
|
1741
1937
|
template <typename Sequence1, typename Sequence2, typename T>
|
|
1742
|
-
decay_t<T> c_inner_product(
|
|
1743
|
-
|
|
1938
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_inner_product(
|
|
1939
|
+
const Sequence1& factors1, const Sequence2& factors2, T&& sum) {
|
|
1744
1940
|
return std::inner_product(container_algorithm_internal::c_begin(factors1),
|
|
1745
1941
|
container_algorithm_internal::c_end(factors1),
|
|
1746
1942
|
container_algorithm_internal::c_begin(factors2),
|
|
@@ -1752,8 +1948,9 @@ decay_t<T> c_inner_product(const Sequence1& factors1, const Sequence2& factors2,
|
|
|
1752
1948
|
// the product between the two container's element pair).
|
|
1753
1949
|
template <typename Sequence1, typename Sequence2, typename T,
|
|
1754
1950
|
typename BinaryOp1, typename BinaryOp2>
|
|
1755
|
-
decay_t<T> c_inner_product(
|
|
1756
|
-
|
|
1951
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_inner_product(
|
|
1952
|
+
const Sequence1& factors1, const Sequence2& factors2, T&& sum,
|
|
1953
|
+
BinaryOp1&& op1, BinaryOp2&& op2) {
|
|
1757
1954
|
return std::inner_product(container_algorithm_internal::c_begin(factors1),
|
|
1758
1955
|
container_algorithm_internal::c_end(factors1),
|
|
1759
1956
|
container_algorithm_internal::c_begin(factors2),
|
|
@@ -1767,8 +1964,8 @@ decay_t<T> c_inner_product(const Sequence1& factors1, const Sequence2& factors2,
|
|
|
1767
1964
|
// function to compute the difference between each element and the one preceding
|
|
1768
1965
|
// it and write it to an iterator.
|
|
1769
1966
|
template <typename InputSequence, typename OutputIt>
|
|
1770
|
-
OutputIt
|
|
1771
|
-
|
|
1967
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt
|
|
1968
|
+
c_adjacent_difference(const InputSequence& input, OutputIt output_first) {
|
|
1772
1969
|
return std::adjacent_difference(container_algorithm_internal::c_begin(input),
|
|
1773
1970
|
container_algorithm_internal::c_end(input),
|
|
1774
1971
|
output_first);
|
|
@@ -1777,8 +1974,8 @@ OutputIt c_adjacent_difference(const InputSequence& input,
|
|
|
1777
1974
|
// Overload of c_adjacent_difference() for using a binary operation other than
|
|
1778
1975
|
// subtraction to compute the adjacent difference.
|
|
1779
1976
|
template <typename InputSequence, typename OutputIt, typename BinaryOp>
|
|
1780
|
-
OutputIt c_adjacent_difference(
|
|
1781
|
-
|
|
1977
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt c_adjacent_difference(
|
|
1978
|
+
const InputSequence& input, OutputIt output_first, BinaryOp&& op) {
|
|
1782
1979
|
return std::adjacent_difference(container_algorithm_internal::c_begin(input),
|
|
1783
1980
|
container_algorithm_internal::c_end(input),
|
|
1784
1981
|
output_first, std::forward<BinaryOp>(op));
|
|
@@ -1791,7 +1988,8 @@ OutputIt c_adjacent_difference(const InputSequence& input,
|
|
|
1791
1988
|
// to an iterator. The partial sum is the sum of all element values so far in
|
|
1792
1989
|
// the sequence.
|
|
1793
1990
|
template <typename InputSequence, typename OutputIt>
|
|
1794
|
-
|
|
1991
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt
|
|
1992
|
+
c_partial_sum(const InputSequence& input, OutputIt output_first) {
|
|
1795
1993
|
return std::partial_sum(container_algorithm_internal::c_begin(input),
|
|
1796
1994
|
container_algorithm_internal::c_end(input),
|
|
1797
1995
|
output_first);
|
|
@@ -1800,8 +1998,8 @@ OutputIt c_partial_sum(const InputSequence& input, OutputIt output_first) {
|
|
|
1800
1998
|
// Overload of c_partial_sum() for using a binary operation other than addition
|
|
1801
1999
|
// to compute the "partial sum".
|
|
1802
2000
|
template <typename InputSequence, typename OutputIt, typename BinaryOp>
|
|
1803
|
-
OutputIt c_partial_sum(
|
|
1804
|
-
|
|
2001
|
+
ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt c_partial_sum(
|
|
2002
|
+
const InputSequence& input, OutputIt output_first, BinaryOp&& op) {
|
|
1805
2003
|
return std::partial_sum(container_algorithm_internal::c_begin(input),
|
|
1806
2004
|
container_algorithm_internal::c_end(input),
|
|
1807
2005
|
output_first, std::forward<BinaryOp>(op));
|