]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/parser.cpp
Move all exception classes to a common header
[libs/datafile.git] / source / parser.cpp
index d298eca44765ca134ae8b65f191c31296830ca92..5972e2d98f832d312afa4373bfe66d4204d10f8f 100644 (file)
@@ -1,6 +1,6 @@
 #include <msp/strings/format.h>
 #include "binaryparser.h"
-#include "dataerror.h"
+#include "except.h"
 #include "parser.h"
 #include "statement.h"
 #include "textparser.h"
@@ -86,5 +86,26 @@ void Parser::process_control_statement(const Statement &st)
                mode->process_control_statement(st);
 }
 
+const StatementKey *Parser::peek(unsigned level)
+{
+       while(good)
+       {
+               const StatementKey *key = mode->peek(level);
+               if(key && !key->keyword.compare(0, 2, "__"))
+                       process_control_statement(mode->parse());
+               else
+                       return key;
+       }
+
+       return 0;
+}
+
+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