00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SGE_CON_VAR_IMPL_HPP_INCLUDED
00022 #define SGE_CON_VAR_IMPL_HPP_INCLUDED
00023
00024 #include "var.hpp"
00025 #include "exception.hpp"
00026 #include "../text.hpp"
00027 #include <boost/lexical_cast.hpp>
00028
00029 template<typename T>
00030 void sge::con::var<T>::set(const string &s)
00031 {
00032 try
00033 {
00034 t = boost::lexical_cast<T>(s);
00035 }
00036 catch (const boost::bad_lexical_cast &c)
00037 {
00038 throw exception(
00039 SGE_TEXT("couldn't parse variable \"")
00040 + name()
00041 + SGE_TEXT("\""));
00042 }
00043 }
00044
00045 template<typename T>
00046 sge::string const
00047 sge::con::var<T>::get() const
00048 {
00049 return boost::lexical_cast<string>(t);
00050 }
00051
00052 template<typename T>
00053 const T &sge::con::var<T>::value() const
00054 {
00055 return t;
00056 }
00057
00058 template<typename T>
00059 void sge::con::var<T>::value(const T &_t)
00060 {
00061 t = _t;
00062 }
00063
00064 template<typename T>
00065 sge::con::var<T>::var(
00066 const string &name,
00067 const value_type &t)
00068 : var_base(name),
00069 t(t)
00070 {
00071 late_construct();
00072 }
00073
00074 #endif