1  // -*- C++ -*- compatibility header.
       2  
       3  // Copyright (C) 2007-2023 Free Software Foundation, Inc.
       4  //
       5  // This file is part of the GNU ISO C++ Library.  This library is free
       6  // software; you can redistribute it and/or modify it under the
       7  // terms of the GNU General Public License as published by the
       8  // Free Software Foundation; either version 3, or (at your option)
       9  // any later version.
      10  
      11  // This library is distributed in the hope that it will be useful,
      12  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14  // GNU General Public License for more details.
      15  
      16  // Under Section 7 of GPL version 3, you are granted additional
      17  // permissions described in the GCC Runtime Library Exception, version
      18  // 3.1, as published by the Free Software Foundation.
      19  
      20  // You should have received a copy of the GNU General Public License and
      21  // a copy of the GCC Runtime Library Exception along with this program;
      22  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      23  // <http://www.gnu.org/licenses/>.
      24  
      25  /** @file stdint.h
      26   *  This is a Standard C++ Library header.
      27   */
      28  
      29  #ifndef _GLIBCXX_STDINT_H
      30  #define _GLIBCXX_STDINT_H 1
      31  
      32  #pragma GCC system_header
      33  
      34  #include <bits/c++config.h>
      35  
      36  #if __cplusplus >= 201103L
      37  
      38  // For 8.22.1/1 (see C99, Notes 219, 220, 222)
      39  # if _GLIBCXX_HAVE_STDINT_H
      40  #  ifndef __STDC_LIMIT_MACROS
      41  #   define _UNDEF__STDC_LIMIT_MACROS
      42  #   define __STDC_LIMIT_MACROS
      43  #  endif
      44  #  ifndef __STDC_CONSTANT_MACROS
      45  #   define _UNDEF__STDC_CONSTANT_MACROS
      46  #   define __STDC_CONSTANT_MACROS
      47  #  endif
      48  #  include_next <stdint.h>
      49  #  ifdef _UNDEF__STDC_LIMIT_MACROS
      50  #   undef __STDC_LIMIT_MACROS
      51  #   undef _UNDEF__STDC_LIMIT_MACROS
      52  #  endif
      53  #  ifdef _UNDEF__STDC_CONSTANT_MACROS
      54  #   undef __STDC_CONSTANT_MACROS
      55  #   undef _UNDEF__STDC_CONSTANT_MACROS
      56  #  endif
      57  # endif
      58  
      59  #ifdef _GLIBCXX_USE_C99_STDINT_TR1
      60  
      61  namespace std
      62  {
      63    using ::int8_t;
      64    using ::int16_t;
      65    using ::int32_t;
      66    using ::int64_t;
      67  
      68    using ::int_fast8_t;
      69    using ::int_fast16_t;
      70    using ::int_fast32_t;
      71    using ::int_fast64_t;
      72  
      73    using ::int_least8_t;
      74    using ::int_least16_t;
      75    using ::int_least32_t;
      76    using ::int_least64_t;
      77  
      78    using ::intmax_t;
      79    using ::intptr_t;
      80    
      81    using ::uint8_t;
      82    using ::uint16_t;
      83    using ::uint32_t;
      84    using ::uint64_t;
      85  
      86    using ::uint_fast8_t;
      87    using ::uint_fast16_t;
      88    using ::uint_fast32_t;
      89    using ::uint_fast64_t;
      90  
      91    using ::uint_least8_t;
      92    using ::uint_least16_t;
      93    using ::uint_least32_t;
      94    using ::uint_least64_t;
      95  
      96    using ::uintmax_t;
      97    using ::uintptr_t;
      98  } // namespace
      99  
     100  #endif // _GLIBCXX_USE_C99_STDINT_TR1
     101  
     102  #else
     103  
     104  # if _GLIBCXX_HAVE_STDINT_H
     105  #  include_next <stdint.h>
     106  # endif
     107  
     108  #endif // C++11
     109  
     110  #endif // _GLIBCXX_STDINT_H