]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/loader.h
Allow overloading keywords with different signatures
[libs/datafile.git] / source / loader.h
index 57481cff28d36fca44b19db0c91784e7ecc54573..5c8726a179683c841e6439e57fd3cfa4772394e2 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,7 +44,17 @@ See also classes BasicLoader and BasicLoader2.
 class Loader
 {
 private:
-       typedef std::map<std::string, LoaderAction *> ActionMap;
+       struct ActionKey
+       {
+               std::string keyword;
+               std::string signature;
+
+               ActionKey(const std::string &, const std::string &);
+
+               bool operator<(const ActionKey &) const;
+       };
+
+       typedef std::map<ActionKey, LoaderAction *> ActionMap;
 
        ActionMap       actions;
        const Statement *cur_st;
@@ -128,6 +138,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