X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Floader.h;h=3c4785c493017eadeef3f2c20bb70e05b4bb9cf8;hb=5c98c1f499413c41fd46ddf71a46b481338d7d6b;hp=6f7e61464db509bf50e5c62fe26d851018f5d342;hpb=3eb3c5cce35d3d6193afadecc3707f9c2448f370;p=libs%2Fdatafile.git diff --git a/source/loader.h b/source/loader.h index 6f7e614..3c4785c 100644 --- a/source/loader.h +++ b/source/loader.h @@ -1,15 +1,7 @@ -/* $Id$ - -This file is part of libmspdatafile -Copyright © 2006-2008, 2010 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef MSP_DATAFILE_LOADER_H_ #define MSP_DATAFILE_LOADER_H_ #include -#include #include #include "except.h" #include "loaderaction.h" @@ -56,14 +48,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); @@ -197,10 +194,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); } @@ -208,10 +204,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); }