mirror of
https://github.com/postgres/postgres.git
synced 2025-08-09 17:03:00 +03:00
Centralize definition of integer limits.
Several submitted and even committed patches have run into the problem that C89, our baseline, does not provide minimum/maximum values for various integer datatypes. C99's stdint.h does, but we can't rely on it. Several parts of the code defined limits locally, so instead centralize the definitions to c.h. This patch also changes the more obvious usages of literal limit values; there's more places that could be changed, but it's less clear whether it's beneficial to change those. Author: Andrew Gierth Discussion: 87619tc5wc.fsf@news-spur.riddles.org.uk
This commit is contained in:
@@ -249,6 +249,36 @@ typedef uint8 bits8; /* >= 8 bits */
|
||||
typedef uint16 bits16; /* >= 16 bits */
|
||||
typedef uint32 bits32; /* >= 32 bits */
|
||||
|
||||
/* should be defined in stdint.h, but we guarantee them here */
|
||||
#ifndef INT8_MIN
|
||||
#define INT8_MIN (-0x7F-1)
|
||||
#endif
|
||||
#ifndef INT8_MAX
|
||||
#define INT8_MAX (0x7F)
|
||||
#endif
|
||||
#ifndef INT16_MIN
|
||||
#define INT16_MIN (-0x7FFF-1)
|
||||
#endif
|
||||
#ifndef INT16_MAX
|
||||
#define INT16_MAX (0x7FFF)
|
||||
#endif
|
||||
#ifndef INT32_MIN
|
||||
#define INT32_MIN (-0x7FFFFFFF-1)
|
||||
#endif
|
||||
#ifndef INT32_MAX
|
||||
#define INT32_MAX (0x7FFFFFFF)
|
||||
#endif
|
||||
|
||||
#ifndef UINT8_MAX
|
||||
#define UINT8_MAX (0xFF)
|
||||
#endif
|
||||
#ifndef UINT16_MAX
|
||||
#define UINT16_MAX (0xFFFF)
|
||||
#endif
|
||||
#ifndef UINT32_MAX
|
||||
#define UINT32_MAX (0xFFFFFFFF)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 64-bit integers
|
||||
*/
|
||||
@@ -284,6 +314,17 @@ typedef unsigned long long int uint64;
|
||||
#define UINT64CONST(x) ((uint64) x)
|
||||
#endif
|
||||
|
||||
/* should be defined in stdint.h, but we guarantee them here */
|
||||
#ifndef INT64_MIN
|
||||
#define INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1)
|
||||
#endif
|
||||
#ifndef INT64_MAX
|
||||
#define INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF)
|
||||
#endif
|
||||
#ifndef UINT64_MAX
|
||||
#define UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF)
|
||||
#endif
|
||||
|
||||
/* snprintf format strings to use for 64-bit integers */
|
||||
#define INT64_FORMAT "%" INT64_MODIFIER "d"
|
||||
#define UINT64_FORMAT "%" INT64_MODIFIER "u"
|
||||
|
Reference in New Issue
Block a user