|
35 | 35 | #define __cmp(op, x, y) ((x) __cmp_op_##op (y) ? (x) : (y))
|
36 | 36 |
|
37 | 37 | #define __cmp_once(op, x, y, unique_x, unique_y) ({ \
|
38 |
| - typeof(x) unique_x = (x); \ |
39 |
| - typeof(y) unique_y = (y); \ |
40 |
| - static_assert(__types_ok(x, y), \ |
41 |
| - #op "(" #x ", " #y ") signedness error, fix types or consider u" #op "() before " #op "_t()"); \ |
42 |
| - __cmp(op, unique_x, unique_y); }) |
| 38 | + typeof(x) unique_x = (x); \ |
| 39 | + typeof(y) unique_y = (y); \ |
| 40 | + static_assert(__types_ok(x, y), \ |
| 41 | + #op "(" #x ", " #y ") signedness error, fix types or consider u" #op "() before " #op "_t()"); \ |
| 42 | + __cmp(op, unique_x, unique_y); }) |
43 | 43 |
|
44 | 44 | #define __careful_cmp(op, x, y) \
|
45 | 45 | __builtin_choose_expr(__is_constexpr((x) - (y)), \
|
|
49 | 49 | #define __clamp(val, lo, hi) \
|
50 | 50 | ((val) >= (hi) ? (hi) : ((val) <= (lo) ? (lo) : (val)))
|
51 | 51 |
|
52 |
| -#define __clamp_once(val, lo, hi, unique_val, unique_lo, unique_hi) ({ \ |
53 |
| - typeof(val) unique_val = (val); \ |
54 |
| - typeof(lo) unique_lo = (lo); \ |
55 |
| - typeof(hi) unique_hi = (hi); \ |
56 |
| - static_assert(__builtin_choose_expr(__is_constexpr((lo) > (hi)), \ |
57 |
| - (lo) <= (hi), true), \ |
58 |
| - "clamp() low limit " #lo " greater than high limit " #hi); \ |
59 |
| - static_assert(__types_ok(val, lo), "clamp() 'lo' signedness error"); \ |
60 |
| - static_assert(__types_ok(val, hi), "clamp() 'hi' signedness error"); \ |
61 |
| - __clamp(unique_val, unique_lo, unique_hi); }) |
| 52 | +#define __clamp_once(val, lo, hi, unique_val, unique_lo, unique_hi) ({ \ |
| 53 | + typeof(val) unique_val = (val); \ |
| 54 | + typeof(lo) unique_lo = (lo); \ |
| 55 | + typeof(hi) unique_hi = (hi); \ |
| 56 | + static_assert(__builtin_choose_expr(__is_constexpr((lo) > (hi)), \ |
| 57 | + (lo) <= (hi), true), \ |
| 58 | + "clamp() low limit " #lo " greater than high limit " #hi); \ |
| 59 | + static_assert(__types_ok(val, lo), "clamp() 'lo' signedness error"); \ |
| 60 | + static_assert(__types_ok(val, hi), "clamp() 'hi' signedness error"); \ |
| 61 | + __clamp(unique_val, unique_lo, unique_hi); }) |
62 | 62 |
|
63 | 63 | #define __careful_clamp(val, lo, hi) ({ \
|
64 | 64 | __builtin_choose_expr(__is_constexpr((val) - (lo) + (hi)), \
|
|
0 commit comments