X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Floader.h;h=221361694282228b3e3e1c9b3508505d5b327f9c;hb=eb0f6a0fc9ad34a54df2d9f22e4326c23ddb5bc6;hp=5c8726a179683c841e6439e57fd3cfa4772394e2;hpb=b34b46788d69853eabdbbd9e71ca82f2f5c09df8;p=libs%2Fdatafile.git diff --git a/source/loader.h b/source/loader.h index 5c8726a..2213616 100644 --- a/source/loader.h +++ b/source/loader.h @@ -9,7 +9,6 @@ Distributed under the LGPL #define MSP_DATAFILE_LOADER_H_ #include -#include #include #include "except.h" #include "loaderaction.h" @@ -56,14 +55,19 @@ private: typedef std::map ActionMap; - ActionMap actions; + ActionMap actions; const Statement *cur_st; - + bool sub_loaded; protected: - Loader(): cur_st(0) { } + bool allow_pointer_reload; + bool check_sub_loads; + + Loader(); public: virtual ~Loader(); + bool is_pointer_reload_allowed() const { return allow_pointer_reload; } + /** Loads statements from a parser. */ void load(Parser &p); @@ -156,8 +160,7 @@ protected: /** -Provides the basic functionality of an object loader. Deriving from this -allows loading values directly into member variables of the objects. +Deprecated. See ObjectLoader in objectloader.h. */ template class BasicLoader: public Loader @@ -175,8 +178,7 @@ public: /** -Provides functionality for loading objects with a Collection. Deriving from -this allows loading pointers to objects in the collection automatically. +Deprecated. See CollectionObjectLoader in objectloader.h. */ template class BasicLoader2: public BasicLoader @@ -199,10 +201,9 @@ Loads an object from a file. The object must have a public Loader class. template void load(T &obj, const std::string &fn) { - IO::File in(fn); - IO::Buffered buf(in); + IO::BufferedFile in(fn); - Parser parser(buf, fn); + Parser parser(in, fn); typename T::Loader loader(obj); loader.load(parser); } @@ -210,10 +211,9 @@ void load(T &obj, const std::string &fn) template void load(T &obj, const std::string &fn, U &arg) { - IO::File in(fn); - IO::Buffered buf(in); + IO::BufferedFile in(fn); - Parser parser(buf, fn); + Parser parser(in, fn); typename T::Loader loader(obj, arg); loader.load(parser); }