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

Class AttributeStringPrinter

base/attribute.cc:35–72  ·  view source on GitHub ↗

Visitor for appending string representation for different qualifier kinds.

Source from the content-addressed store, hash-verified

33
34// Visitor for appending string representation for different qualifier kinds.
35class AttributeStringPrinter {
36 public:
37 // String representation for the given qualifier is appended to output.
38 // output must be non-null.
39 explicit AttributeStringPrinter(std::string* output, Kind type)
40 : output_(*output), type_(type) {}
41
42 absl::Status operator()(const Kind& ignored) const {
43 // Attributes are represented as a variant, with illegal attribute
44 // qualifiers represented with their type as the first alternative.
45 return absl::InvalidArgumentError(
46 absl::StrCat("Unsupported attribute qualifier ", KindToString(type_)));
47 }
48
49 absl::Status operator()(int64_t index) {
50 absl::StrAppend(&output_, "[", index, "]");
51 return absl::OkStatus();
52 }
53
54 absl::Status operator()(uint64_t index) {
55 absl::StrAppend(&output_, "[", index, "]");
56 return absl::OkStatus();
57 }
58
59 absl::Status operator()(bool bool_key) {
60 absl::StrAppend(&output_, "[", (bool_key) ? "true" : "false", "]");
61 return absl::OkStatus();
62 }
63
64 absl::Status operator()(const std::string& field) {
65 absl::StrAppend(&output_, ".", field);
66 return absl::OkStatus();
67 }
68
69 private:
70 std::string& output_;
71 Kind type_;
72};
73
74// Visitor for appending string representation for different qualifier kinds.
75class AttributeQualifierStringPrinter {

Callers 1

AsStringMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected