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

Function EvaluateIn

eval/eval/equality_steps.cc:187–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

185}
186
187absl::StatusOr<Value> EvaluateIn(ExecutionFrameBase& frame, const Value& item,
188 const AttributeTrail& item_attr,
189 const Value& container,
190 const AttributeTrail& container_attr) {
191 if (item.IsError()) {
192 return item;
193 }
194 if (container.IsError()) {
195 return container;
196 }
197
198 if (frame.unknown_processing_enabled()) {
199 auto accu = frame.attribute_utility().CreateAccumulator();
200 accu.MaybeAdd(item, item_attr);
201 accu.MaybeAdd(container, container_attr);
202 if (!accu.IsEmpty()) {
203 return std::move(accu).Build();
204 }
205 }
206 if (container.IsList()) {
207 return container.GetList().Contains(item, frame.descriptor_pool(),
208 frame.message_factory(), frame.arena());
209 }
210 if (container.IsMap()) {
211 return EvaluateInMap(frame, item, container.GetMap());
212 }
213 return cel::ErrorValue(
214 cel::runtime_internal::CreateNoMatchingOverloadError(cel::builtin::kIn));
215}
216
217class DirectInStep : public DirectExpressionStep {
218 public:

Callers 1

EvaluateMethod · 0.85

Calls 15

EvaluateInMapFunction · 0.85
ErrorValueFunction · 0.85
MaybeAddMethod · 0.80
IsErrorMethod · 0.45
IsEmptyMethod · 0.45
BuildMethod · 0.45
IsListMethod · 0.45
ContainsMethod · 0.45
GetListMethod · 0.45
descriptor_poolMethod · 0.45

Tested by

no test coverage detected