MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / HomogenousCelValueEqual

Function HomogenousCelValueEqual

eval/internal/cel_value_equal.cc:166–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164// EqualityProvider is used for equality among members of container types.
165template <class EqualityProvider>
166absl::optional<bool> HomogenousCelValueEqual(const CelValue& t1,
167 const CelValue& t2) {
168 if (t1.type() != t2.type()) {
169 return absl::nullopt;
170 }
171 switch (t1.type()) {
172 case Kind::kNullType:
173 return Equal<CelValue::NullType>(CelValue::NullType(),
174 CelValue::NullType());
175 case Kind::kBool:
176 return Equal<bool>(t1.BoolOrDie(), t2.BoolOrDie());
177 case Kind::kInt64:
178 return Equal<int64_t>(t1.Int64OrDie(), t2.Int64OrDie());
179 case Kind::kUint64:
180 return Equal<uint64_t>(t1.Uint64OrDie(), t2.Uint64OrDie());
181 case Kind::kDouble:
182 return Equal<double>(t1.DoubleOrDie(), t2.DoubleOrDie());
183 case Kind::kString:
184 return Equal<CelValue::StringHolder>(t1.StringOrDie(), t2.StringOrDie());
185 case Kind::kBytes:
186 return Equal<CelValue::BytesHolder>(t1.BytesOrDie(), t2.BytesOrDie());
187 case Kind::kDuration:
188 return Equal<absl::Duration>(t1.DurationOrDie(), t2.DurationOrDie());
189 case Kind::kTimestamp:
190 return Equal<absl::Time>(t1.TimestampOrDie(), t2.TimestampOrDie());
191 case Kind::kList:
192 return ListEqual<EqualityProvider>(t1.ListOrDie(), t2.ListOrDie());
193 case Kind::kMap:
194 return MapEqual<EqualityProvider>(t1.MapOrDie(), t2.MapOrDie());
195 case Kind::kCelType:
196 return Equal<CelValue::CelTypeHolder>(t1.CelTypeOrDie(),
197 t2.CelTypeOrDie());
198 default:
199 break;
200 }
201 return absl::nullopt;
202}
203
204absl::optional<bool> HeterogeneousEqualProvider::operator()(
205 const CelValue& lhs, const CelValue& rhs) const {

Callers

nothing calls this directly

Calls 13

typeMethod · 0.80
BoolOrDieMethod · 0.80
Int64OrDieMethod · 0.80
Uint64OrDieMethod · 0.80
DoubleOrDieMethod · 0.80
StringOrDieMethod · 0.80
BytesOrDieMethod · 0.80
DurationOrDieMethod · 0.80
TimestampOrDieMethod · 0.80
ListOrDieMethod · 0.80
MapOrDieMethod · 0.80
CelTypeOrDieMethod · 0.80

Tested by

no test coverage detected