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

Method parse

src/common/config/config_file.cpp:653–747  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

651 */
652
653void ConfigFile::parse(Stream* stream)
654{
655 String inputLine;
656 Parameter* previous = NULL;
657 unsigned int line;
658 const char* streamName = stream->getFileName();
659
660 parameters.setSortMode(FB_ARRAY_SORT_MANUAL);
661
662 while (getLine(stream, inputLine, line))
663 {
664 Parameter current;
665 current.line = line;
666
667 switch (parseLine(streamName, inputLine, current))
668 {
669 case LINE_END_SUB:
670 case LINE_BAD:
671 badLine(streamName, inputLine);
672
673 case LINE_REGULAR:
674 if (current.name.isEmpty())
675 badLine(streamName, inputLine);
676
677 previous = &parameters[parameters.add(current)];
678 break;
679
680 case LINE_INCLUDE:
681 include(streamName, current.value.ToPathName());
682 break;
683
684 case LINE_START_SUB:
685 if (current.name.hasData())
686 {
687 FB_SIZE_T n = parameters.add(current);
688 previous = &parameters[n];
689 }
690
691 if (!previous)
692 badLine(streamName, "master parameter is missing before subconfig start '{'");
693
694 { // subconf scope
695 SubStream subStream(stream->getFileName());
696 int level = 1;
697 while (getLine(stream, inputLine, line))
698 {
699 switch(parseLine(streamName, inputLine, current))
700 {
701 case LINE_START_SUB:
702 fb_assert(level > 0);
703 level++;
704 subStream.putLine(inputLine, line);
705 continue;
706
707 case LINE_END_SUB:
708 level--;
709 if (level > 0)
710 {

Callers

nothing calls this directly

Calls 10

getLineFunction · 0.85
ConfigFileClass · 0.85
ToPathNameMethod · 0.80
getFileNameMethod · 0.45
setSortModeMethod · 0.45
isEmptyMethod · 0.45
addMethod · 0.45
hasDataMethod · 0.45
putLineMethod · 0.45
sortMethod · 0.45

Tested by

no test coverage detected