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

Method parseParameters

src/dsql/StmtNodes.cpp:1602–1634  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1600}
1601
1602void DeclareSubFuncNode::parseParameters(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb,
1603 Firebird::Array<NestConst<Parameter> >& paramArray, USHORT* defaultCount)
1604{
1605 BlrReader& reader = csb->csb_blr_reader;
1606 USHORT count = reader.getWord();
1607 FB_SIZE_T pos = paramArray.getCount();
1608 paramArray.resize(pos + count);
1609
1610 if (defaultCount)
1611 *defaultCount = 0;
1612
1613 for (FB_SIZE_T i = 0; i < count; ++i)
1614 {
1615 Parameter* parameter = FB_NEW_POOL(pool) Parameter(pool);
1616 parameter->prm_number = USHORT(i);
1617 parameter->prm_fun_mechanism = FUN_value;
1618 paramArray[pos + parameter->prm_number] = parameter;
1619
1620 csb->csb_blr_reader.getMetaName(parameter->prm_name);
1621
1622 UCHAR hasDefault = reader.getByte();
1623
1624 if (hasDefault == 1)
1625 {
1626 if (defaultCount && *defaultCount == 0)
1627 *defaultCount = paramArray.getCount() - i;
1628
1629 parameter->prm_default_value = PAR_parse_value(tdbb, csb);
1630 }
1631 else if (hasDefault != 0)
1632 PAR_syntax_error(csb, "0 or 1");
1633 }
1634}
1635
1636string DeclareSubFuncNode::internalPrint(NodePrinter& printer) const
1637{

Callers

nothing calls this directly

Calls 9

PAR_parse_valueFunction · 0.85
PAR_syntax_errorFunction · 0.85
ParameterClass · 0.50
USHORTEnum · 0.50
getWordMethod · 0.45
getCountMethod · 0.45
resizeMethod · 0.45
getMetaNameMethod · 0.45
getByteMethod · 0.45

Tested by

no test coverage detected