Fix more GCC warnings
This commit is contained in:
parent
a964466c8b
commit
2f50db1858
@ -18,7 +18,7 @@ if (NOT DEFINED CMAKE_DEBUG_POSTFIX)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT DEFINED MSVC)
|
if (NOT DEFINED MSVC)
|
||||||
set(WARNING_FLAGS_C -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Wno-unused-function)
|
set(WARNING_FLAGS_C -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Wno-unused-function)
|
||||||
set(WARNING_FLAGS_CXX -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Woverloaded-virtual -Wredundant-decls -Wctor-dtor-privacy -Wno-unused-function)
|
set(WARNING_FLAGS_CXX -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Woverloaded-virtual -Wredundant-decls -Wctor-dtor-privacy -Wno-unused-function)
|
||||||
set(DBG_FLAGS -fsanitize=undefined,address -g3 -Og)
|
set(DBG_FLAGS -fsanitize=undefined,address -g3 -Og)
|
||||||
else ()
|
else ()
|
||||||
|
|||||||
@ -23,7 +23,6 @@ typedef struct guf_libc_alloc_ctx {
|
|||||||
#if !defined(GUF_ALLOC_LIBC_IMPL_STATIC) && !defined(GUF_ALLOC_LIBC_IMPL)
|
#if !defined(GUF_ALLOC_LIBC_IMPL_STATIC) && !defined(GUF_ALLOC_LIBC_IMPL)
|
||||||
GUF_ALLOC_LIBC_KWRDS void *guf_libc_alloc(ptrdiff_t size, void *ctx);
|
GUF_ALLOC_LIBC_KWRDS void *guf_libc_alloc(ptrdiff_t size, void *ctx);
|
||||||
GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdiff_t new_size, void *ctx);
|
GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdiff_t new_size, void *ctx);
|
||||||
GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdiff_t new_size, void *ctx);
|
|
||||||
GUF_ALLOC_LIBC_KWRDS void guf_libc_free(void *ptr, ptrdiff_t size, void *ctx);
|
GUF_ALLOC_LIBC_KWRDS void guf_libc_free(void *ptr, ptrdiff_t size, void *ctx);
|
||||||
|
|
||||||
GUF_ALLOC_LIBC_KWRDS guf_allocator *guf_libc_allocator_init(guf_allocator *a, guf_libc_alloc_ctx *ctx);
|
GUF_ALLOC_LIBC_KWRDS guf_allocator *guf_libc_allocator_init(guf_allocator *a, guf_libc_alloc_ctx *ctx);
|
||||||
@ -71,7 +70,7 @@ GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdi
|
|||||||
const ptrdiff_t len = new_size - old_size;
|
const ptrdiff_t len = new_size - old_size;
|
||||||
GUF_ASSERT(len > 0);
|
GUF_ASSERT(len > 0);
|
||||||
GUF_ASSERT(old_size + len == new_size);
|
GUF_ASSERT(old_size + len == new_size);
|
||||||
memset((char*)ptr + old_size, 0, len); // TODO: sketchy
|
memset((char*)new_ptr + old_size, 0, len); // TODO: sketchy
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alloc_ctx && alloc_ctx->tracker.enabled) {
|
if (alloc_ctx && alloc_ctx->tracker.enabled) {
|
||||||
|
|||||||
@ -275,7 +275,7 @@ GUF_DICT_KWRDS GUF_DICT_NAME *GUF_CAT(GUF_DICT_NAME, _try_init_with_capacity)(GU
|
|||||||
|
|
||||||
if (kv_elem_capacity > 0) {
|
if (kv_elem_capacity > 0) {
|
||||||
const size_t MAX_IDX_CAP = GUF_ALLOC_MAX_CAPACITY(GUF_DICT_KV_META_T);
|
const size_t MAX_IDX_CAP = GUF_ALLOC_MAX_CAPACITY(GUF_DICT_KV_META_T);
|
||||||
const size_t desired_idx_cap = (size_t)guf_min_f64(kv_elem_capacity * 1.0 / GUF_DICT_MAX_LOAD_FACTOR, MAX_IDX_CAP);
|
const size_t desired_idx_cap = (size_t)guf_min_f64((double)kv_elem_capacity * 1.0 / GUF_DICT_MAX_LOAD_FACTOR, (double)MAX_IDX_CAP);
|
||||||
// Capacities must be powers of two.
|
// Capacities must be powers of two.
|
||||||
size_t kv_idx_cap = 1;
|
size_t kv_idx_cap = 1;
|
||||||
while ((kv_idx_cap <= MAX_IDX_CAP / 2) && (kv_idx_cap <= desired_idx_cap)) {
|
while ((kv_idx_cap <= MAX_IDX_CAP / 2) && (kv_idx_cap <= desired_idx_cap)) {
|
||||||
@ -598,7 +598,7 @@ static void GUF_CAT(GUF_DICT_NAME, _try_grow_if_necessary_)(GUF_DICT_NAME *ht, b
|
|||||||
ht->kv_indices = new_kv_indices;
|
ht->kv_indices = new_kv_indices;
|
||||||
ht->kv_indices_cap = ht->kv_indices_cap * KV_META_GROWTH_FAC;;
|
ht->kv_indices_cap = ht->kv_indices_cap * KV_META_GROWTH_FAC;;
|
||||||
GUF_ASSERT(guf_is_pow2_size_t(ht->kv_indices_cap));
|
GUF_ASSERT(guf_is_pow2_size_t(ht->kv_indices_cap));
|
||||||
GUF_ASSERT(new_size_bytes / sizeof(GUF_DICT_KV_META_T) == ht->kv_indices_cap);
|
GUF_ASSERT((ptrdiff_t)(new_size_bytes / sizeof(GUF_DICT_KV_META_T)) == ht->kv_indices_cap);
|
||||||
// ht->max_probelen = 0;
|
// ht->max_probelen = 0;
|
||||||
GUF_CAT(GUF_DICT_NAME, _reinsert_elems_)(ht);
|
GUF_CAT(GUF_DICT_NAME, _reinsert_elems_)(ht);
|
||||||
GUF_ASSERT(ht->num_tombstones == 0);
|
GUF_ASSERT(ht->num_tombstones == 0);
|
||||||
|
|||||||
@ -215,16 +215,16 @@ static inline unsigned long long guf_uabs_long_long(long long x) {if (x >= 0
|
|||||||
static inline size_t guf_uabs_ptrdiff_t(ptrdiff_t x) {if (x >= 0) {return x;} else if (x == PTRDIFF_MIN && -PTRDIFF_MAX != PTRDIFF_MIN) {return (size_t)PTRDIFF_MAX + 1u;} else {return -x;}}
|
static inline size_t guf_uabs_ptrdiff_t(ptrdiff_t x) {if (x >= 0) {return x;} else if (x == PTRDIFF_MIN && -PTRDIFF_MAX != PTRDIFF_MIN) {return (size_t)PTRDIFF_MAX + 1u;} else {return -x;}}
|
||||||
|
|
||||||
#if defined(UINT8_MAX) && defined(INT8_MAX)
|
#if defined(UINT8_MAX) && defined(INT8_MAX)
|
||||||
static inline uint8_t guf_uabs_i8(int8_t x) {if (x >= 0) {return x;} else if (x == INT8_MIN) {return (uint8_t)INT8_MAX + 1u;} else {return -x;}}
|
static inline uint8_t guf_uabs_i8(int8_t x) {if (x >= 0) {return x;} else if (x == INT8_MIN) {return (uint8_t)INT8_MAX + (uint8_t)1u;} else {return (uint8_t)-x;}}
|
||||||
#endif
|
#endif
|
||||||
#if defined(UINT16_MAX) && defined(INT16_MAX)
|
#if defined(UINT16_MAX) && defined(INT16_MAX)
|
||||||
static inline uint16_t guf_uabs_i16(int16_t x) {if (x >= 0) {return x;} else if (x == INT16_MIN) {return (uint16_t)INT16_MAX + 1u;} else {return -x;}}
|
static inline uint16_t guf_uabs_i16(int16_t x) {if (x >= 0) {return x;} else if (x == INT16_MIN) {return (uint16_t)INT16_MAX + (uint16_t)1u;} else {return (uint16_t)-x;}}
|
||||||
#endif
|
#endif
|
||||||
#if defined(UINT32_MAX) && defined(INT32_MAX)
|
#if defined(UINT32_MAX) && defined(INT32_MAX)
|
||||||
static inline uint32_t guf_uabs_i32(int32_t x) {if (x >= 0) {return x;} else if (x == INT32_MIN) {return (uint32_t)INT32_MAX + 1u;} else {return -x;}}
|
static inline uint32_t guf_uabs_i32(int32_t x) {if (x >= 0) {return x;} else if (x == INT32_MIN) {return (uint32_t)INT32_MAX + (uint32_t)1u;} else {return (uint32_t)-x;}}
|
||||||
#endif
|
#endif
|
||||||
#if defined(UINT64_MAX) && defined(INT64_MAX)
|
#if defined(UINT64_MAX) && defined(INT64_MAX)
|
||||||
static inline uint64_t guf_uabs_i64(int64_t x) {if (x >= 0) {return x;} else if (x == INT64_MIN) {return (uint64_t)INT64_MAX + 1u;} else {return -x;}}
|
static inline uint64_t guf_uabs_i64(int64_t x) {if (x >= 0) {return x;} else if (x == INT64_MIN) {return (uint64_t)INT64_MAX + (uint64_t)1u;} else {return (uint64_t)-x;}}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// absdiff functions with unsigned result (cannot fail)
|
// absdiff functions with unsigned result (cannot fail)
|
||||||
|
|||||||
@ -70,9 +70,9 @@
|
|||||||
|
|
||||||
|
|
||||||
#if defined(GUF_MATH_CKDINT_IMPL_STATIC)
|
#if defined(GUF_MATH_CKDINT_IMPL_STATIC)
|
||||||
#define GUF_MATH_CKDINT_KWRDS static inline
|
#define GUF_MATH_CKDINT_KWRDS static inline
|
||||||
#else
|
#else
|
||||||
#define GUF_MATH_CKDINT_KWRDS
|
#define GUF_MATH_CKDINT_KWRDS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef GUF_MATH_CKDINT_H
|
#ifndef GUF_MATH_CKDINT_H
|
||||||
@ -81,8 +81,8 @@
|
|||||||
|
|
||||||
typedef enum guf_math_ckd_result {GUF_MATH_CKD_SUCCESS = 0, GUF_MATH_CKD_OVERFLOW_POS, GUF_MATH_CKD_OVERFLOW_NEG} guf_math_ckd_result;
|
typedef enum guf_math_ckd_result {GUF_MATH_CKD_SUCCESS = 0, GUF_MATH_CKD_OVERFLOW_POS, GUF_MATH_CKD_OVERFLOW_NEG} guf_math_ckd_result;
|
||||||
|
|
||||||
#if !defined(GUF_MATH_CKDINT_IMPL_STATIC) && !defined(GUF_MATH_CKDINT_IMPL)
|
|
||||||
|
|
||||||
|
#if !defined(GUF_MATH_CKDINT_IMPL_STATIC) && !defined(GUF_MATH_CKDINT_IMPL)
|
||||||
// Signed integer arithmetic checks (generated with libguf/tools/ckdint-gen.py)
|
// Signed integer arithmetic checks (generated with libguf/tools/ckdint-gen.py)
|
||||||
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_add_int(int a, int b);
|
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_add_int(int a, int b);
|
||||||
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_int(int a, int b);
|
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_int(int a, int b);
|
||||||
@ -1365,10 +1365,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_int(int a, int b, int
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + INT_MIN) + (b + INT_MIN);
|
*result = (int)( (a + (int)INT_MIN) + (b + (int)INT_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - INT_MIN) + (b - INT_MIN);
|
*result = (int)( (a - (int)INT_MIN) + (b - (int)INT_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1386,11 +1386,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_int(int a, int b, int
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + INT_MIN) - (b - INT_MIN); // TODO: not sure
|
*result = (int)( (a + (int)INT_MIN) - (b - (int)INT_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - INT_MIN) - (b + INT_MIN); // TODO: not sure
|
*result = (int)( (a - (int)INT_MIN) - (b + (int)INT_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1413,7 +1413,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_int(int a, int b, int
|
|||||||
const unsigned mod = (unsigned)INT_MAX + 1u;
|
const unsigned mod = (unsigned)INT_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = INT_MIN + (int)res;
|
*result = (int)INT_MIN + (int)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int)res;
|
*result = (int)res;
|
||||||
}
|
}
|
||||||
@ -1496,10 +1496,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_long(long a, long b,
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + LONG_MIN) + (b + LONG_MIN);
|
*result = (long)( (a + (long)LONG_MIN) + (b + (long)LONG_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - LONG_MIN) + (b - LONG_MIN);
|
*result = (long)( (a - (long)LONG_MIN) + (b - (long)LONG_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1517,11 +1517,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_long(long a, long b,
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + LONG_MIN) - (b - LONG_MIN); // TODO: not sure
|
*result = (long)( (a + (long)LONG_MIN) - (b - (long)LONG_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - LONG_MIN) - (b + LONG_MIN); // TODO: not sure
|
*result = (long)( (a - (long)LONG_MIN) - (b + (long)LONG_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1544,7 +1544,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_long(long a, long b,
|
|||||||
const unsigned long mod = (unsigned long)LONG_MAX + 1u;
|
const unsigned long mod = (unsigned long)LONG_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = LONG_MIN + (long)res;
|
*result = (long)LONG_MIN + (long)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (long)res;
|
*result = (long)res;
|
||||||
}
|
}
|
||||||
@ -1627,10 +1627,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_long_long(long long a
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + LLONG_MIN) + (b + LLONG_MIN);
|
*result = (long long)( (a + (long long)LLONG_MIN) + (b + (long long)LLONG_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - LLONG_MIN) + (b - LLONG_MIN);
|
*result = (long long)( (a - (long long)LLONG_MIN) + (b - (long long)LLONG_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1648,11 +1648,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_long_long(long long a
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + LLONG_MIN) - (b - LLONG_MIN); // TODO: not sure
|
*result = (long long)( (a + (long long)LLONG_MIN) - (b - (long long)LLONG_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - LLONG_MIN) - (b + LLONG_MIN); // TODO: not sure
|
*result = (long long)( (a - (long long)LLONG_MIN) - (b + (long long)LLONG_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1675,7 +1675,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_long_long(long long a
|
|||||||
const unsigned long long mod = (unsigned long long)LLONG_MAX + 1u;
|
const unsigned long long mod = (unsigned long long)LLONG_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = LLONG_MIN + (long long)res;
|
*result = (long long)LLONG_MIN + (long long)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (long long)res;
|
*result = (long long)res;
|
||||||
}
|
}
|
||||||
@ -1758,10 +1758,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_ptrdiff_t(ptrdiff_t a
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + PTRDIFF_MIN) + (b + PTRDIFF_MIN);
|
*result = (ptrdiff_t)( (a + (ptrdiff_t)PTRDIFF_MIN) + (b + (ptrdiff_t)PTRDIFF_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - PTRDIFF_MIN) + (b - PTRDIFF_MIN);
|
*result = (ptrdiff_t)( (a - (ptrdiff_t)PTRDIFF_MIN) + (b - (ptrdiff_t)PTRDIFF_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1779,11 +1779,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_ptrdiff_t(ptrdiff_t a
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + PTRDIFF_MIN) - (b - PTRDIFF_MIN); // TODO: not sure
|
*result = (ptrdiff_t)( (a + (ptrdiff_t)PTRDIFF_MIN) - (b - (ptrdiff_t)PTRDIFF_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - PTRDIFF_MIN) - (b + PTRDIFF_MIN); // TODO: not sure
|
*result = (ptrdiff_t)( (a - (ptrdiff_t)PTRDIFF_MIN) - (b + (ptrdiff_t)PTRDIFF_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1806,7 +1806,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_ptrdiff_t(ptrdiff_t a
|
|||||||
const size_t mod = (size_t)PTRDIFF_MAX + 1u;
|
const size_t mod = (size_t)PTRDIFF_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = PTRDIFF_MIN + (ptrdiff_t)res;
|
*result = (ptrdiff_t)PTRDIFF_MIN + (ptrdiff_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (ptrdiff_t)res;
|
*result = (ptrdiff_t)res;
|
||||||
}
|
}
|
||||||
@ -1889,10 +1889,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i8(int_least8_t
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + GUF_INT8_MIN) + (b + GUF_INT8_MIN);
|
*result = (int_least8_t)( (a + (int_least8_t)GUF_INT8_MIN) + (b + (int_least8_t)GUF_INT8_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - GUF_INT8_MIN) + (b - GUF_INT8_MIN);
|
*result = (int_least8_t)( (a - (int_least8_t)GUF_INT8_MIN) + (b - (int_least8_t)GUF_INT8_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1910,11 +1910,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i8(int_least8_t
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + GUF_INT8_MIN) - (b - GUF_INT8_MIN); // TODO: not sure
|
*result = (int_least8_t)( (a + (int_least8_t)GUF_INT8_MIN) - (b - (int_least8_t)GUF_INT8_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - GUF_INT8_MIN) - (b + GUF_INT8_MIN); // TODO: not sure
|
*result = (int_least8_t)( (a - (int_least8_t)GUF_INT8_MIN) - (b + (int_least8_t)GUF_INT8_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -1937,7 +1937,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i8(int_least8_t
|
|||||||
const uint_least8_t mod = (uint_least8_t)GUF_INT8_MAX + 1u;
|
const uint_least8_t mod = (uint_least8_t)GUF_INT8_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = GUF_INT8_MIN + (int_least8_t)res;
|
*result = (int_least8_t)GUF_INT8_MIN + (int_least8_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int_least8_t)res;
|
*result = (int_least8_t)res;
|
||||||
}
|
}
|
||||||
@ -2020,10 +2020,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i16(int_least16
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + GUF_INT16_MIN) + (b + GUF_INT16_MIN);
|
*result = (int_least16_t)( (a + (int_least16_t)GUF_INT16_MIN) + (b + (int_least16_t)GUF_INT16_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - GUF_INT16_MIN) + (b - GUF_INT16_MIN);
|
*result = (int_least16_t)( (a - (int_least16_t)GUF_INT16_MIN) + (b - (int_least16_t)GUF_INT16_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2041,11 +2041,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i16(int_least16
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + GUF_INT16_MIN) - (b - GUF_INT16_MIN); // TODO: not sure
|
*result = (int_least16_t)( (a + (int_least16_t)GUF_INT16_MIN) - (b - (int_least16_t)GUF_INT16_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - GUF_INT16_MIN) - (b + GUF_INT16_MIN); // TODO: not sure
|
*result = (int_least16_t)( (a - (int_least16_t)GUF_INT16_MIN) - (b + (int_least16_t)GUF_INT16_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2068,7 +2068,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i16(int_least16
|
|||||||
const uint_least16_t mod = (uint_least16_t)GUF_INT16_MAX + 1u;
|
const uint_least16_t mod = (uint_least16_t)GUF_INT16_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = GUF_INT16_MIN + (int_least16_t)res;
|
*result = (int_least16_t)GUF_INT16_MIN + (int_least16_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int_least16_t)res;
|
*result = (int_least16_t)res;
|
||||||
}
|
}
|
||||||
@ -2151,10 +2151,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i32(int_least32
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + GUF_INT32_MIN) + (b + GUF_INT32_MIN);
|
*result = (int_least32_t)( (a + (int_least32_t)GUF_INT32_MIN) + (b + (int_least32_t)GUF_INT32_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - GUF_INT32_MIN) + (b - GUF_INT32_MIN);
|
*result = (int_least32_t)( (a - (int_least32_t)GUF_INT32_MIN) + (b - (int_least32_t)GUF_INT32_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2172,11 +2172,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i32(int_least32
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + GUF_INT32_MIN) - (b - GUF_INT32_MIN); // TODO: not sure
|
*result = (int_least32_t)( (a + (int_least32_t)GUF_INT32_MIN) - (b - (int_least32_t)GUF_INT32_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - GUF_INT32_MIN) - (b + GUF_INT32_MIN); // TODO: not sure
|
*result = (int_least32_t)( (a - (int_least32_t)GUF_INT32_MIN) - (b + (int_least32_t)GUF_INT32_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2199,7 +2199,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i32(int_least32
|
|||||||
const uint_least32_t mod = (uint_least32_t)GUF_INT32_MAX + 1u;
|
const uint_least32_t mod = (uint_least32_t)GUF_INT32_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = GUF_INT32_MIN + (int_least32_t)res;
|
*result = (int_least32_t)GUF_INT32_MIN + (int_least32_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int_least32_t)res;
|
*result = (int_least32_t)res;
|
||||||
}
|
}
|
||||||
@ -2282,10 +2282,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i64(int_least64
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + GUF_INT64_MIN) + (b + GUF_INT64_MIN);
|
*result = (int_least64_t)( (a + (int_least64_t)GUF_INT64_MIN) + (b + (int_least64_t)GUF_INT64_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - GUF_INT64_MIN) + (b - GUF_INT64_MIN);
|
*result = (int_least64_t)( (a - (int_least64_t)GUF_INT64_MIN) + (b - (int_least64_t)GUF_INT64_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2303,11 +2303,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i64(int_least64
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + GUF_INT64_MIN) - (b - GUF_INT64_MIN); // TODO: not sure
|
*result = (int_least64_t)( (a + (int_least64_t)GUF_INT64_MIN) - (b - (int_least64_t)GUF_INT64_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - GUF_INT64_MIN) - (b + GUF_INT64_MIN); // TODO: not sure
|
*result = (int_least64_t)( (a - (int_least64_t)GUF_INT64_MIN) - (b + (int_least64_t)GUF_INT64_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2330,7 +2330,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i64(int_least64
|
|||||||
const uint_least64_t mod = (uint_least64_t)GUF_INT64_MAX + 1u;
|
const uint_least64_t mod = (uint_least64_t)GUF_INT64_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = GUF_INT64_MIN + (int_least64_t)res;
|
*result = (int_least64_t)GUF_INT64_MIN + (int_least64_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int_least64_t)res;
|
*result = (int_least64_t)res;
|
||||||
}
|
}
|
||||||
@ -2414,10 +2414,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i8(int8_t a, int8_t b
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + INT8_MIN) + (b + INT8_MIN);
|
*result = (int8_t)( (a + (int8_t)INT8_MIN) + (b + (int8_t)INT8_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - INT8_MIN) + (b - INT8_MIN);
|
*result = (int8_t)( (a - (int8_t)INT8_MIN) + (b - (int8_t)INT8_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2435,11 +2435,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i8(int8_t a, int8_t b
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + INT8_MIN) - (b - INT8_MIN); // TODO: not sure
|
*result = (int8_t)( (a + (int8_t)INT8_MIN) - (b - (int8_t)INT8_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - INT8_MIN) - (b + INT8_MIN); // TODO: not sure
|
*result = (int8_t)( (a - (int8_t)INT8_MIN) - (b + (int8_t)INT8_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2462,7 +2462,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i8(int8_t a, int8_t b
|
|||||||
const uint8_t mod = (uint8_t)INT8_MAX + 1u;
|
const uint8_t mod = (uint8_t)INT8_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = INT8_MIN + (int8_t)res;
|
*result = (int8_t)INT8_MIN + (int8_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int8_t)res;
|
*result = (int8_t)res;
|
||||||
}
|
}
|
||||||
@ -2547,10 +2547,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i16(int16_t a, int16_
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + INT16_MIN) + (b + INT16_MIN);
|
*result = (int16_t)( (a + (int16_t)INT16_MIN) + (b + (int16_t)INT16_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - INT16_MIN) + (b - INT16_MIN);
|
*result = (int16_t)( (a - (int16_t)INT16_MIN) + (b - (int16_t)INT16_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2568,11 +2568,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i16(int16_t a, int16_
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + INT16_MIN) - (b - INT16_MIN); // TODO: not sure
|
*result = (int16_t)( (a + (int16_t)INT16_MIN) - (b - (int16_t)INT16_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - INT16_MIN) - (b + INT16_MIN); // TODO: not sure
|
*result = (int16_t)( (a - (int16_t)INT16_MIN) - (b + (int16_t)INT16_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2595,7 +2595,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i16(int16_t a, int16_
|
|||||||
const uint16_t mod = (uint16_t)INT16_MAX + 1u;
|
const uint16_t mod = (uint16_t)INT16_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = INT16_MIN + (int16_t)res;
|
*result = (int16_t)INT16_MIN + (int16_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int16_t)res;
|
*result = (int16_t)res;
|
||||||
}
|
}
|
||||||
@ -2680,10 +2680,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i32(int32_t a, int32_
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + INT32_MIN) + (b + INT32_MIN);
|
*result = (int32_t)( (a + (int32_t)INT32_MIN) + (b + (int32_t)INT32_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - INT32_MIN) + (b - INT32_MIN);
|
*result = (int32_t)( (a - (int32_t)INT32_MIN) + (b - (int32_t)INT32_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2701,11 +2701,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i32(int32_t a, int32_
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + INT32_MIN) - (b - INT32_MIN); // TODO: not sure
|
*result = (int32_t)( (a + (int32_t)INT32_MIN) - (b - (int32_t)INT32_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - INT32_MIN) - (b + INT32_MIN); // TODO: not sure
|
*result = (int32_t)( (a - (int32_t)INT32_MIN) - (b + (int32_t)INT32_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2728,7 +2728,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i32(int32_t a, int32_
|
|||||||
const uint32_t mod = (uint32_t)INT32_MAX + 1u;
|
const uint32_t mod = (uint32_t)INT32_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = INT32_MIN + (int32_t)res;
|
*result = (int32_t)INT32_MIN + (int32_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int32_t)res;
|
*result = (int32_t)res;
|
||||||
}
|
}
|
||||||
@ -2813,10 +2813,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i64(int64_t a, int64_
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + INT64_MIN) + (b + INT64_MIN);
|
*result = (int64_t)( (a + (int64_t)INT64_MIN) + (b + (int64_t)INT64_MIN) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - INT64_MIN) + (b - INT64_MIN);
|
*result = (int64_t)( (a - (int64_t)INT64_MIN) + (b - (int64_t)INT64_MIN) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2834,11 +2834,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i64(int64_t a, int64_
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + INT64_MIN) - (b - INT64_MIN); // TODO: not sure
|
*result = (int64_t)( (a + (int64_t)INT64_MIN) - (b - (int64_t)INT64_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - INT64_MIN) - (b + INT64_MIN); // TODO: not sure
|
*result = (int64_t)( (a - (int64_t)INT64_MIN) - (b + (int64_t)INT64_MIN) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -2861,7 +2861,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i64(int64_t a, int64_
|
|||||||
const uint64_t mod = (uint64_t)INT64_MAX + 1u;
|
const uint64_t mod = (uint64_t)INT64_MAX + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = INT64_MIN + (int64_t)res;
|
*result = (int64_t)INT64_MIN + (int64_t)res;
|
||||||
} else {
|
} else {
|
||||||
*result = (int64_t)res;
|
*result = (int64_t)res;
|
||||||
}
|
}
|
||||||
@ -3957,3 +3957,4 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_u64(uint64_t a, uint6
|
|||||||
#undef GUF_MATH_CKDINT_KWRDS
|
#undef GUF_MATH_CKDINT_KWRDS
|
||||||
#undef GUF_MATH_CKDINT_IMPL
|
#undef GUF_MATH_CKDINT_IMPL
|
||||||
#undef GUF_MATH_CKDINT_IMPL_STATIC
|
#undef GUF_MATH_CKDINT_IMPL_STATIC
|
||||||
|
|
||||||
|
|||||||
@ -345,7 +345,7 @@ GUF_RAND_KWRDS uint_least64_t guf_rand32_u64(guf_rand32_state *state)
|
|||||||
GUF_ASSERT(state->s[0] || state->s[1] || state->s[2] || state->s[3]);
|
GUF_ASSERT(state->s[0] || state->s[1] || state->s[2] || state->s[3]);
|
||||||
const uint_least32_t lower_bits = guf_rand32_u32(state);
|
const uint_least32_t lower_bits = guf_rand32_u32(state);
|
||||||
const uint_least32_t upper_bits = guf_rand32_u32(state);
|
const uint_least32_t upper_bits = guf_rand32_u32(state);
|
||||||
GUF_ASSERT( lower_bits <= GUF_UINT32_MAX && upper_bits <= GUF_UINT32_MAX );
|
//GUF_ASSERT( lower_bits <= GUF_UINT32_MAX && upper_bits <= GUF_UINT32_MAX );
|
||||||
GUF_ASSERT( ( ((uint_least64_t)upper_bits << 32u) | (uint_least64_t)lower_bits ) <= GUF_UINT32_MAX);
|
GUF_ASSERT( ( ((uint_least64_t)upper_bits << 32u) | (uint_least64_t)lower_bits ) <= GUF_UINT32_MAX);
|
||||||
return ((uint_least64_t)upper_bits << 32u) | (uint_least64_t)lower_bits; // TODO: not sure if that's a good idea...
|
return ((uint_least64_t)upper_bits << 32u) | (uint_least64_t)lower_bits; // TODO: not sure if that's a good idea...
|
||||||
|
|
||||||
@ -443,31 +443,31 @@ GUF_RAND_KWRDS void guf_randstate_jump(guf_randstate *state)
|
|||||||
GUF_RAND_KWRDS double guf_rand64_f64(guf_rand64_state *state)
|
GUF_RAND_KWRDS double guf_rand64_f64(guf_rand64_state *state)
|
||||||
{
|
{
|
||||||
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
|
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
|
||||||
return (guf_rand64_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
|
return (double)(guf_rand64_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
|
||||||
}
|
}
|
||||||
|
|
||||||
GUF_RAND_KWRDS double guf_rand32_f64(guf_rand32_state *state)
|
GUF_RAND_KWRDS double guf_rand32_f64(guf_rand32_state *state)
|
||||||
{
|
{
|
||||||
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
|
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
|
||||||
return (guf_rand32_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
|
return (double)(guf_rand32_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate double in the unit interval [0, 1)
|
// Generate double in the unit interval [0, 1)
|
||||||
GUF_RAND_KWRDS double guf_rand_f64(guf_randstate *state)
|
GUF_RAND_KWRDS double guf_rand_f64(guf_randstate *state)
|
||||||
{
|
{
|
||||||
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
|
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
|
||||||
return (guf_rand_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
|
return (double)(guf_rand_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GUF_RAND_KWRDS float guf_rand64_f32(guf_rand64_state *state)
|
GUF_RAND_KWRDS float guf_rand64_f32(guf_rand64_state *state)
|
||||||
{
|
{
|
||||||
return (guf_rand64_u64(state) >> 40u) * 0x1.0p-24f; // 40 == 64 - 24; (float has a 24-bit mantissa/significand)
|
return (float)(guf_rand64_u64(state) >> 40u) * 0x1.0p-24f; // 40 == 64 - 24; (float has a 24-bit mantissa/significand)
|
||||||
}
|
}
|
||||||
|
|
||||||
GUF_RAND_KWRDS float guf_rand32_f32(guf_rand32_state *state)
|
GUF_RAND_KWRDS float guf_rand32_f32(guf_rand32_state *state)
|
||||||
{
|
{
|
||||||
return (guf_rand32_u32(state) >> 8u) * 0x1.0p-24f; // 8 == 32 - 24; (float has a 24-bit mantissa/significand)
|
return (float)(guf_rand32_u32(state) >> 8u) * 0x1.0p-24f; // 8 == 32 - 24; (float has a 24-bit mantissa/significand)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate float in the unit interval [0, 1)
|
// Generate float in the unit interval [0, 1)
|
||||||
@ -684,7 +684,7 @@ GUF_RAND_KWRDS int_least32_t guf_rand32_range_i32(guf_rand32_state *state, int_l
|
|||||||
|
|
||||||
const int_least32_t rnd = min + (int_least32_t)step;
|
const int_least32_t rnd = min + (int_least32_t)step;
|
||||||
GUF_ASSERT(rnd >= min && rnd <= max);
|
GUF_ASSERT(rnd >= min && rnd <= max);
|
||||||
GUF_ASSERT(rnd <= GUF_INT32_MAX && rnd >= GUF_INT32_MIN);
|
//GUF_ASSERT(rnd <= GUF_INT32_MAX && rnd >= GUF_INT32_MIN);
|
||||||
|
|
||||||
return rnd;
|
return rnd;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,7 +77,7 @@ typedef struct guf_str_tok_state {
|
|||||||
#define GUF_CSTR_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)strlen(CSTR)}
|
#define GUF_CSTR_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)strlen(CSTR)}
|
||||||
#define GUF_CSTR_LIT_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)sizeof(CSTR) - 1}
|
#define GUF_CSTR_LIT_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)sizeof(CSTR) - 1}
|
||||||
|
|
||||||
#define GUF_STR_UNINITIALISED_CPP guf_str{.data = {0}, .allocator = NULL}
|
#define GUF_STR_UNINITIALISED_CPP guf_str{{0, 0, NULL}, 0}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 1.) guf_str_view:
|
// 1.) guf_str_view:
|
||||||
@ -1200,7 +1200,7 @@ GUF_STR_KWRDS guf_str *guf_str_append_u64(guf_str *str, uint_least64_t n) {
|
|||||||
int num_digits = 0;
|
int num_digits = 0;
|
||||||
do {
|
do {
|
||||||
GUF_ASSERT(start_idx > 0);
|
GUF_ASSERT(start_idx > 0);
|
||||||
char c = (n % 10) + '0';
|
char c = (char)( (n % 10) + '0' );
|
||||||
buf[--start_idx] = c;
|
buf[--start_idx] = c;
|
||||||
++num_digits;
|
++num_digits;
|
||||||
} while ((n = n / 10));
|
} while ((n = n / 10));
|
||||||
|
|||||||
@ -113,15 +113,15 @@ GUF_UTF8_KWRDS bool guf_utf8_encode(guf_utf8_char *result, uint_least32_t cp)
|
|||||||
first_byte_bits = 7;
|
first_byte_bits = 7;
|
||||||
} else if (cp >= 0x80 && cp <= 0x7FF) { // binary: 110x.xxxx 10xx.xxxx
|
} else if (cp >= 0x80 && cp <= 0x7FF) { // binary: 110x.xxxx 10xx.xxxx
|
||||||
num_bytes = 2;
|
num_bytes = 2;
|
||||||
result->bytes[0] = 0xC0;
|
result->bytes[0] = (char)0xC0;
|
||||||
first_byte_bits = 5;
|
first_byte_bits = 5;
|
||||||
} else if (cp >= 0x800 && cp <= 0xFFFF) { // binary: 1110.xxxx 10xx.xxxx 10xx.xxxx
|
} else if (cp >= 0x800 && cp <= 0xFFFF) { // binary: 1110.xxxx 10xx.xxxx 10xx.xxxx
|
||||||
num_bytes = 3;
|
num_bytes = 3;
|
||||||
result->bytes[0] = 0xE0;
|
result->bytes[0] = (char)0xE0;
|
||||||
first_byte_bits = 4;
|
first_byte_bits = 4;
|
||||||
} else if (cp >= 0x10000 && cp <= 0x10FFFF) { // binary: 1111.0xxx 10xx.xxxx 10xx.xxxx 10xx.xxxx
|
} else if (cp >= 0x10000 && cp <= 0x10FFFF) { // binary: 1111.0xxx 10xx.xxxx 10xx.xxxx 10xx.xxxx
|
||||||
num_bytes = 4;
|
num_bytes = 4;
|
||||||
result->bytes[0] = 0xF0;
|
result->bytes[0] = (char)0xF0;
|
||||||
first_byte_bits = 3;
|
first_byte_bits = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ GUF_UTF8_KWRDS bool guf_utf8_encode(guf_utf8_char *result, uint_least32_t cp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 1; i < num_bytes; ++i) {
|
for (int i = 1; i < num_bytes; ++i) {
|
||||||
result->bytes[i] = 0x80; // binary: 10xx.xxxx
|
result->bytes[i] = (char)0x80; // binary: 10xx.xxxx
|
||||||
}
|
}
|
||||||
|
|
||||||
const int tail_byte_bits = 6;
|
const int tail_byte_bits = 6;
|
||||||
@ -288,7 +288,7 @@ GUF_UTF8_KWRDS bool guf_utf8_char_is_valid(const guf_utf8_char *c)
|
|||||||
|
|
||||||
for (int i = 0; i < num_bytes; ++i) {
|
for (int i = 0; i < num_bytes; ++i) {
|
||||||
// "The octet values C0, C1, F5 to FF never appear.", cf. https://www.rfc-editor.org/rfc/rfc3629#page-5
|
// "The octet values C0, C1, F5 to FF never appear.", cf. https://www.rfc-editor.org/rfc/rfc3629#page-5
|
||||||
if (bytes[i] == 0xC0 || bytes[i] == 0xC1 || (bytes[i] >= 0xF5 && bytes[i] <= 0xFF)) {
|
if (bytes[i] == 0xC0 || bytes[i] == 0xC1 || (bytes[i] >= 0xF5)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -113,7 +113,7 @@ int main(void)
|
|||||||
floats = dbuf_float_new(&allocator);
|
floats = dbuf_float_new(&allocator);
|
||||||
|
|
||||||
for (int i = 0; i <= 16; ++i) {
|
for (int i = 0; i <= 16; ++i) {
|
||||||
dbuf_float_push_val(&floats, i % 2 ? i * -2.f : i * 2.f);
|
dbuf_float_push_val(&floats, i % 2 ? (float)i * -2.f : (float)i * 2.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// float *tmp = test_allocator.alloc(floats.size * sizeof(float), &test_allocator_ctx);
|
// float *tmp = test_allocator.alloc(floats.size * sizeof(float), &test_allocator_ctx);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
struct CkdIntTest : public Test
|
struct CkdIntTest : public Test
|
||||||
{
|
{
|
||||||
CkdIntTest(const std::string& name) : Test(name) {};
|
CkdIntTest(const std::string& nm) : Test(nm) {};
|
||||||
void run() override;
|
void run() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -581,7 +581,7 @@ void DbufStrTest::test_push_insert_erase(size_t n, ptrdiff_t start_cap)
|
|||||||
for (size_t i = 0; i < n; ++i) {
|
for (size_t i = 0; i < n; ++i) {
|
||||||
std::string str;
|
std::string str;
|
||||||
for (size_t c = 0; c < 512 + GUF_STR_SSO_BUF_CAP; ++c) {
|
for (size_t c = 0; c < 512 + GUF_STR_SSO_BUF_CAP; ++c) {
|
||||||
str += c % 10 + '0';
|
str += (char)(c % 10 + '0');
|
||||||
}
|
}
|
||||||
const guf_str_view sv_long = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
|
const guf_str_view sv_long = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
|
||||||
const guf_str_view sv_short = guf_str_view{.str = str.data(), .len = (ptrdiff_t)GUF_STR_SSO_BUF_CAP - 1};
|
const guf_str_view sv_short = guf_str_view{.str = str.data(), .len = (ptrdiff_t)GUF_STR_SSO_BUF_CAP - 1};
|
||||||
@ -642,7 +642,7 @@ void DbufStrTest::test_push_insert_erase(size_t n, ptrdiff_t start_cap)
|
|||||||
|
|
||||||
std::string str;
|
std::string str;
|
||||||
for (size_t c = 0; c < 512 + GUF_STR_SSO_BUF_CAP; ++c) {
|
for (size_t c = 0; c < 512 + GUF_STR_SSO_BUF_CAP; ++c) {
|
||||||
str += c % 10 + '0';
|
str += (char)(c % 10 + '0');
|
||||||
}
|
}
|
||||||
const guf_str_view sv_long = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
|
const guf_str_view sv_long = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
|
||||||
const guf_str_view sv_short = guf_str_view{.str = str.data(), .len = (ptrdiff_t)GUF_STR_SSO_BUF_CAP - 1};
|
const guf_str_view sv_short = guf_str_view{.str = str.data(), .len = (ptrdiff_t)GUF_STR_SSO_BUF_CAP - 1};
|
||||||
|
|||||||
@ -10,7 +10,7 @@ extern "C"
|
|||||||
|
|
||||||
struct DbufIntTest : public Test
|
struct DbufIntTest : public Test
|
||||||
{
|
{
|
||||||
DbufIntTest(const std::string& name) : Test(name)
|
DbufIntTest(const std::string& nm) : Test(nm)
|
||||||
{
|
{
|
||||||
allocator_ctx.zero_init = false;
|
allocator_ctx.zero_init = false;
|
||||||
guf_alloc_tracker_init(&allocator_ctx.tracker, 1, "DbufIntTest_allocator", NULL, NULL);
|
guf_alloc_tracker_init(&allocator_ctx.tracker, 1, "DbufIntTest_allocator", NULL, NULL);
|
||||||
@ -31,7 +31,7 @@ private:
|
|||||||
|
|
||||||
struct DbufCstringTest : public Test
|
struct DbufCstringTest : public Test
|
||||||
{
|
{
|
||||||
DbufCstringTest(std::string name) : Test(name)
|
DbufCstringTest(std::string nm) : Test(nm)
|
||||||
{
|
{
|
||||||
allocator_ctx.zero_init = false;
|
allocator_ctx.zero_init = false;
|
||||||
guf_alloc_tracker_init(&allocator_ctx.tracker, 2, "DbufCstringTest_allocator", NULL, NULL);
|
guf_alloc_tracker_init(&allocator_ctx.tracker, 2, "DbufCstringTest_allocator", NULL, NULL);
|
||||||
@ -52,7 +52,7 @@ private:
|
|||||||
|
|
||||||
struct DbufStrTest : public Test
|
struct DbufStrTest : public Test
|
||||||
{
|
{
|
||||||
DbufStrTest(std::string name) : Test(name)
|
DbufStrTest(std::string nm) : Test(nm)
|
||||||
{
|
{
|
||||||
allocator_ctx.zero_init = false;
|
allocator_ctx.zero_init = false;
|
||||||
guf_alloc_tracker_init(&allocator_ctx.tracker, 3, "DbufStrTest_allocator", NULL, NULL);
|
guf_alloc_tracker_init(&allocator_ctx.tracker, 3, "DbufStrTest_allocator", NULL, NULL);
|
||||||
|
|||||||
@ -12,7 +12,7 @@ extern "C"
|
|||||||
|
|
||||||
struct DictSvToIntTest : public Test
|
struct DictSvToIntTest : public Test
|
||||||
{
|
{
|
||||||
DictSvToIntTest(const std::string& name) : Test(name)
|
DictSvToIntTest(const std::string& nm) : Test(nm)
|
||||||
{
|
{
|
||||||
allocator_ctx.zero_init = false;
|
allocator_ctx.zero_init = false;
|
||||||
guf_alloc_tracker_init(&allocator_ctx.tracker, 3, "DictSvToIntTest_allocator", NULL, NULL);
|
guf_alloc_tracker_init(&allocator_ctx.tracker, 3, "DictSvToIntTest_allocator", NULL, NULL);
|
||||||
|
|||||||
@ -11,7 +11,7 @@ extern "C"
|
|||||||
|
|
||||||
struct StrTest : public Test
|
struct StrTest : public Test
|
||||||
{
|
{
|
||||||
StrTest(const std::string& name) : Test(name)
|
StrTest(const std::string& nm) : Test(nm)
|
||||||
{
|
{
|
||||||
allocator_ctx.zero_init = false;
|
allocator_ctx.zero_init = false;
|
||||||
guf_alloc_tracker_init(&allocator_ctx.tracker, 4, "StrTest_allocator", NULL, NULL);
|
guf_alloc_tracker_init(&allocator_ctx.tracker, 4, "StrTest_allocator", NULL, NULL);
|
||||||
|
|||||||
@ -9,7 +9,7 @@ extern "C"
|
|||||||
|
|
||||||
struct UTF8Test : public Test
|
struct UTF8Test : public Test
|
||||||
{
|
{
|
||||||
UTF8Test(const std::string& name) : Test(name)
|
UTF8Test(const std::string& nm) : Test(nm)
|
||||||
{
|
{
|
||||||
allocator_ctx.zero_init = false;
|
allocator_ctx.zero_init = false;
|
||||||
guf_alloc_tracker_init(&allocator_ctx.tracker, 5, "UTF8Test_allocator", NULL, NULL);
|
guf_alloc_tracker_init(&allocator_ctx.tracker, 5, "UTF8Test_allocator", NULL, NULL);
|
||||||
|
|||||||
@ -223,10 +223,10 @@ def generate_ckdint_functions(int_types: list, uint_types: list) -> Tuple[str, s
|
|||||||
*result = a + b;
|
*result = a + b;
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
*result = (a + {int_min}) + (b + {int_min});
|
*result = ({type})( (a + ({type}){int_min}) + (b + ({type}){int_min}) );
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
*result = (a - {int_min}) + (b - {int_min});
|
*result = ({type})( (a - ({type}){int_min}) + (b - ({type}){int_min}) );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -244,11 +244,11 @@ def generate_ckdint_functions(int_types: list, uint_types: list) -> Tuple[str, s
|
|||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_POS:
|
case GUF_MATH_CKD_OVERFLOW_POS:
|
||||||
GUF_ASSERT(b < 0);
|
GUF_ASSERT(b < 0);
|
||||||
*result = (a + {int_min}) - (b - {int_min}); // TODO: not sure
|
*result = ({type})( (a + ({type}){int_min}) - (b - ({type}){int_min}) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
case GUF_MATH_CKD_OVERFLOW_NEG:
|
case GUF_MATH_CKD_OVERFLOW_NEG:
|
||||||
GUF_ASSERT(b > 0);
|
GUF_ASSERT(b > 0);
|
||||||
*result = (a - {int_min}) - (b + {int_min}); // TODO: not sure
|
*result = ({type})( (a - ({type}){int_min}) - (b + ({type}){int_min}) ); // TODO: not sure
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
GUF_ASSERT(false);
|
GUF_ASSERT(false);
|
||||||
@ -271,7 +271,7 @@ def generate_ckdint_functions(int_types: list, uint_types: list) -> Tuple[str, s
|
|||||||
const {uint_type} mod = ({uint_type}){int_max} + 1u;
|
const {uint_type} mod = ({uint_type}){int_max} + 1u;
|
||||||
GUF_ASSERT(mod > 0);
|
GUF_ASSERT(mod > 0);
|
||||||
res = 1u * res % mod;
|
res = 1u * res % mod;
|
||||||
*result = {int_min} + ({type})res;
|
*result = ({type}){int_min} + ({type})res;
|
||||||
}} else {{
|
}} else {{
|
||||||
*result = ({type})res;
|
*result = ({type})res;
|
||||||
}}
|
}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user