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