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