]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/loader.h
Add some optional (for now) extra checks for Loader
[libs/datafile.git] / source / loader.h
index 57481cff28d36fca44b19db0c91784e7ecc54573..126de575ba027fb0cd241ee4a8f5beb0654550b7 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspdatafile
-Copyright © 2006-2008  Mikko Rasa, Mikkosoft Productions
+Copyright © 2006-2008, 2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -44,16 +44,31 @@ See also classes BasicLoader and BasicLoader2.
 class Loader
 {
 private:
-       typedef std::map<std::string, LoaderAction *> ActionMap;
+       struct ActionKey
+       {
+               std::string keyword;
+               std::string signature;
 
-       ActionMap       actions;
-       const Statement *cur_st;
+               ActionKey(const std::string &, const std::string &);
+
+               bool operator<(const ActionKey &) const;
+       };
+
+       typedef std::map<ActionKey, LoaderAction *> ActionMap;
 
+       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);
 
@@ -128,6 +143,8 @@ protected:
 private:
        void add(const std::string &, LoaderAction *);
 
+       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
@@ -144,8 +161,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<typename O>
 class BasicLoader: public Loader
@@ -163,8 +179,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<typename O, typename C>
 class BasicLoader2: public BasicLoader<O>