MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / CME_expr

Function CME_expr

src/gpre/cme.cpp:162–495  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160//
161
162void CME_expr(gpre_nod* node, gpre_req* request)
163{
164 gpre_ctx* context;
165 gpre_fld field;
166 const ref* reference;
167 TEXT s[128];
168
169 switch (node->nod_type)
170 {
171 case nod_field:
172 if (!(reference = (ref*) node->nod_arg[0]))
173 {
174 CPR_error("CME_expr: reference missing");
175 return;
176 }
177 cmp_field(node, request);
178 if (reference->ref_flags & REF_fetch_array)
179 cmp_array(node, request);
180 return;
181
182 case nod_array:
183 cmp_array_element(node, request);
184 return;
185
186 case nod_index:
187 CME_expr(node->nod_arg[0], request);
188 return;
189
190 case nod_value:
191 cmp_value(node, request);
192 if ((reference = (ref*) node->nod_arg[0]) && (reference->ref_flags & REF_fetch_array))
193 {
194 cmp_array(node, request);
195 }
196 return;
197
198 case nod_negate:
199 if (node->nod_arg[0]->nod_type != nod_literal)
200 break;
201 case nod_literal:
202 cmp_literal(node, request);
203 return;
204
205 case nod_like:
206 {
207 request->add_byte((node->nod_count == 2) ? blr_like : blr_ansi_like);
208 gpre_nod** ptr = node->nod_arg;
209 for (const gpre_nod* const* const end = ptr + node->nod_count; ptr < end; ptr++)
210 {
211 CME_expr(*ptr, request);
212 }
213 return;
214 }
215
216 case nod_udf:
217 cmp_udf(node, request);
218 return;
219

Callers 15

create_set_default_trgFunction · 0.85
put_computed_blrFunction · 0.85
put_view_trigger_blrFunction · 0.85
cmp_anyFunction · 0.85
cmp_assignmentFunction · 0.85
cmp_forFunction · 0.85
cmp_loopFunction · 0.85
cmp_procedureFunction · 0.85
cmp_returningFunction · 0.85
CME_relationFunction · 0.85
CME_rseFunction · 0.85
cmp_array_elementFunction · 0.85

Calls 15

CPR_errorFunction · 0.85
cmp_arrayFunction · 0.85
cmp_array_elementFunction · 0.85
cmp_valueFunction · 0.85
cmp_literalFunction · 0.85
cmp_udfFunction · 0.85
MET_generatorFunction · 0.85
cmp_castFunction · 0.85
get_dtype_of_listFunction · 0.85
CMP_external_fieldFunction · 0.85
get_dtype_of_caseFunction · 0.85
CPR_bugcheckFunction · 0.85

Tested by

no test coverage detected