]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/loader.h
Remove pointer reload prevention feature; the purpose it was added for is now gone
[libs/datafile.git] / source / loader.h
index 6f7e61464db509bf50e5c62fe26d851018f5d342..4ea7994e757f76476dda000f20c67fa44e21fee9 100644 (file)
@@ -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 <map>
-#include <msp/io/buffered.h>
 #include <msp/io/file.h>
 #include "except.h"
 #include "loaderaction.h"
@@ -39,7 +31,7 @@ When loading has finished successfully, the virtual function finish() is
 called.  Any post-processing of the data should be placed here and not in the
 destructor.
 
-See also classes BasicLoader and BasicLoader2.
+See also classes ObjectLoader and CollectionObjectLoader in objectloader.h.
 */
 class Loader
 {
@@ -56,11 +48,13 @@ private:
 
        typedef std::map<ActionKey, LoaderAction *> ActionMap;
 
-       ActionMap       actions;
+       ActionMap actions;
        const Statement *cur_st;
-
+       bool sub_loaded;
 protected:
-       Loader(): cur_st(0) { }
+       bool check_sub_loads;
+
+       Loader();
 public:
        virtual ~Loader();
 
@@ -155,52 +149,15 @@ protected:
 };
 
 
-/**
-Deprecated.  See ObjectLoader in objectloader.h.
-*/
-template<typename O>
-class BasicLoader: public Loader
-{
-public:
-       typedef O Object;
-
-protected:
-       O &obj;
-
-public:
-       BasicLoader(O &o): obj(o) { }
-       O &get_object() const { return obj; }
-};
-
-
-/**
-Deprecated.  See CollectionObjectLoader in objectloader.h.
-*/
-template<typename O, typename C>
-class BasicLoader2: public BasicLoader<O>
-{
-public:
-       typedef C Collection;
-
-protected:
-       C &coll;
-
-public:
-       BasicLoader2(O &o, C &c): BasicLoader<O>(o), coll(c) { }
-       C &get_collection() const { return coll; }
-};
-
-
 /**
 Loads an object from a file.  The object must have a public Loader class.
 */
 template<typename T>
 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 +165,9 @@ void load(T &obj, const std::string &fn)
 template<typename T, typename U>
 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);
 }