epoc32/include/stdapis/boost/numeric/conversion/detail/bounds.hpp
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     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 ///////////////////////////////////////////////////////////////////////////////////////////////