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

Function par_primitive_value

src/gpre/exp.cpp:1410–1456  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1408//
1409
1410static gpre_nod* par_primitive_value( gpre_req* request, gpre_fld* field)
1411{
1412 if (MSC_match(KW_MINUS))
1413 return MSC_unary(nod_negate, par_primitive_value(request, field));
1414
1415 if (MSC_match(KW_LEFT_PAREN))
1416 {
1417 gpre_nod* node = par_value(request, field);
1418 EXP_match_paren();
1419 return node;
1420 }
1421
1422 if (MSC_match(KW_UPPERCASE))
1423 {
1424 gpre_nod* node = MSC_node(nod_upcase, 1);
1425 gpre_nod* sub = par_primitive_value(request, field);
1426 node->nod_arg[0] = sub;
1427 return node;
1428 }
1429
1430 if (MSC_match(KW_USER_NAME))
1431 return MSC_node(nod_user_name, 0);
1432
1433 if (MSC_match(KW_NULLIF))
1434 {
1435 gpre_nod* node = MSC_node(nod_nullif, 2);
1436 EXP_left_paren(0);
1437 node->nod_arg[0] = par_value(request, field);
1438 if (!MSC_match(KW_COMMA))
1439 CPR_s_error("<comma>");
1440 node->nod_arg[1] = par_value(request, field);
1441 EXP_match_paren();
1442 return node;
1443 }
1444
1445 // Check for user defined functions
1446
1447 gpre_nod* node = par_udf(request, UDF_value, field);
1448 if (node)
1449 return node;
1450
1451 const gpre_sym* symbol = gpreGlob.token_global.tok_symbol;
1452 if (!symbol || symbol->sym_type != SYM_context)
1453 return par_native_value(request, field);
1454
1455 return par_field(request);
1456}
1457
1458
1459//____________________________________________________________

Callers 1

par_multiplyFunction · 0.70

Calls 10

MSC_matchFunction · 0.85
MSC_unaryFunction · 0.85
par_valueFunction · 0.85
EXP_match_parenFunction · 0.85
MSC_nodeFunction · 0.85
EXP_left_parenFunction · 0.85
CPR_s_errorFunction · 0.85
par_native_valueFunction · 0.85
par_udfFunction · 0.70
par_fieldFunction · 0.70

Tested by

no test coverage detected