epoc32/include/stdapis/boost/numeric/conversion/converter.hpp
branchSymbian3
changeset 4 837f303aceeb
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
       
     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_CONVERTER_FLC_12NOV2002_HPP
       
    11 #define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
       
    12 
       
    13 #include "boost/numeric/conversion/conversion_traits.hpp"
       
    14 #include "boost/numeric/conversion/converter_policies.hpp"
       
    15 
       
    16 #include "boost/numeric/conversion/detail/converter.hpp"
       
    17 
       
    18 namespace boost { namespace numeric 
       
    19 {
       
    20 
       
    21 template<class T,
       
    22          class S,
       
    23          class Traits           = conversion_traits<T,S>,
       
    24          class OverflowHandler  = def_overflow_handler,
       
    25          class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type>  ,
       
    26          class RawConverter     = raw_converter<Traits>,
       
    27          class UserRangeChecker = UseInternalRangeChecker
       
    28         >
       
    29 struct converter : convdetail::get_converter_impl<Traits,
       
    30                                                   OverflowHandler,
       
    31                                                   Float2IntRounder,
       
    32                                                   RawConverter,
       
    33                                                   UserRangeChecker
       
    34                                                  >::type
       
    35 {
       
    36   typedef Traits traits ;
       
    37 
       
    38   typedef typename Traits::argument_type argument_type ;
       
    39   typedef typename Traits::result_type   result_type   ;
       
    40 
       
    41   result_type operator() ( argument_type s ) const { return this->convert(s) ; }
       
    42 } ;
       
    43 
       
    44 
       
    45 
       
    46 template<class S,
       
    47          class OverflowHandler  = def_overflow_handler,
       
    48          class Float2IntRounder = Trunc<S>  ,
       
    49          class UserRangeChecker = UseInternalRangeChecker
       
    50         >
       
    51 struct make_converter_from
       
    52 {
       
    53   template<class T,
       
    54            class Traits       = conversion_traits<T,S>,
       
    55            class RawConverter = raw_converter<Traits>
       
    56           > 
       
    57   struct to
       
    58   {
       
    59     typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
       
    60   } ;
       
    61 
       
    62 } ;
       
    63 
       
    64 } } // namespace boost::numeric
       
    65 
       
    66 #endif
       
    67 
       
    68