00001 00011 /***************************************************************************** 00012 ** Ifdefs 00013 *****************************************************************************/ 00014 00015 #ifndef ECL_UTILITIES_PARAMETER_HPP_ 00016 #define ECL_UTILITIES_PARAMETER_HPP_ 00017 00018 /***************************************************************************** 00019 ** Namespaces 00020 *****************************************************************************/ 00021 00022 namespace ecl { 00023 00024 /***************************************************************************** 00025 ** Parameter 00026 *****************************************************************************/ 00056 template <typename T> class Parameter { 00057 public: 00058 explicit Parameter() : parameter() {}; 00063 Parameter(const T& value) : parameter(value){}; 00064 00065 virtual ~Parameter() {} 00066 00067 /****************************************** 00068 ** Operator = 00069 *******************************************/ 00078 void operator =(const T& value) { parameter = value; } 00087 operator const T&() const { return parameter; } 00088 00089 /****************************************** 00090 ** Operator () 00091 *******************************************/ 00099 const T& operator ()() const { return parameter; } 00107 void operator ()( const T& value ) { parameter = value; } 00108 00109 private: 00110 T parameter; 00111 }; 00112 00113 }; // Namespace ecl 00114 00115 #endif /*ECL_UTILITIES_PARAMETER_HPP_*/