PARP Research Group | Universidad de Murcia |
src/qvmath/qvfunction.hGo to the documentation of this file.00001 /* 00002 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012. PARP Research Group. 00003 * <http://perception.inf.um.es> 00004 * University of Murcia, Spain. 00005 * 00006 * This file is part of the QVision library. 00007 * 00008 * QVision is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU Lesser General Public License as 00010 * published by the Free Software Foundation, version 3 of the License. 00011 * 00012 * QVision is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with QVision. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00024 00025 #ifndef QVFUNCTION_H 00026 #define QVFUNCTION_H 00027 00081 #include <QList> 00082 template <typename Input, typename Output> class QVFunction 00083 { 00084 public: 00085 QVFunction() { } 00086 virtual ~QVFunction() { } 00087 00094 virtual Output evaluate(const Input &input) = 0; 00095 00102 Output operator()(const Input &input) { return evaluate(input); } 00103 00104 00111 QList<Output> operator()(const QList<Input> &input) { return map(input); } 00112 00121 QList<Output> map(const QList<Input> &inputs) 00122 { 00123 QList<Output> result; 00124 foreach(Input input, inputs) 00125 result.append(evaluate(input)); 00126 00127 return result; 00128 } 00129 }; 00130 #endif |