diff options
Diffstat (limited to 'dep/acelite/ace/Numeric_Limits.h')
-rw-r--r-- | dep/acelite/ace/Numeric_Limits.h | 252 |
1 files changed, 0 insertions, 252 deletions
diff --git a/dep/acelite/ace/Numeric_Limits.h b/dep/acelite/ace/Numeric_Limits.h deleted file mode 100644 index c8ab7c2ff7b..00000000000 --- a/dep/acelite/ace/Numeric_Limits.h +++ /dev/null @@ -1,252 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Numeric_Limits.h - * - * $Id: Numeric_Limits.h 95761 2012-05-15 18:23:04Z johnnyw $ - * - * Traits containing basic integer limits. Useful for template-based - * code on platforms that lack @c std::numeric_limits<>. - * - * @note These traits are not meant to be a replacement for - * @c std::numeric_limits<>. Rather they are a crutch until all - * ACE-supported platforms also support - * @c std::numeric_limits<>. - * - * @internal Only meant for internal use by ACE. - * @deprecated This header will be removed once all platforms - * supported by ACE support @c std::numeric_limits<>. - * - * @author Ossama Othman <ossama_othman at symantec dot com> - */ -//============================================================================= - -#ifndef ACE_NUMERIC_LIMITS_H -#define ACE_NUMERIC_LIMITS_H - -#include /**/ "ace/pre.h" - -#include /**/ "ace/ACE_export.h" - -# if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -# endif /* ACE_LACKS_PRAGMA_ONCE */ - -#ifdef ACE_LACKS_NUMERIC_LIMITS -# include "ace/Basic_Types.h" -#else - -# if defined __MINGW32__ -// Windows defines min/max macros that interfere with the -// numeric_limits::min/max() traits. Undefine those macros before -// including <limits>. -// -// Ideally, we could prevent those macros from being defined by -// defining the Windows-specific NOMINMAX symbol before any Windows -// headers are included, preferably on the command line. However, -// that would probably break some applications. -// -// @@ Why isn't this a problem with MSVC++ and Borland builds? -# undef min -# undef max -# endif /* __MINGW32__ */ - -# include <limits> -#endif /* ACE_LACKS_NUMERIC_LIMITS */ - -// Address global namespace pollution potentially incurred by some -// platforms. -#undef min -#undef max - -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -#ifdef ACE_LACKS_NUMERIC_LIMITS - -template <typename T> struct ACE_Numeric_Limits; - - -// ------------------------------------------ -// Special cases. -template<> -struct ACE_Export ACE_Numeric_Limits<char> -{ - static char min (void) { return CHAR_MIN; } - static char max (void) { return CHAR_MAX; } -}; - -// ------------------------------------------ -// Signed integers. - -template<> -struct ACE_Export ACE_Numeric_Limits<signed char> -{ - static signed char min (void) { return SCHAR_MIN; } - static signed char max (void) { return SCHAR_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<signed short> -{ - static signed short min (void) { return SHRT_MIN; } - static signed short max (void) { return SHRT_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<signed int> -{ - static signed int min (void) { return INT_MIN; } - static signed int max (void) { return INT_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<signed long> -{ - static signed long min (void) { return LONG_MIN; } - static signed long max (void) { return LONG_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<signed long long> -{ -#if defined (LLONG_MIN) -# define ACE_LLONG_MIN LLONG_MIN -#elif defined (LONG_LONG_MIN) -# define ACE_LLONG_MIN LONG_LONG_MIN -#elif defined (LONGLONG_MIN) -# define ACE_LLONG_MIN LONGLONG_MIN -#else -# error Unable to determine minimum signed long long value. -#endif /* LLONG_MIN */ - -#if defined (LLONG_MAX) -# define ACE_LLONG_MAX LLONG_MAX -#elif defined (LONG_LONG_MAX) -# define ACE_LLONG_MAX LONG_LONG_MAX -#elif defined (LONGLONG_MAX) -# define ACE_LLONG_MAX LONGLONG_MAX -#else -# error Unable to determine maximum signed long long value. -#endif /* LLONG_MAX */ - - static signed long long min (void) { return ACE_LLONG_MIN; } - static signed long long max (void) { return ACE_LLONG_MAX; } -}; - -// ------------------------------------------ -// Unsigned integers -template<> -struct ACE_Export ACE_Numeric_Limits<unsigned char> -{ - static unsigned char min (void) { return 0; } - static unsigned char max (void) { return UCHAR_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<unsigned short> -{ - static unsigned short min (void) { return 0; } - static unsigned short max (void) { return USHRT_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<unsigned int> -{ - static unsigned int min (void) { return 0; } - static unsigned int max (void) { return UINT_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<unsigned long> -{ - static unsigned long min (void) { return 0; } - static unsigned long max (void) { return ULONG_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<unsigned long long> -{ - static unsigned long long min (void) { return 0; } - static unsigned long long max (void) - { -# if defined (ULLONG_MAX) - return ULLONG_MAX; -# elif defined (ULONGLONG_MAX) - return ULONGLONG_MAX; -# else -# error Unable to determine maximum unsigned long long value. -# endif /* ULLONG_MAX */ - } -}; - -// ------------------------------------------ -// Floating point types - -template<> -struct ACE_Export ACE_Numeric_Limits<float> -{ - static float min (void) { return FLT_MIN; } - static float max (void) { return FLT_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<double> -{ - static double min (void) { return DBL_MIN; } - static double max (void) { return DBL_MAX; } -}; - -template<> -struct ACE_Export ACE_Numeric_Limits<long double> -{ - static long double min (void) { return LDBL_MIN; } - static long double max (void) { return LDBL_MAX; } -}; - -#else - -// std::numeric_limits<> has all of the necessary specializations. -// Just wrap it. - -template <typename T> -struct ACE_Numeric_Limits -{ - static T min (void) { return std::numeric_limits<T>::min (); } - static T max (void) { return std::numeric_limits<T>::max (); } -}; - -# if (defined (ACE_WIN64) && defined (_MSC_VER) && _MSC_VER <= 1310) \ - || defined (ACE_LACKS_NUMERIC_LIMITS_64_BIT_TYPES) -// The Microsoft Platform SDK does not provide std::numeric_limits<> -// specializations for 64 bit integers so we need to explicitly provide -// ACE_Numeric_Limits<> specializations to compensate for this -// deficiency. -// -// Unfortunately there is no way to tell if the platform SDK is being -// used so we specialize for the ACE_WIN64 + MSVC++ 7.1 case, which is -// the configuration that exhibits this problem. It also happens to -// be a fairly isolated configuration since 64-bit support in MSVC++ -// 7.1 was not very good to begin with. -template<> -struct ACE_Numeric_Limits<LONGLONG> -{ - static LONGLONG min (void) { return _I64_MIN; } - static LONGLONG max (void) { return _I64_MAX; } -}; - -template<> -struct ACE_Numeric_Limits<ULONGLONG> -{ - static ULONGLONG min (void) { return 0; } - static ULONGLONG max (void) { return _UI64_MAX; } -}; -# endif /* ACE_WIN64 && _MSC_VER <= 1310 */ - -#endif /* ACE_LACKS_NUMERIC_LIMITS */ - -ACE_END_VERSIONED_NAMESPACE_DECL - -#include /**/ "ace/post.h" - -#endif /* ACE_NUMERIC_LIMITS_H */ |