root/lib/stdckdint.in.h

/* [<][>][^][v][top][bottom][index][help] */
     1 /* stdckdint.h -- checked integer arithmetic
     2 
     3    Copyright 2022-2023 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 */

/* [<][>][^][v][top][bottom][index][help] */