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