#include "eleve/config.hpp"
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits.hpp>
#include <boost/date_time/gregorian/formatters.hpp>
#include "eleve/src/typing0.hpp"
Go to the source code of this file.
Namespaces | |
namespace | eepgwde |
namespace | eepgwde::detail |
namespace | eepgwde::detail::i0 |
Functions | |
template<typename U> | |
enable_if < boost::is_arithmetic< U >, U > ::type | eepgwde::detail::i0::null1 (dummy< 0 >=0) |
Any numeric types: use the system minimum. | |
template<typename U> | |
disable_if_c < boost::is_base_of < boost::any, U >::value||boost::is_arithmetic < U >::value||boost::is_arithmetic < typename U::value_type > ::value||boost::is_base_of < std::string, U >::value||!(boost::has_trivial_default_constructor < U >::value), U >::type | eepgwde::detail::i0::null1 (dummy< 1 >=1) |
template<typename U> | |
std::string | eepgwde::detail::i0::ys (typename enable_if< boost::is_base_of< boost::any, U >, U >::type, const boost::any &o, dummy< 0 >=0) throw (std::domain_error &) |
Double dispatch. | |
template<typename U> | |
std::string | eepgwde::detail::i0::ys (typename enable_if< boost::is_arithmetic< U >, U >::type, const boost::any &o, dummy< 0 >=0) throw (std::domain_error &) |
template<typename U> | |
std::string | eepgwde::detail::i0::ys (typename enable_if< boost::is_arithmetic< typename U::value_type >, U >::type, const boost::any &o, dummy< 0 >=0) throw (std::domain_error &) |
template<typename U> | |
std::string | eepgwde::detail::i0::ys (typename enable_if_c< boost::is_base_of< boost::gregorian::date, U >::value &&!(boost::is_same< boost::gregorian::date, U >::value), U >::type, const boost::any &o, dummy< 0 >=0) throw (std::domain_error &) |
template<typename U> | |
enable_if < boost::is_arithmetic < typename U::scaling_type > , dummy< 0 > >::type | eepgwde::detail::i0::scale0 (U &u) |
template<typename U> | |
U | eepgwde::detail::i0::xs (typename enable_if< boost::is_base_of< is_Numeric, U >, U >::type, const std::string &s, dummy< 0 >=1) throw (std::domain_error &) |
A visitor method - prototype for dummy<0> in typing1.hpp. | |
template<typename U> | |
U | eepgwde::detail::i0::xs (typename enable_if< boost::is_arithmetic< U >, U >::type, const std::string &s, dummy< 0 >=1) throw (std::domain_error &) |
A visitor method - prototype for dummy<0> in typing1.hpp. | |
template<typename U> | |
U | eepgwde::detail::i0::xs (typename enable_if< boost::is_base_of< std::string, U >, U >::type, const std::string &s, dummy< 0 >=1) throw (std::domain_error &) |
A visitor method - prototype for dummy<0> in typing1.hpp. | |
template<typename U> | |
U | eepgwde::detail::i0::xs (typename enable_if< boost::is_same< boost::any, U >, U >::type, const std::string &s, dummy< 0 >=1) throw (std::domain_error &) |
A visitor method - prototype for dummy<0> in typing1.hpp. | |
template<typename U> | |
U | eepgwde::detail::i0::xs (typename enable_if< boost::is_base_of< boost::gregorian::date, U >, U >::type, const std::string &s, dummy< 0 >=1) throw (std::domain_error &) |
A visitor method - prototype for dummy<0> in typing1.hpp. |
This is the difficult bit. See scalt5.cpp for how extra classes are added. You add a null1 function, a to string function ys and a from string function xs.
The definitions here should not get in your way. They should all be template specializations. If you do get issues, you can make your own copy of this header file and use that.
Then you would define your own null1, ys and xs methods. Then load typing1.hpp to define your versions of the methods.
Definition in file typing3.hpp.