X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Floaderaction.h;h=972757bd399fbc953cd65100567eca343cf99d7b;hb=a582163d380833b1370ba067a1fd0ad5c2984723;hp=2a2a8fc0ef61dfb41624a3451ba8f4606219bf1a;hpb=11ed2b907c9b031b57c3d4fc5491fdc3460303c9;p=libs%2Fdatafile.git diff --git a/source/loaderaction.h b/source/loaderaction.h index 2a2a8fc..972757b 100644 --- a/source/loaderaction.h +++ b/source/loaderaction.h @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspdatafile -Copyright © 2006-2008 Mikko Rasa, Mikkosoft Productions +Copyright © 2008, 2010 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ @@ -86,7 +86,7 @@ public: { std::vector values; values.reserve(st.args.size()); - for(ValueArray::const_iterator i=st.args.begin(); i!=st.args.end(); ++i) + for(Statement::Arguments::const_iterator i=st.args.begin(); i!=st.args.end(); ++i) values.push_back(i->get()); (dynamic_cast(l).*func)(values); } @@ -95,6 +95,25 @@ private: }; +/** +Loads a statement by calling a function with the statement itself as argument. +*/ +template +class LoaderFunc1: public LoaderAction +{ +public: + typedef void (L::*FuncType)(const Statement &); + + LoaderFunc1(FuncType f): func(f) { } + void execute(Loader &l, const Statement &st) const + { + (dynamic_cast(l).*func)(st); + } +private: + FuncType func; +}; + + template class LoaderFunc2: public LoaderAction {