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

Function ListValueEqual

common/values/list_value.cc:181–218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

179namespace common_internal {
180
181absl::Status ListValueEqual(
182 const ListValue& lhs, const ListValue& rhs,
183 const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool,
184 google::protobuf::MessageFactory* absl_nonnull message_factory,
185 google::protobuf::Arena* absl_nonnull arena, Value* absl_nonnull result) {
186 ABSL_DCHECK(descriptor_pool != nullptr);
187 ABSL_DCHECK(message_factory != nullptr);
188 ABSL_DCHECK(arena != nullptr);
189 ABSL_DCHECK(result != nullptr);
190
191 CEL_ASSIGN_OR_RETURN(auto lhs_size, lhs.Size());
192 CEL_ASSIGN_OR_RETURN(auto rhs_size, rhs.Size());
193 if (lhs_size != rhs_size) {
194 *result = FalseValue();
195 return absl::OkStatus();
196 }
197 CEL_ASSIGN_OR_RETURN(auto lhs_iterator, lhs.NewIterator());
198 CEL_ASSIGN_OR_RETURN(auto rhs_iterator, rhs.NewIterator());
199 Value lhs_element;
200 Value rhs_element;
201 for (size_t index = 0; index < lhs_size; ++index) {
202 ABSL_CHECK(lhs_iterator->HasNext()); // Crash OK
203 ABSL_CHECK(rhs_iterator->HasNext()); // Crash OK
204 CEL_RETURN_IF_ERROR(lhs_iterator->Next(descriptor_pool, message_factory,
205 arena, &lhs_element));
206 CEL_RETURN_IF_ERROR(rhs_iterator->Next(descriptor_pool, message_factory,
207 arena, &rhs_element));
208 CEL_RETURN_IF_ERROR(lhs_element.Equal(rhs_element, descriptor_pool,
209 message_factory, arena, result));
210 if (result->IsFalse()) {
211 return absl::OkStatus();
212 }
213 }
214 ABSL_DCHECK(!lhs_iterator->HasNext());
215 ABSL_DCHECK(!rhs_iterator->HasNext());
216 *result = TrueValue();
217 return absl::OkStatus();
218}
219
220absl::Status ListValueEqual(
221 const CustomListValueInterface& lhs, const ListValue& rhs,

Callers 5

ValueEqualMethod · 0.85
EqualMethod · 0.85
EqualMethod · 0.85
EqualMethod · 0.85
EqualMethod · 0.85

Calls 7

FalseValueFunction · 0.85
TrueValueFunction · 0.85
IsFalseMethod · 0.80
HasNextMethod · 0.45
NextMethod · 0.45
EqualMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected