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

Class AttributeTrail

eval/eval/attribute_trail.h:22–60  ·  view source on GitHub ↗

AttributeTrail reflects current attribute path. It is functionally similar to cel::Attribute, yet intended to have better complexity on attribute path increment operations. TODO(issues/41) Current AttributeTrail implementation is equivalent to cel::Attribute - improve it. Intended to be used in conjunction with cel::Value, describing the attribute value originated from. Empty AttributeTrail denote

Source from the content-addressed store, hash-verified

20// Empty AttributeTrail denotes object with attribute path not defined
21// or supported.
22class AttributeTrail {
23 public:
24 AttributeTrail() : attribute_(absl::nullopt) {}
25
26 explicit AttributeTrail(std::string variable_name)
27 : attribute_(absl::in_place, std::move(variable_name)) {}
28
29 explicit AttributeTrail(cel::Attribute attribute)
30 : attribute_(std::move(attribute)) {}
31
32 // NOLINTNEXTLINE(google-explicit-constructor)
33 AttributeTrail(absl::nullopt_t) : AttributeTrail() {}
34
35 AttributeTrail(const AttributeTrail&) = default;
36 AttributeTrail& operator=(const AttributeTrail&) = default;
37 AttributeTrail(AttributeTrail&&) = default;
38 AttributeTrail& operator=(AttributeTrail&&) = default;
39
40 AttributeTrail& operator=(absl::nullopt_t) {
41 attribute_.reset();
42 return *this;
43 }
44
45 // Creates AttributeTrail with attribute path incremented by "qualifier".
46 AttributeTrail Step(cel::AttributeQualifier qualifier) const;
47
48 // Creates AttributeTrail with attribute path incremented by "qualifier".
49 AttributeTrail Step(const std::string* qualifier) const {
50 return Step(cel::AttributeQualifier::OfString(*qualifier));
51 }
52
53 // Returns CelAttribute that corresponds to content of AttributeTrail.
54 const cel::Attribute& attribute() const { return attribute_.value(); }
55
56 bool empty() const { return !attribute_.has_value(); }
57
58 private:
59 absl::optional<cel::Attribute> attribute_;
60};
61
62} // namespace google::api::expr::runtime
63

Callers 10

TEST_FFunction · 0.85
TESTFunction · 0.85
EvaluateMethod · 0.85
LookupIdentFunction · 0.85
EvalOptionalOrFunction · 0.85
StepMethod · 0.85
ReturnLogicResultFunction · 0.85
TESTFunction · 0.85
TESTFunction · 0.85
GetAttributeTrailMethod · 0.85

Calls 2

resetMethod · 0.45
valueMethod · 0.45

Tested by 5

TEST_FFunction · 0.68
TESTFunction · 0.68
EvaluateMethod · 0.68
TESTFunction · 0.68
TESTFunction · 0.68