78 #include <jasper/jas_config.h> 
   80 #include <jasper/jas_types.h> 
   95 #define JAS_KIBI        JAS_CAST(size_t, 1024) 
   96 #define JAS_MEBI        (JAS_KIBI * JAS_KIBI) 
  100         (((x) >= 0) ? (x) : (-(x))) 
  103 #define JAS_MIN(x, y) \ 
  104         (((x) < (y)) ? (x) : (y)) 
  107 #define JAS_MAX(x, y) \ 
  108         (((x) > (y)) ? (x) : (y)) 
  112 #define JAS_MOD(x, y) \ 
  113         (((x) < 0) ? (((-x) % (y)) ? ((y) - ((-(x)) % (y))) : (0)) : ((x) % (y))) 
  117 #define JAS_ONES(n) \ 
  124 JAS_ATTRIBUTE_DISABLE_USAN
 
  125 inline static int jas_int_asr(
int x, 
int n)
 
  129         assert(((-1) >> 1) == -1);
 
  137 JAS_ATTRIBUTE_DISABLE_USAN
 
  138 inline static int jas_int_asl(
int x, 
int n)
 
  142         assert(((-1) << 1) == -2);
 
  150 JAS_ATTRIBUTE_DISABLE_USAN
 
  151 inline static int jas_fast32_asr(int_fast32_t x, 
int n)
 
  155         assert(((JAS_CAST(int_fast32_t, -1)) >> 1) == JAS_CAST(int_fast32_t, -1));
 
  163 JAS_ATTRIBUTE_DISABLE_USAN
 
  164 inline static int jas_fast32_asl(int_fast32_t x, 
int n)
 
  168         assert(((JAS_CAST(int_fast32_t, -1)) << 1) == JAS_CAST(int_fast32_t, -2));
 
  181 inline static bool jas_safe_size_mul(
size_t x, 
size_t y, 
size_t *result)
 
  184         if (x && y > SIZE_MAX / x) {
 
  195 inline static bool jas_safe_size_mul3(
size_t a, 
size_t b, 
size_t c,
 
  199         if (!jas_safe_size_mul(a, b, &tmp) ||
 
  200           !jas_safe_size_mul(tmp, c, &tmp)) {
 
  210 inline static bool jas_safe_size_add(
size_t x, 
size_t y, 
size_t *result)
 
  212         if (y > SIZE_MAX - x) {
 
  222 inline static bool jas_safe_size_sub(
size_t x, 
size_t y, 
size_t *result)
 
  234 inline static bool jas_safe_intfast32_mul(int_fast32_t x, int_fast32_t y,
 
  235   int_fast32_t *result)
 
  241                         if (x > INT_FAST32_MAX / y) {
 
  246                         if (y < INT_FAST32_MIN / x) {
 
  254                         if (x < INT_FAST32_MIN / y) {
 
  258                         if (x != 0 && y < INT_FAST32_MAX / x) {
 
  271 inline static bool jas_safe_intfast32_mul3(int_fast32_t a, int_fast32_t b,
 
  272   int_fast32_t c, int_fast32_t *result)
 
  275         if (!jas_safe_intfast32_mul(a, b, &tmp) ||
 
  276           !jas_safe_intfast32_mul(tmp, c, &tmp)) {
 
  286 inline static bool jas_safe_intfast32_add(int_fast32_t x, int_fast32_t y,
 
  287   int_fast32_t *result)
 
  289         if ((y > 0 && x > INT_FAST32_MAX - y) ||
 
  290           (y < 0 && x < INT_FAST32_MIN - y)) {