49#if defined(HAVE__BUILTIN_OP_OVERFLOW)
50 return __builtin_add_overflow(a, b, result);
59 *result = (
int16) res;
67#if defined(HAVE__BUILTIN_OP_OVERFLOW)
68 return __builtin_sub_overflow(a, b, result);
77 *result = (
int16) res;
85#if defined(HAVE__BUILTIN_OP_OVERFLOW)
86 return __builtin_mul_overflow(a, b, result);
95 *result = (
int16) res;
106#if defined(HAVE__BUILTIN_OP_OVERFLOW)
107 return __builtin_add_overflow(a, b, result);
116 *result = (
int32) res;
124#if defined(HAVE__BUILTIN_OP_OVERFLOW)
125 return __builtin_sub_overflow(a, b, result);
134 *result = (
int32) res;
142#if defined(HAVE__BUILTIN_OP_OVERFLOW)
143 return __builtin_mul_overflow(a, b, result);
152 *result = (
int32) res;
163#if defined(HAVE__BUILTIN_OP_OVERFLOW)
164 return __builtin_add_overflow(a, b, result);
165#elif defined(HAVE_INT128)
166 int128 res = (int128) a + (int128) b;
173 *result = (
int64) res;
190#if defined(HAVE__BUILTIN_OP_OVERFLOW)
191 return __builtin_sub_overflow(a, b, result);
192#elif defined(HAVE_INT128)
193 int128 res = (int128) a - (int128) b;
200 *result = (
int64) res;
217#if defined(HAVE__BUILTIN_OP_OVERFLOW)
218 return __builtin_mul_overflow(a, b, result);
219#elif defined(HAVE_INT128)
220 int128 res = (int128) a * (int128) b;
227 *result = (
int64) res;
243 a != 0 && a != 1 && b != 0 && b != 1 &&
268#if defined(HAVE__BUILTIN_OP_OVERFLOW)
269 return __builtin_add_overflow(a, b, result);
286#if defined(HAVE__BUILTIN_OP_OVERFLOW)
287 return __builtin_sub_overflow(a, b, result);
302#if defined(HAVE__BUILTIN_OP_OVERFLOW)
303 return __builtin_mul_overflow(a, b, result);
323#if defined(HAVE__BUILTIN_OP_OVERFLOW)
324 return __builtin_add_overflow(a, b, result);
341#if defined(HAVE__BUILTIN_OP_OVERFLOW)
342 return __builtin_sub_overflow(a, b, result);
357#if defined(HAVE__BUILTIN_OP_OVERFLOW)
358 return __builtin_mul_overflow(a, b, result);
378#if defined(HAVE__BUILTIN_OP_OVERFLOW)
379 return __builtin_add_overflow(a, b, result);
396#if defined(HAVE__BUILTIN_OP_OVERFLOW)
397 return __builtin_sub_overflow(a, b, result);
412#if defined(HAVE__BUILTIN_OP_OVERFLOW)
413 return __builtin_mul_overflow(a, b, result);
414#elif defined(HAVE_INT128)
415 uint128 res = (uint128) a * (uint128) b;
427 if (a != 0 && b != res / a)
#define PG_INT32_MAX
Definition: c.h:529
#define PG_UINT32_MAX
Definition: c.h:530
#define PG_INT16_MIN
Definition: c.h:525
#define PG_INT64_MAX
Definition: c.h:532
#define PG_INT64_MIN
Definition: c.h:531
#define PG_UINT16_MAX
Definition: c.h:527
#define PG_UINT64_MAX
Definition: c.h:533
#define PG_INT32_MIN
Definition: c.h:528
#define PG_INT16_MAX
Definition: c.h:526
static bool pg_mul_s64_overflow(int64 a, int64 b, int64 *result)
Definition: int.h:215
static bool pg_sub_u32_overflow(uint32 a, uint32 b, uint32 *result)
Definition: int.h:339
static bool pg_add_u32_overflow(uint32 a, uint32 b, uint32 *result)
Definition: int.h:321
static bool pg_sub_s64_overflow(int64 a, int64 b, int64 *result)
Definition: int.h:188
static bool pg_add_u64_overflow(uint64 a, uint64 b, uint64 *result)
Definition: int.h:376
static bool pg_sub_s16_overflow(int16 a, int16 b, int16 *result)
Definition: int.h:65
static bool pg_mul_s32_overflow(int32 a, int32 b, int32 *result)
Definition: int.h:140
static bool pg_mul_u16_overflow(uint16 a, uint16 b, uint16 *result)
Definition: int.h:300
static bool pg_mul_u32_overflow(uint32 a, uint32 b, uint32 *result)
Definition: int.h:355
static bool pg_mul_s16_overflow(int16 a, int16 b, int16 *result)
Definition: int.h:83
static bool pg_mul_u64_overflow(uint64 a, uint64 b, uint64 *result)
Definition: int.h:410
static bool pg_sub_u16_overflow(uint16 a, uint16 b, uint16 *result)
Definition: int.h:284
static bool pg_add_u16_overflow(uint16 a, uint16 b, uint16 *result)
Definition: int.h:266
static bool pg_add_s16_overflow(int16 a, int16 b, int16 *result)
Definition: int.h:47
static bool pg_sub_s32_overflow(int32 a, int32 b, int32 *result)
Definition: int.h:122
static bool pg_add_s64_overflow(int64 a, int64 b, int64 *result)
Definition: int.h:161
static bool pg_sub_u64_overflow(uint64 a, uint64 b, uint64 *result)
Definition: int.h:394
static bool pg_add_s32_overflow(int32 a, int32 b, int32 *result)
Definition: int.h:104
signed short int16
Functions for building a cache of temporal types and operators.
Definition: meos_catalog.h:41
unsigned short uint16
Definition: pg_ext_defs.in.h:12
unsigned int uint32
Definition: pg_ext_defs.in.h:13
signed int int32
Definition: pg_ext_defs.in.h:8
unsigned long int uint64
Definition: pg_ext_defs.in.h:14
long int int64
Definition: pg_ext_defs.in.h:9