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

Class StackRecord

eval/public/ast_rewrite.cc:73–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71 absl::variant<ExprRecord, ArgRecord, ComprehensionRecord>;
72
73struct StackRecord {
74 public:
75 ABSL_ATTRIBUTE_UNUSED static constexpr int kNotCallArg = -1;
76 static constexpr int kTarget = -2;
77
78 StackRecord(Expr* e, const SourceInfo* info) {
79 ExprRecord record;
80 record.expr = e;
81 record.source_info = info;
82 record_variant = record;
83 }
84
85 StackRecord(Expr* e, const SourceInfo* info, Comprehension* comprehension,
86 Expr* comprehension_expr, ComprehensionArg comprehension_arg,
87 bool use_comprehension_callbacks) {
88 if (use_comprehension_callbacks) {
89 ComprehensionRecord record;
90 record.expr = e;
91 record.source_info = info;
92 record.comprehension = comprehension;
93 record.comprehension_expr = comprehension_expr;
94 record.comprehension_arg = comprehension_arg;
95 record.use_comprehension_callbacks = use_comprehension_callbacks;
96 record_variant = record;
97 return;
98 }
99 ArgRecord record;
100 record.expr = e;
101 record.source_info = info;
102 record.calling_expr = comprehension_expr;
103 record.call_arg = comprehension_arg;
104 record_variant = record;
105 }
106
107 StackRecord(Expr* e, const SourceInfo* info, const Expr* call, int argnum) {
108 ArgRecord record;
109 record.expr = e;
110 record.source_info = info;
111 record.calling_expr = call;
112 record.call_arg = argnum;
113 record_variant = record;
114 }
115
116 Expr* expr() const { return absl::get<ExprRecord>(record_variant).expr; }
117
118 const SourceInfo* source_info() const {
119 return absl::get<ExprRecord>(record_variant).source_info;
120 }
121
122 bool IsExprRecord() const {
123 return absl::holds_alternative<ExprRecord>(record_variant);
124 }
125
126 StackRecordKind record_variant;
127 bool visited = false;
128};
129
130struct PreVisitor {

Callers 6

PushSelectDepsFunction · 0.70
PushCallDepsFunction · 0.70
PushListDepsFunction · 0.70
PushStructDepsFunction · 0.70
operator()Method · 0.70
AstRewriteFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected