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