]> git.donarmstrong.com Git - rsem.git/blob - boost/numeric/conversion/converter.hpp
Updated boost to v1.55.0
[rsem.git] / boost / numeric / conversion / converter.hpp
1 //  (c) 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