]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 |