(b76ad15ed0da636161de0243c547ee1e6fc95681)
Internal header for bitwise integer algorithms.
More...
Go to the source code of this file.
|
#define | HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2)) |
|
#define | SIGNED_INTEGER_TYPE_P(T) (0 > ((T)0)-1) |
|
#define | SIGNED_INTEGER_MIN(T) |
|
#define | SIGNED_INTEGER_MAX(T) ((T)(SIGNED_INTEGER_MIN(T) ^ ((T)~(T)0))) |
|
#define | UNSIGNED_INTEGER_MAX(T) ((T)~(T)0) |
|
#define | MUL_OVERFLOW_P(a, b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0) |
|
#define | MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, min, max) |
|
#define | MUL_OVERFLOW_FIXNUM_P(a, b) |
|
#define | MUL_OVERFLOW_LONG_LONG_P(a, b) MUL_OVERFLOW_P(a, b) |
|
#define | MUL_OVERFLOW_LONG_P(a, b) MUL_OVERFLOW_P(a, b) |
|
#define | MUL_OVERFLOW_INT_P(a, b) MUL_OVERFLOW_P(a, b) |
|
#define | bit_length(x) |
|
#define | swap16 ruby_swap16 |
|
#define | swap32 ruby_swap32 |
|
#define | swap64 ruby_swap64 |
|
◆ bit_length
Value: (unsigned int) \
(
sizeof(x) <=
sizeof(int32_t) ? 32 - nlz_int32((
uint32_t)(x)) : \
Definition at line 140 of file bits.h.
◆ HALF_LONG_MSB
◆ MUL_OVERFLOW_FIXNUM_P
#define MUL_OVERFLOW_FIXNUM_P |
( |
|
a, |
|
|
|
b |
|
) |
| |
Value: __extension__ ({ \
struct {
long fixnum :
sizeof(long) *
CHAR_BIT - 1; } c = { 0 }; \
__builtin_mul_overflow_p((a), (b), c.fixnum); \
})
Definition at line 113 of file bits.h.
◆ MUL_OVERFLOW_INT_P
◆ MUL_OVERFLOW_LONG_LONG_P
◆ MUL_OVERFLOW_LONG_P
◆ MUL_OVERFLOW_P
#define MUL_OVERFLOW_P |
( |
|
a, |
|
|
|
b |
|
) |
| __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0) |
◆ MUL_OVERFLOW_SIGNED_INTEGER_P
#define MUL_OVERFLOW_SIGNED_INTEGER_P |
( |
|
a, |
|
|
|
b, |
|
|
|
min, |
|
|
|
max |
|
) |
| |
Value: ( \
(a) == 0 ? 0 : \
(a) == -1 ? (b) < -(max) : \
(a) > 0 ? \
((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : \
((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b)))
Definition at line 103 of file bits.h.
◆ SIGNED_INTEGER_MAX
◆ SIGNED_INTEGER_MIN
#define SIGNED_INTEGER_MIN |
( |
|
T | ) |
|
Value: ((sizeof(T) == sizeof(int8_t)) ? ((T)INT8_MIN) : \
((sizeof(T) == sizeof(int16_t)) ? ((T)INT16_MIN) : \
((sizeof(T) == sizeof(int32_t)) ? ((T)INT32_MIN) : \
((sizeof(T) == sizeof(int64_t)) ? ((T)INT64_MIN) : \
0))))
Definition at line 84 of file bits.h.
◆ SIGNED_INTEGER_TYPE_P
#define SIGNED_INTEGER_TYPE_P |
( |
|
T | ) |
(0 > ((T)0)-1) |
◆ swap16
#define swap16 ruby_swap16 |
◆ swap32
#define swap32 ruby_swap32 |
◆ swap64
#define swap64 ruby_swap64 |
◆ UNSIGNED_INTEGER_MAX
#define UNSIGNED_INTEGER_MAX |
( |
|
T | ) |
((T)~(T)0) |