]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/parser.cpp
Add a flag to return also internal statements
[libs/datafile.git] / source / parser.cpp
index fce12e245b3f6ab011e4ca45851b0086847a4e5f..3957cf343642b54f2f5b6123be3e907bc200436e 100644 (file)
@@ -23,7 +23,7 @@ Parser::~Parser()
        delete mode;
 }
 
-Statement Parser::parse()
+Statement Parser::parse(bool raw)
 {
        if(!good)
                throw logic_error("Parser::parse() !good");
@@ -32,7 +32,7 @@ Statement Parser::parse()
        {
                while(1)
                {
-                       Statement st = mode->parse();
+                       Statement st = mode->parse(raw);
                        if(st.keyword=="__bin")
                        {
                                delete mode;
@@ -56,10 +56,13 @@ Statement Parser::parse()
                        else if(st.keyword=="__end")
                        {
                                good = false;
-                               return Statement();
+                               return raw ? st : Statement();
                        }
                        else
                                return st;
+
+                       if(raw)
+                               return st;
                }
        }
        catch(const exception &e)