Alida-C++ 0.5
|
00001 /* 00002 * This file is part of Alida-C++ library for 00003 * 00004 * Automatic Logging of Process Information in Data Analysis. 00005 * 00006 * Copyright (C) 2012 - @YEAR@ 00007 * 00008 * This program is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU General Public License as published by 00010 * the Free Software Foundation, either version 3 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * This program is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU General Public License 00019 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00020 * 00021 * Fore more information on Alida, visit 00022 * 00023 * http://www.informatik.uni-halle.de/alida/ 00024 * 00025 */ 00026 00027 /* 00028 * Most recent change(s): 00029 * 00030 * $Rev: 65 $ 00031 * $Date: 2012-03-07 10:26:19 +0100 (Mi, 07 Mrz 2012) $ 00032 * $Author: moeller $ 00033 * 00034 */ 00035 00036 #ifndef OPERATOR_H_INCLUDED 00037 #define OPERATOR_H_INCLUDED 00038 00039 #include <map> 00040 #include <string> 00041 #include <typeinfo> 00042 00043 #include "aldOpParameterDescriptor.h" 00044 00045 namespace Alida { 00046 00050 #define DEFINE_PARAMETER( TYPE, NAME, DIRECTION, REQUIRED, SUPPLEMENTAL, LABEL, EXPLANATION, DEFAULTVALUE ) \ 00051 this->parameters[#NAME] = \ 00052 new ALDOpParameterDescriptor( #NAME, typeid( new TYPE()).name(), #TYPE, \ 00053 DIRECTION, REQUIRED, SUPPLEMENTAL, LABEL, EXPLANATION, DEFAULTVALUE); 00054 00055 class ALDOperator 00056 { 00057 public: 00058 00059 virtual ~ALDOperator() {}; 00060 00061 std::map<std::string, ALDOpParameterDescriptor*> parameters; 00062 00063 public: 00064 00065 void runOp(); 00066 00067 virtual void operate() = 0; 00068 00069 std::map<std::string, ALDOpParameterDescriptor*>& getParameters(); 00070 00071 void* getParameter(std::string); 00072 00073 void setParameter(std::string, void*); 00074 }; 00075 00076 } 00077 00078 #endif /* OPERATOR_H_INCLUDED */