]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/binaryparser.cpp
Add a flag to return also internal statements
[libs/datafile.git] / source / binaryparser.cpp
index fd918758294fd6c1d66ac497af5d5674d629c691..796a592d3e84d05a70e2e8316abdcccbe543f3bf 100644 (file)
@@ -32,11 +32,11 @@ BinaryParser::BinaryParser(Input &i, const string &s):
        dict[-3] = DictEntry("__flt", "i");
 }
 
-Statement BinaryParser::parse()
+Statement BinaryParser::parse(bool raw)
 {
        while(1)
        {
-               Statement st = parse_statement();
+               Statement st = parse_statement(raw);
                if(st.keyword=="__kwd")
                {
                        int id = st.args[0].get<int>();
@@ -64,10 +64,13 @@ Statement BinaryParser::parse()
                        float_precision = st.args[0].get<unsigned>();
                else
                        return st;
+
+               if(raw)
+                       return st;
        }
 }
 
-Statement BinaryParser::parse_statement()
+Statement BinaryParser::parse_statement(bool raw)
 {
        while(first && in.peek()=='\n')
                in.get();
@@ -107,7 +110,7 @@ Statement BinaryParser::parse_statement()
 
        unsigned nsub = parse_int();
        for(unsigned j = 0; j<nsub; ++j)
-               result.sub.push_back(parse());
+               result.sub.push_back(parse(raw));
 
        result.valid = true;