|
@@ -40,42 +40,11 @@
|
|
|
namespace google {
|
|
|
namespace protobuf {
|
|
|
|
|
|
-// MSVC++ 2005 and older compilers think the header declaration was a
|
|
|
-// definition, and erroneously flag these as a duplicate definition.
|
|
|
-#if defined(COMPILER_MSVC) || __cpluscplus < 201103L
|
|
|
-
|
|
|
#define DEF_COMMON_LIMITS(Type)
|
|
|
#define DEF_UNSIGNED_INT_LIMITS(Type)
|
|
|
#define DEF_SIGNED_INT_LIMITS(Type)
|
|
|
#define DEF_PRECISION_LIMITS(Type)
|
|
|
|
|
|
-#else
|
|
|
-
|
|
|
-#define DEF_COMMON_LIMITS(Type) \
|
|
|
-const bool MathLimits<Type>::kIsSigned; \
|
|
|
-const bool MathLimits<Type>::kIsInteger; \
|
|
|
-const int MathLimits<Type>::kMin10Exp; \
|
|
|
-const int MathLimits<Type>::kMax10Exp;
|
|
|
-
|
|
|
-#define DEF_UNSIGNED_INT_LIMITS(Type) \
|
|
|
-DEF_COMMON_LIMITS(Type) \
|
|
|
-const Type MathLimits<Type>::kPosMin; \
|
|
|
-const Type MathLimits<Type>::kPosMax; \
|
|
|
-const Type MathLimits<Type>::kMin; \
|
|
|
-const Type MathLimits<Type>::kMax; \
|
|
|
-const Type MathLimits<Type>::kEpsilon; \
|
|
|
-const Type MathLimits<Type>::kStdError;
|
|
|
-
|
|
|
-#define DEF_SIGNED_INT_LIMITS(Type) \
|
|
|
-DEF_UNSIGNED_INT_LIMITS(Type) \
|
|
|
-const Type MathLimits<Type>::kNegMin; \
|
|
|
-const Type MathLimits<Type>::kNegMax;
|
|
|
-
|
|
|
-#define DEF_PRECISION_LIMITS(Type) \
|
|
|
-const int MathLimits<Type>::kPrecisionDigits;
|
|
|
-
|
|
|
-#endif // not COMPILER_MSVC
|
|
|
-
|
|
|
// http://en.wikipedia.org/wiki/Quadruple_precision_floating-point_format#Double-double_arithmetic
|
|
|
// With some compilers (gcc 4.6.x) on some platforms (powerpc64),
|
|
|
// "long double" is implemented as a pair of double: "double double" format.
|