Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion eval/public/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
)
Expand Down
8 changes: 4 additions & 4 deletions eval/public/ast_traverse.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
#include "eval/public/ast_traverse.h"

#include <stack>
#include <variant>

#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"

Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -339,7 +339,7 @@ struct PushDepsVisitor {

void PushDependencies(const StackRecord& record, std::stack<StackRecord>& stack,
const TraversalOptions& options) {
absl::visit(PushDepsVisitor{stack, options}, record.record_variant);
std::visit(PushDepsVisitor{stack, options}, record.record_variant);
}

} // namespace
Expand Down
2 changes: 0 additions & 2 deletions internal/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,6 @@ cc_test(
cc_library(
name = "number",
hdrs = ["number.h"],
deps = ["@com_google_absl//absl/types:variant"],
)

cc_test(
Expand Down Expand Up @@ -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",
Expand Down
141 changes: 70 additions & 71 deletions internal/json.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <string>
#include <tuple>
#include <utility>
#include <variant>
#include <vector>

#include "google/protobuf/duration.pb.h"
Expand All @@ -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"
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}

Expand All @@ -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);
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}
Expand Down
25 changes: 12 additions & 13 deletions internal/number.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@

#include <cstdint>
#include <limits>

#include "absl/types/variant.h"
#include <variant>

namespace cel::internal {

Expand All @@ -45,7 +44,7 @@ constexpr double kMaxDoubleRepresentableAsUint =

#define CEL_ABSL_VISIT_CONSTEXPR

using NumberVariant = absl::variant<double, uint64_t, int64_t>;
using NumberVariant = std::variant<double, uint64_t, int64_t>;

enum class ComparisonResult {
kLesser,
Expand Down Expand Up @@ -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;
};
Expand Down Expand Up @@ -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<double>(), value_);
return std::visit(internal::ConversionVisitor<double>(), 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<int64_t>(), value_);
return std::visit(internal::ConversionVisitor<int64_t>(), 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<uint64_t>(), value_);
return std::visit(internal::ConversionVisitor<uint64_t>(), 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 {
Expand Down Expand Up @@ -282,15 +281,15 @@ class Number {
// or int64_t.
template <typename T, typename Op>
T visit(Op&& op) const {
return absl::visit(std::forward<Op>(op), value_);
return std::visit(std::forward<Op>(op), value_);
}

private:
internal::NumberVariant value_;

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_);
}
};

Expand Down