diff --git a/eval/public/BUILD b/eval/public/BUILD index 31ad2d480..cc1f5c3c5 100644 --- a/eval/public/BUILD +++ b/eval/public/BUILD @@ -545,7 +545,6 @@ cc_library( ":ast_visitor", ":source_position", "@com_google_absl//absl/log:absl_log", - "@com_google_absl//absl/types:variant", "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto", ], ) diff --git a/eval/public/ast_traverse.cc b/eval/public/ast_traverse.cc index c18b806b9..ffd07e38b 100644 --- a/eval/public/ast_traverse.cc +++ b/eval/public/ast_traverse.cc @@ -15,10 +15,10 @@ #include "eval/public/ast_traverse.h" #include +#include #include "cel/expr/syntax.pb.h" #include "absl/log/absl_log.h" -#include "absl/types/variant.h" #include "eval/public/ast_visitor.h" #include "eval/public/source_position.h" @@ -166,7 +166,7 @@ struct PreVisitor { }; void PreVisit(const StackRecord& record, AstVisitor* visitor) { - absl::visit(PreVisitor{visitor}, record.record_variant); + std::visit(PreVisitor{visitor}, record.record_variant); } struct PostVisitor { @@ -224,7 +224,7 @@ struct PostVisitor { }; void PostVisit(const StackRecord& record, AstVisitor* visitor) { - absl::visit(PostVisitor{visitor}, record.record_variant); + std::visit(PostVisitor{visitor}, record.record_variant); } void PushSelectDeps(const Select* select_expr, const SourceInfo* source_info, @@ -339,7 +339,7 @@ struct PushDepsVisitor { void PushDependencies(const StackRecord& record, std::stack& stack, const TraversalOptions& options) { - absl::visit(PushDepsVisitor{stack, options}, record.record_variant); + std::visit(PushDepsVisitor{stack, options}, record.record_variant); } } // namespace diff --git a/internal/BUILD b/internal/BUILD index 0ac5c4e46..db3a77a52 100644 --- a/internal/BUILD +++ b/internal/BUILD @@ -134,7 +134,6 @@ cc_test( cc_library( name = "number", hdrs = ["number.h"], - deps = ["@com_google_absl//absl/types:variant"], ) cc_test( @@ -743,7 +742,6 @@ cc_library( "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:cord", "@com_google_absl//absl/strings:string_view", - "@com_google_absl//absl/types:variant", "@com_google_protobuf//:duration_cc_proto", "@com_google_protobuf//:protobuf", "@com_google_protobuf//:struct_cc_proto", diff --git a/internal/json.cc b/internal/json.cc index cdd4c1a5d..699386770 100644 --- a/internal/json.cc +++ b/internal/json.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include "google/protobuf/duration.pb.h" @@ -40,7 +41,6 @@ #include "absl/strings/str_cat.h" #include "absl/strings/str_join.h" #include "absl/strings/string_view.h" -#include "absl/types/variant.h" #include "extensions/protobuf/internal/map_reflection.h" #include "internal/status_macros.h" #include "internal/strings.h" @@ -108,15 +108,14 @@ absl::Status SnakeCaseToCamelCaseImpl(Chars input, absl::Status SnakeCaseToCamelCase(const well_known_types::StringValue& input, std::string* absl_nonnull output) { - return absl::visit(absl::Overload( - [&](absl::string_view string) -> absl::Status { - return SnakeCaseToCamelCaseImpl(string, output); - }, - [&](const absl::Cord& cord) -> absl::Status { - return SnakeCaseToCamelCaseImpl(cord.Chars(), - output); - }), - AsVariant(input)); + return std::visit(absl::Overload( + [&](absl::string_view string) -> absl::Status { + return SnakeCaseToCamelCaseImpl(string, output); + }, + [&](const absl::Cord& cord) -> absl::Status { + return SnakeCaseToCamelCaseImpl(cord.Chars(), output); + }), + AsVariant(input)); } class MessageToJsonState; @@ -712,15 +711,15 @@ class MessageToJsonState { ABSL_DCHECK(!field->is_map() && field->is_repeated()); ABSL_DCHECK_EQ(field->type(), FieldDescriptor::TYPE_BYTES); ABSL_DCHECK_EQ(field->cpp_type(), FieldDescriptor::CPPTYPE_STRING); - absl::visit(absl::Overload( - [&](absl::string_view string) -> void { - SetStringValueFromBytes(result, string); - }, - [&](absl::Cord&& cord) -> void { - SetStringValueFromBytes(result, cord); - }), - AsVariant(GetRepeatedBytesField(reflection, message, field, - index, scratch_))); + std::visit(absl::Overload( + [&](absl::string_view string) -> void { + SetStringValueFromBytes(result, string); + }, + [&](absl::Cord&& cord) -> void { + SetStringValueFromBytes(result, cord); + }), + AsVariant(GetRepeatedBytesField(reflection, message, field, + index, scratch_))); return absl::OkStatus(); } @@ -733,7 +732,7 @@ class MessageToJsonState { ABSL_DCHECK(!field->is_map() && field->is_repeated()); ABSL_DCHECK_EQ(field->type(), FieldDescriptor::TYPE_STRING); ABSL_DCHECK_EQ(field->cpp_type(), FieldDescriptor::CPPTYPE_STRING); - absl::visit( + std::visit( absl::Overload( [&](absl::string_view string) -> void { SetStringValue(result, string); @@ -927,24 +926,24 @@ class MessageToJsonState { void StringValueToJson(const well_known_types::StringValue& value, google::protobuf::MessageLite* absl_nonnull result) const { - absl::visit(absl::Overload([&](absl::string_view string) - -> void { SetStringValue(result, string); }, - [&](const absl::Cord& cord) -> void { - SetStringValue(result, cord); - }), - AsVariant(value)); + std::visit(absl::Overload([&](absl::string_view string) + -> void { SetStringValue(result, string); }, + [&](const absl::Cord& cord) -> void { + SetStringValue(result, cord); + }), + AsVariant(value)); } void BytesValueToJson(const well_known_types::BytesValue& value, google::protobuf::MessageLite* absl_nonnull result) const { - absl::visit(absl::Overload( - [&](absl::string_view string) -> void { - SetStringValueFromBytes(result, string); - }, - [&](const absl::Cord& cord) -> void { - SetStringValueFromBytes(result, cord); - }), - AsVariant(value)); + std::visit(absl::Overload( + [&](absl::string_view string) -> void { + SetStringValueFromBytes(result, string); + }, + [&](const absl::Cord& cord) -> void { + SetStringValueFromBytes(result, cord); + }), + AsVariant(value)); } virtual void SetNullValue( @@ -1398,21 +1397,21 @@ class JsonMapIterator final { Value Next(std::string& scratch ABSL_ATTRIBUTE_LIFETIME_BOUND) { Value result; - absl::visit(absl::Overload( - [&](Generated& generated) -> void { - result = std::pair{absl::string_view(generated->first), - &generated->second}; - ++generated; - }, - [&](Dynamic& dynamic) -> void { - const auto& key = dynamic.GetKey().GetStringValue(); - scratch.assign(key.data(), key.size()); - result = - std::pair{absl::string_view(scratch), - &dynamic.GetValueRef().GetMessageValue()}; - ++dynamic; - }), - variant_); + std::visit(absl::Overload( + [&](Generated& generated) -> void { + result = std::pair{absl::string_view(generated->first), + &generated->second}; + ++generated; + }, + [&](Dynamic& dynamic) -> void { + const auto& key = dynamic.GetKey().GetStringValue(); + scratch.assign(key.data(), key.size()); + result = + std::pair{absl::string_view(scratch), + &dynamic.GetValueRef().GetMessageValue()}; + ++dynamic; + }), + variant_); return result; } @@ -1608,14 +1607,14 @@ class DynamicJsonAccessor final : public JsonAccessor { }; std::string JsonStringDebugString(const well_known_types::StringValue& value) { - return absl::visit(absl::Overload( - [&](absl::string_view string) -> std::string { - return FormatStringLiteral(string); - }, - [&](const absl::Cord& cord) -> std::string { - return FormatStringLiteral(cord); - }), - well_known_types::AsVariant(value)); + return std::visit(absl::Overload( + [&](absl::string_view string) -> std::string { + return FormatStringLiteral(string); + }, + [&](const absl::Cord& cord) -> std::string { + return FormatStringLiteral(cord); + }), + well_known_types::AsVariant(value)); } std::string JsonNumberDebugString(double value) { @@ -1852,20 +1851,20 @@ class JsonEqualsState final { for (int i = 0; i < lhs_size; ++i) { std::tie(lhs_key, lhs_value) = lhs_iterator.Next(lhs_key_scratch); if (const auto* rhs_value = rhs_accessor_->FindField( - rhs, absl::visit( - absl::Overload( - [](absl::string_view string) -> absl::string_view { - return string; - }, - [&lhs_key_scratch]( - const absl::Cord& cord) -> absl::string_view { - if (auto flat = cord.TryFlat(); flat) { - return *flat; - } - absl::CopyCordToString(cord, &lhs_key_scratch); - return absl::string_view(lhs_key_scratch); - }), - AsVariant(lhs_key))); + rhs, + std::visit(absl::Overload( + [](absl::string_view string) -> absl::string_view { + return string; + }, + [&lhs_key_scratch]( + const absl::Cord& cord) -> absl::string_view { + if (auto flat = cord.TryFlat(); flat) { + return *flat; + } + absl::CopyCordToString(cord, &lhs_key_scratch); + return absl::string_view(lhs_key_scratch); + }), + AsVariant(lhs_key))); rhs_value == nullptr || !ValueEqual(*lhs_value, *rhs_value)) { return false; } diff --git a/internal/number.h b/internal/number.h index c1c1d14e8..3727c5777 100644 --- a/internal/number.h +++ b/internal/number.h @@ -17,8 +17,7 @@ #include #include - -#include "absl/types/variant.h" +#include namespace cel::internal { @@ -45,7 +44,7 @@ constexpr double kMaxDoubleRepresentableAsUint = #define CEL_ABSL_VISIT_CONSTEXPR -using NumberVariant = absl::variant; +using NumberVariant = std::variant; enum class ComparisonResult { kLesser, @@ -168,15 +167,15 @@ struct CompareVisitor { explicit constexpr CompareVisitor(NumberVariant rhs) : rhs(rhs) {} CEL_ABSL_VISIT_CONSTEXPR ComparisonResult operator()(double v) { - return absl::visit(DoubleCompareVisitor(v), rhs); + return std::visit(DoubleCompareVisitor(v), rhs); } CEL_ABSL_VISIT_CONSTEXPR ComparisonResult operator()(uint64_t v) { - return absl::visit(UintCompareVisitor(v), rhs); + return std::visit(UintCompareVisitor(v), rhs); } CEL_ABSL_VISIT_CONSTEXPR ComparisonResult operator()(int64_t v) { - return absl::visit(IntCompareVisitor(v), rhs); + return std::visit(IntCompareVisitor(v), rhs); } NumberVariant rhs; }; @@ -223,31 +222,31 @@ class Number { // Return a double representation of the value. CEL_ABSL_VISIT_CONSTEXPR double AsDouble() const { - return absl::visit(internal::ConversionVisitor(), value_); + return std::visit(internal::ConversionVisitor(), value_); } // Return signed int64 representation for the value. // Caller must guarantee the underlying value is representatble as an // int. CEL_ABSL_VISIT_CONSTEXPR int64_t AsInt() const { - return absl::visit(internal::ConversionVisitor(), value_); + return std::visit(internal::ConversionVisitor(), value_); } // Return unsigned int64 representation for the value. // Caller must guarantee the underlying value is representable as an // uint. CEL_ABSL_VISIT_CONSTEXPR uint64_t AsUint() const { - return absl::visit(internal::ConversionVisitor(), value_); + return std::visit(internal::ConversionVisitor(), value_); } // For key lookups, check if the conversion to signed int is lossless. CEL_ABSL_VISIT_CONSTEXPR bool LosslessConvertibleToInt() const { - return absl::visit(internal::LosslessConvertibleToIntVisitor(), value_); + return std::visit(internal::LosslessConvertibleToIntVisitor(), value_); } // For key lookups, check if the conversion to unsigned int is lossless. CEL_ABSL_VISIT_CONSTEXPR bool LosslessConvertibleToUint() const { - return absl::visit(internal::LosslessConvertibleToUintVisitor(), value_); + return std::visit(internal::LosslessConvertibleToUintVisitor(), value_); } CEL_ABSL_VISIT_CONSTEXPR bool operator<(Number other) const { @@ -282,7 +281,7 @@ class Number { // or int64_t. template T visit(Op&& op) const { - return absl::visit(std::forward(op), value_); + return std::visit(std::forward(op), value_); } private: @@ -290,7 +289,7 @@ class Number { CEL_ABSL_VISIT_CONSTEXPR internal::ComparisonResult Compare( Number other) const { - return absl::visit(internal::CompareVisitor(other.value_), value_); + return std::visit(internal::CompareVisitor(other.value_), value_); } };