X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Floader.cpp;h=655514e5057c57a3c062317241abeeff5f9a08bb;hp=6b0557fc0b568f7a62eeeda60547697d137232b7;hb=215e719d0ef85f748898660d15d01e77ac551de9;hpb=a582163d380833b1370ba067a1fd0ad5c2984723 diff --git a/source/loader.cpp b/source/loader.cpp index 6b0557f..655514e 100644 --- a/source/loader.cpp +++ b/source/loader.cpp @@ -12,11 +12,10 @@ using namespace std; namespace Msp { namespace DataFile { -void Loader::load(const Statement &st) +Loader::~Loader() { - for(list::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i) - load_statement(*i); - finish(); + for(ActionMap::iterator i = actions.begin(); i!=actions.end(); ++i) + delete i->second; } void Loader::load(Parser &p) @@ -30,30 +29,11 @@ void Loader::load(Parser &p) finish(); } -Loader::~Loader() -{ - for(ActionMap::iterator i = actions.begin(); i!=actions.end(); ++i) - delete i->second; -} - -void Loader::load_sub_with(Loader &ldr) -{ - if(!cur_st) - throw InvalidState("load_sub called without current statement"); - - ldr.load(*cur_st); -} - -void Loader::add(const string &k, LoaderAction *a) +void Loader::load(const Statement &st) { - ActionMap::iterator i = actions.find(k); - if(i!=actions.end()) - { - delete i->second; - i->second = a; - } - else - actions[k] = a; + for(list::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i) + load_statement(*i); + finish(); } void Loader::load_statement(const Statement &st) @@ -78,5 +58,25 @@ void Loader::load_statement(const Statement &st) cur_st = 0; } +void Loader::load_sub_with(Loader &ldr) +{ + if(!cur_st) + throw InvalidState("load_sub called without current statement"); + + ldr.load(*cur_st); +} + +void Loader::add(const string &k, LoaderAction *a) +{ + ActionMap::iterator i = actions.find(k); + if(i!=actions.end()) + { + delete i->second; + i->second = a; + } + else + actions[k] = a; +} + } // namespace DataFile } // namespace Msp