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);
}
*/
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)
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)