X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fparser.cpp;h=ade1dd98e40904412e842a91666b6670e6a124aa;hb=4371289ed39d8135d407bc7bbbfbedea0cfd6dde;hp=82ac0069b95d4f22e3d0de1ab0c0b66b04c76423;hpb=27630d44298cb67e075c166f4421288cc8ca117e;p=libs%2Fdatafile.git diff --git a/source/parser.cpp b/source/parser.cpp index 82ac006..ade1dd9 100644 --- a/source/parser.cpp +++ b/source/parser.cpp @@ -4,8 +4,7 @@ This file is part of libmspdatafile Copyright © 2006 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ -#include -#include +#include #include "binaryparser.h" #include "parser.h" #include "statement.h" @@ -16,8 +15,9 @@ using namespace std; namespace Msp { namespace DataFile { -Parser::Parser(istream &i, const string &s): +Parser::Parser(IO::Base &i, const string &s): in(i), + main_src(s), src(s), good(true), mode(new TextParser(in, src)) @@ -48,6 +48,14 @@ Statement Parser::parse() delete mode; mode=new TextParser(in, src); } + else if(st.keyword=="__src") + { + string s=st.args[0].get(); + if(s.empty()) + src=main_src; + else + src=format("%s[%s]", main_src, s); + } else return st; }