69 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | //  (c) Copyright Fernando Luis Cacciola Carballal 2000-2004 | ||
|  | //  Use, modification, and distribution is subject to the Boost Software | ||
|  | //  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | ||
|  | //  http://www.boost.org/LICENSE_1_0.txt) | ||
|  | 
 | ||
|  | //  See library home page at http://www.boost.org/libs/numeric/conversion | ||
|  | // | ||
|  | // Contact the author at: fernando_cacciola@hotmail.com | ||
|  | //  | ||
|  | #ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP | ||
|  | #define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP | ||
|  | 
 | ||
|  | #include "boost/numeric/conversion/conversion_traits.hpp" | ||
|  | #include "boost/numeric/conversion/converter_policies.hpp" | ||
|  | 
 | ||
|  | #include "boost/numeric/conversion/detail/converter.hpp" | ||
|  | 
 | ||
|  | namespace boost { namespace numeric  | ||
|  | { | ||
|  | 
 | ||
|  | template<class T, | ||
|  |          class S, | ||
|  |          class Traits           = conversion_traits<T,S>, | ||
|  |          class OverflowHandler  = def_overflow_handler, | ||
|  |          class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type>  , | ||
|  |          class RawConverter     = raw_converter<Traits>, | ||
|  |          class UserRangeChecker = UseInternalRangeChecker | ||
|  |         > | ||
|  | struct converter : convdetail::get_converter_impl<Traits, | ||
|  |                                                   OverflowHandler, | ||
|  |                                                   Float2IntRounder, | ||
|  |                                                   RawConverter, | ||
|  |                                                   UserRangeChecker | ||
|  |                                                  >::type | ||
|  | { | ||
|  |   typedef Traits traits ; | ||
|  | 
 | ||
|  |   typedef typename Traits::argument_type argument_type ; | ||
|  |   typedef typename Traits::result_type   result_type   ; | ||
|  | 
 | ||
|  |   result_type operator() ( argument_type s ) const { return this->convert(s) ; } | ||
|  | } ; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | template<class S, | ||
|  |          class OverflowHandler  = def_overflow_handler, | ||
|  |          class Float2IntRounder = Trunc<S>  , | ||
|  |          class UserRangeChecker = UseInternalRangeChecker | ||
|  |         > | ||
|  | struct make_converter_from | ||
|  | { | ||
|  |   template<class T, | ||
|  |            class Traits       = conversion_traits<T,S>, | ||
|  |            class RawConverter = raw_converter<Traits> | ||
|  |           >  | ||
|  |   struct to | ||
|  |   { | ||
|  |     typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ; | ||
|  |   } ; | ||
|  | 
 | ||
|  | } ; | ||
|  | 
 | ||
|  | } } // namespace boost::numeric | ||
|  | 
 | ||
|  | #endif | ||
|  | 
 | ||
|  | 
 |