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