X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbinaryparser.cpp;h=7d1591de77105264a3d59fc2506c4bd0c03a9739;hb=2d289d20a9a4aeac7774976e4213a7c72f1dc75b;hp=fd918758294fd6c1d66ac497af5d5674d629c691;hpb=9867e5fdf99d7d6c9d83846c11a1cee6a9919be1;p=libs%2Fdatafile.git diff --git a/source/binaryparser.cpp b/source/binaryparser.cpp index fd91875..7d1591d 100644 --- a/source/binaryparser.cpp +++ b/source/binaryparser.cpp @@ -27,16 +27,16 @@ BinaryParser::BinaryParser(Input &i, const string &s): first(true), float_precision(32) { - dict[-1] = DictEntry("__kwd", "iss"); - dict[-2] = DictEntry("__str", "is"); - dict[-3] = DictEntry("__flt", "i"); + dict[-1] = StatementKey("__kwd", "iss"); + dict[-2] = StatementKey("__str", "is"); + dict[-3] = StatementKey("__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(); @@ -50,7 +50,7 @@ Statement BinaryParser::parse() if(!valid_signatures[j]) throw bad_definition("__kwd"); - dict[id] = DictEntry(kw, args); + dict[id] = StatementKey(kw, args); } else if(st.keyword=="__str") { @@ -64,10 +64,13 @@ Statement BinaryParser::parse() float_precision = st.args[0].get(); else return st; + + if(raw) + return st; } } -Statement BinaryParser::parse_statement() +Statement BinaryParser::parse_statement(bool raw) { while(first && in.peek()=='\n') in.get(); @@ -77,15 +80,15 @@ Statement BinaryParser::parse_statement() if(!in) return Statement(); - const DictEntry &de = get_item(dict, id); + const StatementKey &key = get_item(dict, id); Statement result; - result.keyword = de.keyword; + result.keyword = key.keyword; result.source = src; - for(unsigned j = 0; j