Split <inttypes.h> out of <cinttypes>.

llvm-svn: 249741
This commit is contained in:
Richard Smith 2015-10-08 20:38:53 +00:00
parent 33700e640c
commit 37df7a05c2
3 changed files with 537 additions and 5 deletions

View File

@ -246,10 +246,7 @@ uintmax_t wcstoumax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int
_LIBCPP_BEGIN_NAMESPACE_STD
using::imaxdiv_t;
#undef imaxabs
using::imaxabs;
#undef imaxdiv
using::imaxdiv;
using::strtoimax;
using::strtoumax;

250
libcxx/include/inttypes.h Normal file
View File

@ -0,0 +1,250 @@
// -*- C++ -*-
//===--------------------------- inttypes.h -------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_INTTYPES_H
#define _LIBCPP_INTTYPES_H
/*
inttypes.h synopsis
This entire header is C99 / C++0X
#include <stdint.h> // <cinttypes> includes <cstdint>
Macros:
PRId8
PRId16
PRId32
PRId64
PRIdLEAST8
PRIdLEAST16
PRIdLEAST32
PRIdLEAST64
PRIdFAST8
PRIdFAST16
PRIdFAST32
PRIdFAST64
PRIdMAX
PRIdPTR
PRIi8
PRIi16
PRIi32
PRIi64
PRIiLEAST8
PRIiLEAST16
PRIiLEAST32
PRIiLEAST64
PRIiFAST8
PRIiFAST16
PRIiFAST32
PRIiFAST64
PRIiMAX
PRIiPTR
PRIo8
PRIo16
PRIo32
PRIo64
PRIoLEAST8
PRIoLEAST16
PRIoLEAST32
PRIoLEAST64
PRIoFAST8
PRIoFAST16
PRIoFAST32
PRIoFAST64
PRIoMAX
PRIoPTR
PRIu8
PRIu16
PRIu32
PRIu64
PRIuLEAST8
PRIuLEAST16
PRIuLEAST32
PRIuLEAST64
PRIuFAST8
PRIuFAST16
PRIuFAST32
PRIuFAST64
PRIuMAX
PRIuPTR
PRIx8
PRIx16
PRIx32
PRIx64
PRIxLEAST8
PRIxLEAST16
PRIxLEAST32
PRIxLEAST64
PRIxFAST8
PRIxFAST16
PRIxFAST32
PRIxFAST64
PRIxMAX
PRIxPTR
PRIX8
PRIX16
PRIX32
PRIX64
PRIXLEAST8
PRIXLEAST16
PRIXLEAST32
PRIXLEAST64
PRIXFAST8
PRIXFAST16
PRIXFAST32
PRIXFAST64
PRIXMAX
PRIXPTR
SCNd8
SCNd16
SCNd32
SCNd64
SCNdLEAST8
SCNdLEAST16
SCNdLEAST32
SCNdLEAST64
SCNdFAST8
SCNdFAST16
SCNdFAST32
SCNdFAST64
SCNdMAX
SCNdPTR
SCNi8
SCNi16
SCNi32
SCNi64
SCNiLEAST8
SCNiLEAST16
SCNiLEAST32
SCNiLEAST64
SCNiFAST8
SCNiFAST16
SCNiFAST32
SCNiFAST64
SCNiMAX
SCNiPTR
SCNo8
SCNo16
SCNo32
SCNo64
SCNoLEAST8
SCNoLEAST16
SCNoLEAST32
SCNoLEAST64
SCNoFAST8
SCNoFAST16
SCNoFAST32
SCNoFAST64
SCNoMAX
SCNoPTR
SCNu8
SCNu16
SCNu32
SCNu64
SCNuLEAST8
SCNuLEAST16
SCNuLEAST32
SCNuLEAST64
SCNuFAST8
SCNuFAST16
SCNuFAST32
SCNuFAST64
SCNuMAX
SCNuPTR
SCNx8
SCNx16
SCNx32
SCNx64
SCNxLEAST8
SCNxLEAST16
SCNxLEAST32
SCNxLEAST64
SCNxFAST8
SCNxFAST16
SCNxFAST32
SCNxFAST64
SCNxMAX
SCNxPTR
Types:
imaxdiv_t
intmax_t imaxabs(intmax_t j);
imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
intmax_t strtoimax(const char* restrict nptr, char** restrict endptr, int base);
uintmax_t strtoumax(const char* restrict nptr, char** restrict endptr, int base);
intmax_t wcstoimax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
uintmax_t wcstoumax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
*/
#include <__config>
#include_next <inttypes.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif
#ifdef __cplusplus
#include <stdint.h>
#undef imaxabs
#undef imaxdiv
#endif
#endif // _LIBCPP_INTTYPES_H

View File

@ -12,6 +12,250 @@
#include <inttypes.h>
#include <type_traits>
#ifndef INT8_MIN
#error INT8_MIN not defined
#endif
#ifndef INT16_MIN
#error INT16_MIN not defined
#endif
#ifndef INT32_MIN
#error INT32_MIN not defined
#endif
#ifndef INT64_MIN
#error INT64_MIN not defined
#endif
#ifndef INT8_MAX
#error INT8_MAX not defined
#endif
#ifndef INT16_MAX
#error INT16_MAX not defined
#endif
#ifndef INT32_MAX
#error INT32_MAX not defined
#endif
#ifndef INT64_MAX
#error INT64_MAX not defined
#endif
#ifndef UINT8_MAX
#error UINT8_MAX not defined
#endif
#ifndef UINT16_MAX
#error UINT16_MAX not defined
#endif
#ifndef UINT32_MAX
#error UINT32_MAX not defined
#endif
#ifndef UINT64_MAX
#error UINT64_MAX not defined
#endif
#ifndef INT_LEAST8_MIN
#error INT_LEAST8_MIN not defined
#endif
#ifndef INT_LEAST16_MIN
#error INT_LEAST16_MIN not defined
#endif
#ifndef INT_LEAST32_MIN
#error INT_LEAST32_MIN not defined
#endif
#ifndef INT_LEAST64_MIN
#error INT_LEAST64_MIN not defined
#endif
#ifndef INT_LEAST8_MAX
#error INT_LEAST8_MAX not defined
#endif
#ifndef INT_LEAST16_MAX
#error INT_LEAST16_MAX not defined
#endif
#ifndef INT_LEAST32_MAX
#error INT_LEAST32_MAX not defined
#endif
#ifndef INT_LEAST64_MAX
#error INT_LEAST64_MAX not defined
#endif
#ifndef UINT_LEAST8_MAX
#error UINT_LEAST8_MAX not defined
#endif
#ifndef UINT_LEAST16_MAX
#error UINT_LEAST16_MAX not defined
#endif
#ifndef UINT_LEAST32_MAX
#error UINT_LEAST32_MAX not defined
#endif
#ifndef UINT_LEAST64_MAX
#error UINT_LEAST64_MAX not defined
#endif
#ifndef INT_FAST8_MIN
#error INT_FAST8_MIN not defined
#endif
#ifndef INT_FAST16_MIN
#error INT_FAST16_MIN not defined
#endif
#ifndef INT_FAST32_MIN
#error INT_FAST32_MIN not defined
#endif
#ifndef INT_FAST64_MIN
#error INT_FAST64_MIN not defined
#endif
#ifndef INT_FAST8_MAX
#error INT_FAST8_MAX not defined
#endif
#ifndef INT_FAST16_MAX
#error INT_FAST16_MAX not defined
#endif
#ifndef INT_FAST32_MAX
#error INT_FAST32_MAX not defined
#endif
#ifndef INT_FAST64_MAX
#error INT_FAST64_MAX not defined
#endif
#ifndef UINT_FAST8_MAX
#error UINT_FAST8_MAX not defined
#endif
#ifndef UINT_FAST16_MAX
#error UINT_FAST16_MAX not defined
#endif
#ifndef UINT_FAST32_MAX
#error UINT_FAST32_MAX not defined
#endif
#ifndef UINT_FAST64_MAX
#error UINT_FAST64_MAX not defined
#endif
#ifndef INTPTR_MIN
#error INTPTR_MIN not defined
#endif
#ifndef INTPTR_MAX
#error INTPTR_MAX not defined
#endif
#ifndef UINTPTR_MAX
#error UINTPTR_MAX not defined
#endif
#ifndef INTMAX_MIN
#error INTMAX_MIN not defined
#endif
#ifndef INTMAX_MAX
#error INTMAX_MAX not defined
#endif
#ifndef UINTMAX_MAX
#error UINTMAX_MAX not defined
#endif
#ifndef PTRDIFF_MIN
#error PTRDIFF_MIN not defined
#endif
#ifndef PTRDIFF_MAX
#error PTRDIFF_MAX not defined
#endif
#ifndef SIG_ATOMIC_MIN
#error SIG_ATOMIC_MIN not defined
#endif
#ifndef SIG_ATOMIC_MAX
#error SIG_ATOMIC_MAX not defined
#endif
#ifndef SIZE_MAX
#error SIZE_MAX not defined
#endif
#ifndef WCHAR_MIN
#error WCHAR_MIN not defined
#endif
#ifndef WCHAR_MAX
#error WCHAR_MAX not defined
#endif
#ifndef WINT_MIN
#error WINT_MIN not defined
#endif
#ifndef WINT_MAX
#error WINT_MAX not defined
#endif
#ifndef INT8_C
#error INT8_C not defined
#endif
#ifndef INT16_C
#error INT16_C not defined
#endif
#ifndef INT32_C
#error INT32_C not defined
#endif
#ifndef INT64_C
#error INT64_C not defined
#endif
#ifndef UINT8_C
#error UINT8_C not defined
#endif
#ifndef UINT16_C
#error UINT16_C not defined
#endif
#ifndef UINT32_C
#error UINT32_C not defined
#endif
#ifndef UINT64_C
#error UINT64_C not defined
#endif
#ifndef INTMAX_C
#error INTMAX_C not defined
#endif
#ifndef UINTMAX_C
#error UINTMAX_C not defined
#endif
#ifndef PRId8
#error PRId8 not defined
#endif
@ -631,8 +875,49 @@
int main()
{
{
imaxdiv_t i1 = {0};
((void)i1);
int8_t i1 = 0;
int16_t i2 = 0;
int32_t i3 = 0;
int64_t i4 = 0;
}
{
uint8_t i1 = 0;
uint16_t i2 = 0;
uint32_t i3 = 0;
uint64_t i4 = 0;
}
{
int_least8_t i1 = 0;
int_least16_t i2 = 0;
int_least32_t i3 = 0;
int_least64_t i4 = 0;
}
{
uint_least8_t i1 = 0;
uint_least16_t i2 = 0;
uint_least32_t i3 = 0;
uint_least64_t i4 = 0;
}
{
int_fast8_t i1 = 0;
int_fast16_t i2 = 0;
int_fast32_t i3 = 0;
int_fast64_t i4 = 0;
}
{
uint_fast8_t i1 = 0;
uint_fast16_t i2 = 0;
uint_fast32_t i3 = 0;
uint_fast64_t i4 = 0;
}
{
intptr_t i1 = 0;
uintptr_t i2 = 0;
intmax_t i3 = 0;
uintmax_t i4 = 0;
}
{
imaxdiv_t i1 = {0};
}
intmax_t i = 0;
static_assert((std::is_same<decltype(imaxabs(i)), intmax_t>::value), "");