epoc32/include/stdapis/boost/numeric/conversion/bounds.hpp
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
equal deleted inserted replaced
2:2fe1408b6811 3:e1b950c65cb4
       
     1 //  © Copyright Fernando Luis Cacciola Carballal 2000-2004
       
     2 //  Use, modification, and distribution is subject to the Boost Software
       
     3 //  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
       
     4 //  http://www.boost.org/LICENSE_1_0.txt)
       
     5 
       
     6 //  See library home page at http://www.boost.org/libs/numeric/conversion
       
     7 //
       
     8 // Contact the author at: fernando_cacciola@hotmail.com
       
     9 // 
       
    10 #ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
       
    11 #define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
       
    12 
       
    13 #include "boost/limits.hpp"
       
    14 #include "boost/config.hpp"
       
    15 #include "boost/mpl/if.hpp"
       
    16 
       
    17 namespace boost { namespace numeric { namespace boundsdetail
       
    18 {
       
    19   template<class N>
       
    20   class Integral
       
    21   {
       
    22       typedef std::numeric_limits<N> limits ;
       
    23 
       
    24     public :
       
    25     
       
    26       static N lowest  () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
       
    27       static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
       
    28       static N smallest() { return static_cast<N>(1); }
       
    29   } ;
       
    30 
       
    31   template<class N>
       
    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 
       
    56 #endif
       
    57 //
       
    58 ///////////////////////////////////////////////////////////////////////////////////////////////