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
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
69