|
24 | 24 | #include <limits.h>
|
25 | 25 | #include <stdexcept>
|
26 | 26 | #include <cstdint>
|
| 27 | +#include <limits> |
27 | 28 |
|
28 | 29 | /*
|
29 | 30 | * Types used by C++ codecs
|
@@ -77,37 +78,15 @@ namespace sbe {
|
77 | 78 | #else
|
78 | 79 | #define SBE_BOUNDS_CHECK_EXPECT(exp,c) (__builtin_expect(exp,c))
|
79 | 80 | #endif
|
80 |
| - |
81 |
| -#if defined(__GNUC__) |
82 |
| - #define SBE_NULLVALUE_INT8 (INT8_MIN) |
83 |
| - #define SBE_NULLVALUE_INT16 (INT16_MIN) |
84 |
| - #define SBE_NULLVALUE_INT32 (INT32_MIN) |
85 |
| - #define SBE_NULLVALUE_INT64 (INT64_MIN) |
86 |
| - #define SBE_NULLVALUE_UINT8 (UINT8_MAX) |
87 |
| - #define SBE_NULLVALUE_UINT16 (UINT16_MAX) |
88 |
| - #define SBE_NULLVALUE_UINT32 (UINT32_MAX) |
89 |
| - #define SBE_NULLVALUE_UINT64 (UINT64_MAX) |
90 |
| -#elif defined(_MSC_VER) |
91 |
| - // Visual C++ does not handle minimum integer values properly |
92 |
| - // See: http://msdn.microsoft.com/en-us/library/4kh09110.aspx |
93 |
| - #define SBE_NULLVALUE_INT8 (SCHAR_MIN) |
94 |
| - #define SBE_NULLVALUE_INT16 (SHRT_MIN) |
95 |
| - #define SBE_NULLVALUE_INT32 (LONG_MIN) |
96 |
| - #define SBE_NULLVALUE_INT64 (LLONG_MIN) |
97 |
| - #define SBE_NULLVALUE_UINT8 (UCHAR_MAX) |
98 |
| - #define SBE_NULLVALUE_UINT16 (USHRT_MAX) |
99 |
| - #define SBE_NULLVALUE_UINT32 (ULONG_MAX) |
100 |
| - #define SBE_NULLVALUE_UINT64 (ULLONG_MAX) |
101 |
| -#else |
102 |
| - #define SBE_NULLVALUE_INT8 (INT8_MIN) |
103 |
| - #define SBE_NULLVALUE_INT16 (INT16_MIN) |
104 |
| - #define SBE_NULLVALUE_INT32 (INT32_MIN) |
105 |
| - #define SBE_NULLVALUE_INT64 (INT64_MIN) |
106 |
| - #define SBE_NULLVALUE_UINT8 (UINT8_MAX) |
107 |
| - #define SBE_NULLVALUE_UINT16 (UINT16_MAX) |
108 |
| - #define SBE_NULLVALUE_UINT32 (UINT32_MAX) |
109 |
| - #define SBE_NULLVALUE_UINT64 (UINT64_MAX) |
110 |
| -#endif |
| 81 | + |
| 82 | +#define SBE_NULLVALUE_INT8 std::numeric_limits<std::int8_t>::min() |
| 83 | +#define SBE_NULLVALUE_INT16 std::numeric_limits<std::int16_t>::min() |
| 84 | +#define SBE_NULLVALUE_INT32 std::numeric_limits<std::int32_t>::min() |
| 85 | +#define SBE_NULLVALUE_INT64 std::numeric_limits<std::int64_t>::min() |
| 86 | +#define SBE_NULLVALUE_UINT8 std::numeric_limits<std::uint8_t>::max() |
| 87 | +#define SBE_NULLVALUE_UINT16 std::numeric_limits<std::uint16_t>::max() |
| 88 | +#define SBE_NULLVALUE_UINT32 std::numeric_limits<std::uint32_t>::max() |
| 89 | +#define SBE_NULLVALUE_UINT64 std::numeric_limits<std::uint64_t>::max() |
111 | 90 |
|
112 | 91 | namespace MetaAttribute {
|
113 | 92 |
|
|
0 commit comments