HyperspaceExplorer 0.7.1
|
00001 /* 00002 Hyperspace Explorer - visualizing higher-dimensional geometry 00003 Copyright (C) 2010 Lene Preuss <lene.preuss@gmail.com> 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License along 00016 with this program; if not, write to the Free Software Foundation, Inc., 00017 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00018 00019 */ 00020 00021 #ifndef FUNCTIONPARAMETERFACTORY_H 00022 #define FUNCTIONPARAMETERFACTORY_H 00023 00024 #include "FunctionParameter.h" 00025 00026 #include "SingletonHolder.h" 00027 00029 00031 class FunctionParameterFactory { 00032 00033 public: 00034 00036 00038 template <typename T> 00039 FunctionParameter::parameter_ptr_type createParameterWithValue( 00040 const std::string &name, const T &value, 00041 const std::string &description = "") { 00042 FunctionParameter::parameter_ptr_type tmp(new FunctionParameter(name, description)); 00043 tmp->setValue( 00044 FunctionParameter::value_ptr_type(new FunctionParameterValue<T>(value))); 00045 00046 return tmp; 00047 } 00048 00050 00052 template <typename T> 00053 FunctionParameter::parameter_ptr_type createParameterWithDefault( 00054 const std::string &name, const T &defaultValue, 00055 const std::string &description = "") { 00056 FunctionParameter::parameter_ptr_type tmp = createParameterWithValue(name, defaultValue, description); 00057 tmp->setDefaultValue( 00058 FunctionParameter::value_ptr_type(new FunctionParameterValue<T>(defaultValue))); 00059 00060 return tmp; 00061 } 00062 }; 00063 00065 00067 typedef Loki::SingletonHolder<FunctionParameterFactory> TheFunctionParameterFactory; 00068 00069 #endif // FUNCTIONPARAMETERFACTORY_H