[3611] | 1 | /* stdckdint.h -- checked integer arithmetic
|
---|
| 2 |
|
---|
| 3 | Copyright 2022 Free Software Foundation, Inc.
|
---|
| 4 |
|
---|
| 5 | This program is free software: you can redistribute it and/or modify it
|
---|
| 6 | under the terms of the GNU Lesser General Public License as published
|
---|
| 7 | by the Free Software Foundation; either version 2.1 of the License, or
|
---|
| 8 | (at your option) any later version.
|
---|
| 9 |
|
---|
| 10 | This program is distributed in the hope that it will be useful,
|
---|
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
| 13 | GNU Lesser General Public License for more details.
|
---|
| 14 |
|
---|
| 15 | You should have received a copy of the GNU Lesser General Public License
|
---|
| 16 | along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
---|
| 17 |
|
---|
| 18 | #ifndef _GL_STDCKDINT_H
|
---|
| 19 | #define _GL_STDCKDINT_H
|
---|
| 20 |
|
---|
| 21 | #include "intprops-internal.h"
|
---|
| 22 |
|
---|
| 23 | /* Store into *R the low-order bits of A + B, A - B, A * B, respectively.
|
---|
| 24 | Return 1 if the result overflows, 0 otherwise.
|
---|
| 25 | A, B, and *R can have any integer type other than char, bool, a
|
---|
| 26 | bit-precise integer type, or an enumeration type.
|
---|
| 27 |
|
---|
| 28 | These are like the standard macros introduced in C23, except that
|
---|
| 29 | arguments should not have side effects. */
|
---|
| 30 |
|
---|
| 31 | #define ckd_add(r, a, b) ((bool) _GL_INT_ADD_WRAPV (a, b, r))
|
---|
| 32 | #define ckd_sub(r, a, b) ((bool) _GL_INT_SUBTRACT_WRAPV (a, b, r))
|
---|
| 33 | #define ckd_mul(r, a, b) ((bool) _GL_INT_MULTIPLY_WRAPV (a, b, r))
|
---|
| 34 |
|
---|
| 35 | #endif /* _GL_STDCKDINT_H */
|
---|