X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Floader.h;h=dcbbd5dcda202bcd1e1af4f6da7c9f52df2a0f20;hp=4ea7994e757f76476dda000f20c67fa44e21fee9;hb=d248c63a252b0efcbcd9ef11cf7f8e22e594403e;hpb=e4beb0453a1cfe200fc97607afab94c3ddee1c65 diff --git a/source/loader.h b/source/loader.h index 4ea7994..dcbbd5d 100644 --- a/source/loader.h +++ b/source/loader.h @@ -3,7 +3,6 @@ #include #include -#include "except.h" #include "loaderaction.h" #include "parser.h" #include "statement.h" @@ -51,6 +50,7 @@ private: ActionMap actions; const Statement *cur_st; bool sub_loaded; + std::list aux_loaders; protected: bool check_sub_loads; @@ -132,18 +132,18 @@ protected: private: void add(const std::string &, LoaderAction *); +protected: + void add_auxiliary_loader(Loader &); + +private: + bool has_action(const ActionKey &) const; LoaderAction *find_action(const ActionKey &) const; protected: /** Returns the source of the statement being processed. This can be used to implement relative paths in include-like statements. Note that the source may not necessarily be a file. */ - const std::string &get_source() const - { - if(!cur_st) - throw InvalidState("get_source called without current statement"); - return cur_st->source; - } + const std::string &get_source() const; virtual void finish() { } };