348 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			348 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //
 | |
| //! Copyright (c) 2011-2012
 | |
| //! Brandon Kohn
 | |
| //
 | |
| //  Distributed under 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)
 | |
| //
 | |
| namespace boost { namespace numeric {
 | |
|     
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             char
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             char
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             signed char
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             signed char
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned char
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned char
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             short
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             short
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned short
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned short
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             int
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             int
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned int
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned int
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             long
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             long
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned long
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             unsigned long
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             float
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             float
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             double
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             double
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             long double
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             long double
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             boost::long_long_type
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             boost::long_long_type
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             boost::ulong_long_type
 | |
|           , boost::long_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::long_long_type> rounding_policy;
 | |
|     }; 
 | |
|     
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             boost::ulong_long_type
 | |
|           , boost::ulong_long_type
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<boost::ulong_long_type> rounding_policy;
 | |
|     }; 
 | |
| }}
 | 
