+
+/**
+Loads a statement by calling a function that takes an array of values.
+*/
+template<typename L, typename A0>
+class LoaderFunc1<L, const std::vector<A0> &>: public LoaderAction
+{
+public:
+ 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::const_iterator i=st.args.begin(); i!=st.args.end(); ++i)
+ values.push_back(i->get<A0>());
+ (dynamic_cast<L &>(l).*func)(values);
+ }
+private:
+ FuncType func;
+};
+
+