epoc32/include/stdapis/boost/numeric/conversion/bounds.hpp
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
     5 
     5 
     6 //  See library home page at http://www.boost.org/libs/numeric/conversion
     6 //  See library home page at http://www.boost.org/libs/numeric/conversion
     7 //
     7 //
     8 // Contact the author at: fernando_cacciola@hotmail.com
     8 // Contact the author at: fernando_cacciola@hotmail.com
     9 // 
     9 // 
    10 #ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
    10 #ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
    11 #define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
    11 #define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
    12 
    12 
    13 #include "boost/limits.hpp"
    13 #include "boost/numeric/conversion/detail/bounds.hpp"
    14 #include "boost/config.hpp"
       
    15 #include "boost/mpl/if.hpp"
       
    16 
    14 
    17 namespace boost { namespace numeric { namespace boundsdetail
    15 namespace boost { namespace numeric 
    18 {
    16 {
    19   template<class N>
       
    20   class Integral
       
    21   {
       
    22       typedef std::numeric_limits<N> limits ;
       
    23 
    17 
    24     public :
    18 template<class N>
    25     
    19 struct bounds : boundsdetail::get_impl<N>::type
    26       static N lowest  () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
    20 {} ;
    27       static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
       
    28       static N smallest() { return static_cast<N>(1); }
       
    29   } ;
       
    30 
    21 
    31   template<class N>
    22 } } // namespace boost::numeric
    32   class Float
       
    33   {
       
    34       typedef std::numeric_limits<N> limits ;
       
    35 
       
    36     public :
       
    37     
       
    38       static N lowest  () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
       
    39       static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
       
    40       static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
       
    41   } ;
       
    42 
       
    43   template<class N>
       
    44   struct get_impl
       
    45   {
       
    46     typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
       
    47 
       
    48     typedef Integral<N> impl_int   ;
       
    49     typedef Float   <N> impl_float ;
       
    50 
       
    51     typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
       
    52   } ;
       
    53 
       
    54 } } } // namespace boost::numeric::boundsdetail.
       
    55 
    23 
    56 #endif
    24 #endif
    57 //
       
    58 ///////////////////////////////////////////////////////////////////////////////////////////////