]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/loader.h
Switch template parameters of load_sub around to allow automatic deduction
[libs/datafile.git] / source / loader.h
index 70fb7c2ba762fa2b2a4677c53363ffe7426d3009..7d5d8d9690dfd1c9460739e7a22332a26e6d5e42 100644 (file)
@@ -81,17 +81,17 @@ private:
 Loads a statement by calling a function that takes an array of values.
 */
 template<typename L, typename A0>
-class LoaderFunc1<L, const std::list<A0> &>: public LoaderAction
+class LoaderFunc1<L, const std::vector<A0> &>: public LoaderAction
 {
 public:
-       typedef void (L::*FuncType)(const std::list<A0> &);
+       typedef void (L::*FuncType)(const std::vector<A0> &);
 
        LoaderFunc1(FuncType f): func(f) { }
        void execute(Loader &l, const Statement &st) const
        {
                std::vector<A0> values;
                values.reserve(st.args.size());
-               for(ValueArray::iterator i=st.args.begin(); i!=st.args.end(); ++i)
+               for(ValueArray::const_iterator i=st.args.begin(); i!=st.args.end(); ++i)
                        values.push_back(i->get<A0>());
                (dynamic_cast<L &>(l).*func)(values);
        }
@@ -251,12 +251,12 @@ protected:
        */
        template<typename S>
        void load_sub(S &s)
-       { load_sub<S, typename S::Loader>(s); }
+       { load_sub<typename S::Loader, S>(s); }
 
        /**
        Loads a sub-object with a custom Loader class.
        */
-       template<typename S, typename L>
+       template<typename L, typename S>
        void load_sub(S &s)
        {
                if(!cur_st)
@@ -269,7 +269,7 @@ protected:
        Loads a sub-object with a custom Loader class that takes one argument in
        addition to to object to be loaded.
        */
-       template<typename S, typename L, typename T>
+       template<typename L, typename S, typename T>
        void load_sub(S &s, T &p)
        {
                if(!cur_st)