X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Fparser.cpp;h=9ad70d8742884bfdfa40d5bebbc467b9e289afe7;hp=d298eca44765ca134ae8b65f191c31296830ca92;hb=3b78eeb8b92dc3524d6a0456b4daf0a0f3dbf813;hpb=a82776d980239e48d2b509d33b56e77a1ea44dda diff --git a/source/parser.cpp b/source/parser.cpp index d298eca..9ad70d8 100644 --- a/source/parser.cpp +++ b/source/parser.cpp @@ -86,5 +86,24 @@ void Parser::process_control_statement(const Statement &st) mode->process_control_statement(st); } +const StatementKey *Parser::peek(unsigned level) +{ + while(1) + { + const StatementKey *key = mode->peek(level); + if(key && !key->keyword.compare(0, 2, "__")) + process_control_statement(mode->parse()); + else + return key; + } +} + +bool Parser::parse_and_load(unsigned level, Loader &ldr, const LoaderAction &act) +{ + // Peek first to get any control statements processed + peek(level); + return mode->parse_and_load(level, ldr, act); +} + } // namespace DataFile } // namespace Msp