source: NonGTP/Boost/boost/numeric/conversion/converter.hpp @ 857

Revision 857, 2.3 KB checked in by igarcia, 19 years ago (diff)
Line 
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
18namespace boost { namespace numeric
19{
20
21template<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        >
29struct 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
46template<class S,
47         class OverflowHandler  = def_overflow_handler,
48         class Float2IntRounder = Trunc<S>  ,
49         class UserRangeChecker = UseInternalRangeChecker
50        >
51struct 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
Note: See TracBrowser for help on using the repository browser.