X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Floader.cpp;h=51e22edf7a8e47c4ea1b02a3b1077d14e34f1f6e;hb=HEAD;hp=98a0234961d2029d0b665450a314c120bf90e35f;hpb=256b44a5009467171af53316141277027bcc0ba4;p=libs%2Fdatafile.git diff --git a/source/loader.cpp b/source/loader.cpp index 98a0234..7e910b8 100644 --- a/source/loader.cpp +++ b/source/loader.cpp @@ -47,13 +47,6 @@ int signature_match(const string &st_sig, const string &act_sig) namespace Msp { namespace DataFile { -Loader::Loader(): - actions(0), - cur_st(0), - direct(false), - check_sub_loads(false) -{ } - void Loader::load(Parser &p) { if(!actions) @@ -72,6 +65,8 @@ void Loader::load(Parser &p) } } finish(); + for(Loader *l: aux_loaders) + l->finish(); } void Loader::load(const Statement &st) @@ -82,6 +77,8 @@ void Loader::load(const Statement &st) for(const Statement &s: st.sub) load_statement(s); finish(); + for(Loader *l: aux_loaders) + l->finish(); } void Loader::load_direct(Parser &p, unsigned l) @@ -150,6 +147,8 @@ void Loader::load_sub_with(Loader &ldr) { ldr.load_direct(*cur_parser, cur_level+1); ldr.finish(); + for(Loader *l: ldr.aux_loaders) + l->finish(); } else if(cur_st) { @@ -206,7 +205,7 @@ bool Loader::has_action(const StatementKey &key) const LoaderAction *Loader::find_action(const StatementKey &key) const { if(!actions) - return 0; + return nullptr; auto begin = actions->lower_bound(StatementKey(key.keyword, string())); auto end = actions->upper_bound(StatementKey(key.keyword, "~")); @@ -214,7 +213,7 @@ LoaderAction *Loader::find_action(const StatementKey &key) const if(begin==end) throw unknown_keyword(key.keyword); - LoaderAction *act = 0; + LoaderAction *act = nullptr; int match = 0; for(auto i=begin; i!=end; ++i) {