(root)/
gcc-13.2.0/
gcc/
ginclude/
stdint-gcc.h
       1  /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
       2  
       3  This file is part of GCC.
       4  
       5  GCC is free software; you can redistribute it and/or modify
       6  it under the terms of the GNU General Public License as published by
       7  the Free Software Foundation; either version 3, or (at your option)
       8  any later version.
       9  
      10  GCC 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 General Public License for more details.
      14  
      15  Under Section 7 of GPL version 3, you are granted additional
      16  permissions described in the GCC Runtime Library Exception, version
      17  3.1, as published by the Free Software Foundation.
      18  
      19  You should have received a copy of the GNU General Public License and
      20  a copy of the GCC Runtime Library Exception along with this program;
      21  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      22  <http://www.gnu.org/licenses/>.  */
      23  
      24  /*
      25   * ISO C Standard:  7.18  Integer types  <stdint.h>
      26   */
      27  
      28  #ifndef _GCC_STDINT_H
      29  #define _GCC_STDINT_H
      30  
      31  /* 7.8.1.1 Exact-width integer types */
      32  
      33  #ifdef __INT8_TYPE__
      34  typedef __INT8_TYPE__ int8_t;
      35  #endif
      36  #ifdef __INT16_TYPE__
      37  typedef __INT16_TYPE__ int16_t;
      38  #endif
      39  #ifdef __INT32_TYPE__
      40  typedef __INT32_TYPE__ int32_t;
      41  #endif
      42  #ifdef __INT64_TYPE__
      43  typedef __INT64_TYPE__ int64_t;
      44  #endif
      45  #ifdef __UINT8_TYPE__
      46  typedef __UINT8_TYPE__ uint8_t;
      47  #endif
      48  #ifdef __UINT16_TYPE__
      49  typedef __UINT16_TYPE__ uint16_t;
      50  #endif
      51  #ifdef __UINT32_TYPE__
      52  typedef __UINT32_TYPE__ uint32_t;
      53  #endif
      54  #ifdef __UINT64_TYPE__
      55  typedef __UINT64_TYPE__ uint64_t;
      56  #endif
      57  
      58  /* 7.8.1.2 Minimum-width integer types */
      59  
      60  typedef __INT_LEAST8_TYPE__ int_least8_t;
      61  typedef __INT_LEAST16_TYPE__ int_least16_t;
      62  typedef __INT_LEAST32_TYPE__ int_least32_t;
      63  typedef __INT_LEAST64_TYPE__ int_least64_t;
      64  typedef __UINT_LEAST8_TYPE__ uint_least8_t;
      65  typedef __UINT_LEAST16_TYPE__ uint_least16_t;
      66  typedef __UINT_LEAST32_TYPE__ uint_least32_t;
      67  typedef __UINT_LEAST64_TYPE__ uint_least64_t;
      68  
      69  /* 7.8.1.3 Fastest minimum-width integer types */
      70  
      71  typedef __INT_FAST8_TYPE__ int_fast8_t;
      72  typedef __INT_FAST16_TYPE__ int_fast16_t;
      73  typedef __INT_FAST32_TYPE__ int_fast32_t;
      74  typedef __INT_FAST64_TYPE__ int_fast64_t;
      75  typedef __UINT_FAST8_TYPE__ uint_fast8_t;
      76  typedef __UINT_FAST16_TYPE__ uint_fast16_t;
      77  typedef __UINT_FAST32_TYPE__ uint_fast32_t;
      78  typedef __UINT_FAST64_TYPE__ uint_fast64_t;
      79  
      80  /* 7.8.1.4 Integer types capable of holding object pointers */
      81  
      82  #ifdef __INTPTR_TYPE__
      83  typedef __INTPTR_TYPE__ intptr_t;
      84  #endif
      85  #ifdef __UINTPTR_TYPE__
      86  typedef __UINTPTR_TYPE__ uintptr_t;
      87  #endif
      88  
      89  /* 7.8.1.5 Greatest-width integer types */
      90  
      91  typedef __INTMAX_TYPE__ intmax_t;
      92  typedef __UINTMAX_TYPE__ uintmax_t;
      93  
      94  #if (!defined __cplusplus || __cplusplus >= 201103L \
      95       || defined __STDC_LIMIT_MACROS)
      96  
      97  /* 7.18.2 Limits of specified-width integer types */
      98  
      99  #ifdef __INT8_MAX__
     100  # undef INT8_MAX
     101  # define INT8_MAX __INT8_MAX__
     102  # undef INT8_MIN
     103  # define INT8_MIN (-INT8_MAX - 1)
     104  #endif
     105  #ifdef __UINT8_MAX__
     106  # undef UINT8_MAX
     107  # define UINT8_MAX __UINT8_MAX__
     108  #endif
     109  #ifdef __INT16_MAX__
     110  # undef INT16_MAX
     111  # define INT16_MAX __INT16_MAX__
     112  # undef INT16_MIN
     113  # define INT16_MIN (-INT16_MAX - 1)
     114  #endif
     115  #ifdef __UINT16_MAX__
     116  # undef UINT16_MAX
     117  # define UINT16_MAX __UINT16_MAX__
     118  #endif
     119  #ifdef __INT32_MAX__
     120  # undef INT32_MAX
     121  # define INT32_MAX __INT32_MAX__
     122  # undef INT32_MIN
     123  # define INT32_MIN (-INT32_MAX - 1)
     124  #endif
     125  #ifdef __UINT32_MAX__
     126  # undef UINT32_MAX
     127  # define UINT32_MAX __UINT32_MAX__
     128  #endif
     129  #ifdef __INT64_MAX__
     130  # undef INT64_MAX
     131  # define INT64_MAX __INT64_MAX__
     132  # undef INT64_MIN
     133  # define INT64_MIN (-INT64_MAX - 1)
     134  #endif
     135  #ifdef __UINT64_MAX__
     136  # undef UINT64_MAX
     137  # define UINT64_MAX __UINT64_MAX__
     138  #endif
     139  
     140  #undef INT_LEAST8_MAX
     141  #define INT_LEAST8_MAX __INT_LEAST8_MAX__
     142  #undef INT_LEAST8_MIN
     143  #define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1)
     144  #undef UINT_LEAST8_MAX
     145  #define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
     146  #undef INT_LEAST16_MAX
     147  #define INT_LEAST16_MAX __INT_LEAST16_MAX__
     148  #undef INT_LEAST16_MIN
     149  #define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1)
     150  #undef UINT_LEAST16_MAX
     151  #define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
     152  #undef INT_LEAST32_MAX
     153  #define INT_LEAST32_MAX __INT_LEAST32_MAX__
     154  #undef INT_LEAST32_MIN
     155  #define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
     156  #undef UINT_LEAST32_MAX
     157  #define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
     158  #undef INT_LEAST64_MAX
     159  #define INT_LEAST64_MAX __INT_LEAST64_MAX__
     160  #undef INT_LEAST64_MIN
     161  #define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1)
     162  #undef UINT_LEAST64_MAX
     163  #define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
     164  
     165  #undef INT_FAST8_MAX
     166  #define INT_FAST8_MAX __INT_FAST8_MAX__
     167  #undef INT_FAST8_MIN
     168  #define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
     169  #undef UINT_FAST8_MAX
     170  #define UINT_FAST8_MAX __UINT_FAST8_MAX__
     171  #undef INT_FAST16_MAX
     172  #define INT_FAST16_MAX __INT_FAST16_MAX__
     173  #undef INT_FAST16_MIN
     174  #define INT_FAST16_MIN (-INT_FAST16_MAX - 1)
     175  #undef UINT_FAST16_MAX
     176  #define UINT_FAST16_MAX __UINT_FAST16_MAX__
     177  #undef INT_FAST32_MAX
     178  #define INT_FAST32_MAX __INT_FAST32_MAX__
     179  #undef INT_FAST32_MIN
     180  #define INT_FAST32_MIN (-INT_FAST32_MAX - 1)
     181  #undef UINT_FAST32_MAX
     182  #define UINT_FAST32_MAX __UINT_FAST32_MAX__
     183  #undef INT_FAST64_MAX
     184  #define INT_FAST64_MAX __INT_FAST64_MAX__
     185  #undef INT_FAST64_MIN
     186  #define INT_FAST64_MIN (-INT_FAST64_MAX - 1)
     187  #undef UINT_FAST64_MAX
     188  #define UINT_FAST64_MAX __UINT_FAST64_MAX__
     189  
     190  #ifdef __INTPTR_MAX__
     191  # undef INTPTR_MAX
     192  # define INTPTR_MAX __INTPTR_MAX__
     193  # undef INTPTR_MIN
     194  # define INTPTR_MIN (-INTPTR_MAX - 1)
     195  #endif
     196  #ifdef __UINTPTR_MAX__
     197  # undef UINTPTR_MAX
     198  # define UINTPTR_MAX __UINTPTR_MAX__
     199  #endif
     200  
     201  #undef INTMAX_MAX
     202  #define INTMAX_MAX __INTMAX_MAX__
     203  #undef INTMAX_MIN
     204  #define INTMAX_MIN (-INTMAX_MAX - 1)
     205  #undef UINTMAX_MAX
     206  #define UINTMAX_MAX __UINTMAX_MAX__
     207  
     208  /* 7.18.3 Limits of other integer types */
     209  
     210  #undef PTRDIFF_MAX
     211  #define PTRDIFF_MAX __PTRDIFF_MAX__
     212  #undef PTRDIFF_MIN
     213  #define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
     214  
     215  #undef SIG_ATOMIC_MAX
     216  #define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
     217  #undef SIG_ATOMIC_MIN
     218  #define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
     219  
     220  #undef SIZE_MAX
     221  #define SIZE_MAX __SIZE_MAX__
     222  
     223  #undef WCHAR_MAX
     224  #define WCHAR_MAX __WCHAR_MAX__
     225  #undef WCHAR_MIN
     226  #define WCHAR_MIN __WCHAR_MIN__
     227  
     228  #undef WINT_MAX
     229  #define WINT_MAX __WINT_MAX__
     230  #undef WINT_MIN
     231  #define WINT_MIN __WINT_MIN__
     232  
     233  #endif /* (!defined __cplusplus || __cplusplus >= 201103L
     234  	   || defined __STDC_LIMIT_MACROS)  */
     235  
     236  #if (!defined __cplusplus || __cplusplus >= 201103L \
     237       || defined __STDC_CONSTANT_MACROS)
     238  
     239  #undef INT8_C
     240  #define INT8_C(c) __INT8_C(c)
     241  #undef INT16_C
     242  #define INT16_C(c) __INT16_C(c)
     243  #undef INT32_C
     244  #define INT32_C(c) __INT32_C(c)
     245  #undef INT64_C
     246  #define INT64_C(c) __INT64_C(c)
     247  #undef UINT8_C
     248  #define UINT8_C(c) __UINT8_C(c)
     249  #undef UINT16_C
     250  #define UINT16_C(c) __UINT16_C(c)
     251  #undef UINT32_C
     252  #define UINT32_C(c) __UINT32_C(c)
     253  #undef UINT64_C
     254  #define UINT64_C(c) __UINT64_C(c)
     255  #undef INTMAX_C
     256  #define INTMAX_C(c) __INTMAX_C(c)
     257  #undef UINTMAX_C
     258  #define UINTMAX_C(c) __UINTMAX_C(c)
     259  
     260  #endif /* (!defined __cplusplus || __cplusplus >= 201103L
     261  	   || defined __STDC_CONSTANT_MACROS) */
     262  
     263  #if (defined __STDC_WANT_IEC_60559_BFP_EXT__ \
     264       || (defined (__STDC_VERSION__) && __STDC_VERSION__ > 201710L))
     265  /* TS 18661-1 / C2X widths of integer types.  */
     266  
     267  #ifdef __INT8_TYPE__
     268  # undef INT8_WIDTH
     269  # define INT8_WIDTH 8
     270  #endif
     271  #ifdef __UINT8_TYPE__
     272  # undef UINT8_WIDTH
     273  # define UINT8_WIDTH 8
     274  #endif
     275  #ifdef __INT16_TYPE__
     276  # undef INT16_WIDTH
     277  # define INT16_WIDTH 16
     278  #endif
     279  #ifdef __UINT16_TYPE__
     280  # undef UINT16_WIDTH
     281  # define UINT16_WIDTH 16
     282  #endif
     283  #ifdef __INT32_TYPE__
     284  # undef INT32_WIDTH
     285  # define INT32_WIDTH 32
     286  #endif
     287  #ifdef __UINT32_TYPE__
     288  # undef UINT32_WIDTH
     289  # define UINT32_WIDTH 32
     290  #endif
     291  #ifdef __INT64_TYPE__
     292  # undef INT64_WIDTH
     293  # define INT64_WIDTH 64
     294  #endif
     295  #ifdef __UINT64_TYPE__
     296  # undef UINT64_WIDTH
     297  # define UINT64_WIDTH 64
     298  #endif
     299  
     300  #undef INT_LEAST8_WIDTH
     301  #define INT_LEAST8_WIDTH __INT_LEAST8_WIDTH__
     302  #undef UINT_LEAST8_WIDTH
     303  #define UINT_LEAST8_WIDTH __INT_LEAST8_WIDTH__
     304  #undef INT_LEAST16_WIDTH
     305  #define INT_LEAST16_WIDTH __INT_LEAST16_WIDTH__
     306  #undef UINT_LEAST16_WIDTH
     307  #define UINT_LEAST16_WIDTH __INT_LEAST16_WIDTH__
     308  #undef INT_LEAST32_WIDTH
     309  #define INT_LEAST32_WIDTH __INT_LEAST32_WIDTH__
     310  #undef UINT_LEAST32_WIDTH
     311  #define UINT_LEAST32_WIDTH __INT_LEAST32_WIDTH__
     312  #undef INT_LEAST64_WIDTH
     313  #define INT_LEAST64_WIDTH __INT_LEAST64_WIDTH__
     314  #undef UINT_LEAST64_WIDTH
     315  #define UINT_LEAST64_WIDTH __INT_LEAST64_WIDTH__
     316  
     317  #undef INT_FAST8_WIDTH
     318  #define INT_FAST8_WIDTH __INT_FAST8_WIDTH__
     319  #undef UINT_FAST8_WIDTH
     320  #define UINT_FAST8_WIDTH __INT_FAST8_WIDTH__
     321  #undef INT_FAST16_WIDTH
     322  #define INT_FAST16_WIDTH __INT_FAST16_WIDTH__
     323  #undef UINT_FAST16_WIDTH
     324  #define UINT_FAST16_WIDTH __INT_FAST16_WIDTH__
     325  #undef INT_FAST32_WIDTH
     326  #define INT_FAST32_WIDTH __INT_FAST32_WIDTH__
     327  #undef UINT_FAST32_WIDTH
     328  #define UINT_FAST32_WIDTH __INT_FAST32_WIDTH__
     329  #undef INT_FAST64_WIDTH
     330  #define INT_FAST64_WIDTH __INT_FAST64_WIDTH__
     331  #undef UINT_FAST64_WIDTH
     332  #define UINT_FAST64_WIDTH __INT_FAST64_WIDTH__
     333  
     334  #ifdef __INTPTR_TYPE__
     335  # undef INTPTR_WIDTH
     336  # define INTPTR_WIDTH __INTPTR_WIDTH__
     337  #endif
     338  #ifdef __UINTPTR_TYPE__
     339  # undef UINTPTR_WIDTH
     340  # define UINTPTR_WIDTH __INTPTR_WIDTH__
     341  #endif
     342  
     343  #undef INTMAX_WIDTH
     344  #define INTMAX_WIDTH __INTMAX_WIDTH__
     345  #undef UINTMAX_WIDTH
     346  #define UINTMAX_WIDTH __INTMAX_WIDTH__
     347  
     348  #undef PTRDIFF_WIDTH
     349  #define PTRDIFF_WIDTH __PTRDIFF_WIDTH__
     350  
     351  #undef SIG_ATOMIC_WIDTH
     352  #define SIG_ATOMIC_WIDTH __SIG_ATOMIC_WIDTH__
     353  
     354  #undef SIZE_WIDTH
     355  #define SIZE_WIDTH __SIZE_WIDTH__
     356  
     357  #undef WCHAR_WIDTH
     358  #define WCHAR_WIDTH __WCHAR_WIDTH__
     359  
     360  #undef WINT_WIDTH
     361  #define WINT_WIDTH __WINT_WIDTH__
     362  
     363  #endif
     364  
     365  #if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
     366  #define __STDC_VERSION_STDINT_H__	202311L
     367  #endif
     368  
     369  #endif /* _GCC_STDINT_H */