/* * Copyright (c) 2000,2001 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * The contents of this file constitute Original Code as defined in and * are subject to the Apple Public Source License Version 1.1 (the * "License"). You may not use this file except in compliance with the * License. Please obtain a copy of the License at * http://www.apple.com/publicsource and read it before using this file. * * This Original Code and all software distributed under the License are * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the * License for the specific language governing rights and limitations * under the License. * * @APPLE_LICENSE_HEADER_END@ */ /* * -- Standard C header, defined in ISO/IEC 9899:1999 * (aka "C99"), section 7.8. This defines format string conversion * specifiers suitable for use within arguments to fprintf and fscanf * and their ilk. */ #if !defined(_INTTYPES_H_) #define _INTTYPES_H_ #include #if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) /* Translator is not ISO/IEC 9899:1999-compliant. */ #if !defined(restrict) #define restrict #define __RESTRICT_KEYWORD_DEFINED__ #endif #endif /* "C++ implementations should define these macros only when * __STDC_FORMAT_MACROS is defined before is included." */ #if (! defined(__cplusplus)) || defined(__STDC_FORMAT_MACROS) #undef __PRI_8_LENGTH_MODIFIER__ #undef __PRI_64_LENGTH_MODIFIER__ #undef __SCN_8_LENGTH_MODIFIER__ #undef __SCN_64_LENGTH_MODIFIER__ #if defined(__STDC_LIBRARY_SUPPORTED__) #define __PRI_8_LENGTH_MODIFIER__ "hh" #define __PRI_64_LENGTH_MODIFIER__ "ll" #define __SCN_8_LENGTH_MODIFIER__ "hh" #define __SCN_64_LENGTH_MODIFIER__ "ll" #else #define __PRI_8_LENGTH_MODIFIER__ "" /* none */ #define __PRI_64_LENGTH_MODIFIER__ "q" #endif #define PRId8 __PRI_8_LENGTH_MODIFIER__ "d" #define PRIi8 __PRI_8_LENGTH_MODIFIER__ "i" #define PRIo8 __PRI_8_LENGTH_MODIFIER__ "o" #define PRIu8 __PRI_8_LENGTH_MODIFIER__ "u" #define PRIx8 __PRI_8_LENGTH_MODIFIER__ "x" #define PRIX8 __PRI_8_LENGTH_MODIFIER__ "X" #define PRId16 "hd" #define PRIi16 "hi" #define PRIo16 "ho" #define PRIu16 "hu" #define PRIx16 "hx" #define PRIX16 "hX" #define PRId32 "ld" #define PRIi32 "li" #define PRIo32 "lo" #define PRIu32 "lu" #define PRIx32 "lx" #define PRIX32 "lX" #define PRId64 __PRI_64_LENGTH_MODIFIER__ "d" #define PRIi64 __PRI_64_LENGTH_MODIFIER__ "i" #define PRIo64 __PRI_64_LENGTH_MODIFIER__ "o" #define PRIu64 __PRI_64_LENGTH_MODIFIER__ "u" #define PRIx64 __PRI_64_LENGTH_MODIFIER__ "x" #define PRIX64 __PRI_64_LENGTH_MODIFIER__ "X" #define PRIdLEAST8 PRId8 #define PRIiLEAST8 PRIi8 #define PRIoLEAST8 PRIo8 #define PRIuLEAST8 PRIu8 #define PRIxLEAST8 PRIx8 #define PRIXLEAST8 PRIX8 #define PRIdLEAST16 PRId16 #define PRIiLEAST16 PRIi16 #define PRIoLEAST16 PRIo16 #define PRIuLEAST16 PRIu16 #define PRIxLEAST16 PRIx16 #define PRIXLEAST16 PRIX16 #define PRIdLEAST32 PRId32 #define PRIiLEAST32 PRIi32 #define PRIoLEAST32 PRIo32 #define PRIuLEAST32 PRIu32 #define PRIxLEAST32 PRIx32 #define PRIXLEAST32 PRIX32 #define PRIdLEAST64 PRId64 #define PRIiLEAST64 PRIi64 #define PRIoLEAST64 PRIo64 #define PRIuLEAST64 PRIu64 #define PRIxLEAST64 PRIx64 #define PRIXLEAST64 PRIX64 #define PRIdFAST8 PRId32 #define PRIiFAST8 PRIi32 #define PRIoFAST8 PRIo32 #define PRIuFAST8 PRIu32 #define PRIxFAST8 PRIx32 #define PRIXFAST8 PRIX32 #define PRIdFAST16 PRId32 #define PRIiFAST16 PRIi32 #define PRIoFAST16 PRIo32 #define PRIuFAST16 PRIu32 #define PRIxFAST16 PRIx32 #define PRIXFAST16 PRIX32 #define PRIdFAST32 PRId32 #define PRIiFAST32 PRIi32 #define PRIoFAST32 PRIo32 #define PRIuFAST32 PRIu32 #define PRIxFAST32 PRIx32 #define PRIXFAST32 PRIX32 #define PRIdFAST64 PRId64 #define PRIiFAST64 PRIi64 #define PRIoFAST64 PRIo64 #define PRIuFAST64 PRIu64 #define PRIxFAST64 PRIx64 #define PRIXFAST64 PRIX64 #define PRIdPTR PRId32 #define PRIiPTR PRIi32 #define PRIoPTR PRIo32 #define PRIuPTR PRIu32 #define PRIxPTR PRIx32 #define PRIXPTR PRIX32 #define PRIdMAX PRId64 #define PRIiMAX PRIi64 #define PRIoMAX PRIo64 #define PRIuMAX PRIu64 #define PRIxMAX PRIx64 #define PRIXMAX PRIX64 #if defined(__SCN_8_LENGTH_MODIFIER__) #define SCNd8 __SCN_8_LENGTH_MODIFIER__ "d" #define SCNi8 __SCN_8_LENGTH_MODIFIER__ "i" #define SCNo8 __SCN_8_LENGTH_MODIFIER__ "o" #define SCNu8 __SCN_8_LENGTH_MODIFIER__ "u" #define SCNx8 __SCN_8_LENGTH_MODIFIER__ "x" #endif #define SCNd16 "hd" #define SCNi16 "hi" #define SCNo16 "ho" #define SCNu16 "hu" #define SCNx16 "hx" #define SCNd32 "ld" #define SCNi32 "li" #define SCNo32 "lo" #define SCNu32 "lu" #define SCNx32 "lx" #if defined(__SCN_64_LENGTH_MODIFIER__) #define SCNd64 __SCN_64_LENGTH_MODIFIER__ "d" #define SCNi64 __SCN_64_LENGTH_MODIFIER__ "i" #define SCNo64 __SCN_64_LENGTH_MODIFIER__ "o" #define SCNu64 __SCN_64_LENGTH_MODIFIER__ "u" #define SCNx64 __SCN_64_LENGTH_MODIFIER__ "x" #endif #if defined(__SCN_8_LENGTH_MODIFIER__) #define SCNdLEAST8 SCNd8 #define SCNiLEAST8 SCNi8 #define SCNoLEAST8 SCNo8 #define SCNuLEAST8 SCNu8 #define SCNxLEAST8 SCNx8 #endif #define SCNdLEAST16 SCNd16 #define SCNiLEAST16 SCNi16 #define SCNoLEAST16 SCNo16 #define SCNuLEAST16 SCNu16 #define SCNxLEAST16 SCNx16 #define SCNdLEAST32 SCNd32 #define SCNiLEAST32 SCNi32 #define SCNoLEAST32 SCNo32 #define SCNuLEAST32 SCNu32 #define SCNxLEAST32 SCNx32 #if defined(__SCN_64_LENGTH_MODIFIER__) #define SCNdLEAST64 SCNd64 #define SCNiLEAST64 SCNi64 #define SCNoLEAST64 SCNo64 #define SCNuLEAST64 SCNu64 #define SCNxLEAST64 SCNx64 #endif #define SCNdFAST8 SCNd32 #define SCNiFAST8 SCNi32 #define SCNoFAST8 SCNo32 #define SCNuFAST8 SCNu32 #define SCNxFAST8 SCNx32 #define SCNdFAST16 SCNd32 #define SCNiFAST16 SCNi32 #define SCNoFAST16 SCNo32 #define SCNuFAST16 SCNu32 #define SCNxFAST16 SCNx32 #define SCNdFAST32 SCNd32 #define SCNiFAST32 SCNi32 #define SCNoFAST32 SCNo32 #define SCNuFAST32 SCNu32 #define SCNxFAST32 SCNx32 #if defined(__SCN_64_LENGTH_MODIFIER__) #define SCNdFAST64 SCNd64 #define SCNiFAST64 SCNi64 #define SCNoFAST64 SCNo64 #define SCNuFAST64 SCNu64 #define SCNxFAST64 SCNx64 #endif #define SCNdPTR SCNd32 #define SCNiPTR SCNi32 #define SCNoPTR SCNo32 #define SCNuPTR SCNu32 #define SCNxPTR SCNx32 #if defined(__SCN_64_LENGTH_MODIFIER__) #define SCNdMAX SCNd64 #define SCNiMAX SCNi64 #define SCNoMAX SCNo64 #define SCNuMAX SCNu64 #define SCNxMAX SCNx64 #endif #endif /* if C++, then __STDC_FORMAT_MACROS enables the above macros */ #if defined(__STDC_LIBRARY_SUPPORTED__) /* 7.8.2.1 */ extern intmax_t imaxabs(intmax_t j); /* 7.8.2.2 */ typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom); /* 7.8.2.3 */ extern intmax_t strtoimax(const char * restrict nptr, char ** restrict endptr, int base); extern uintmax_t strtoumax(const char * restrict nptr, char ** restrict endptr, int base); /* 7.8.2.4 */ extern intmax_t wcstoimax(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base); extern uintmax_t wcstoumax(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base); #endif /* No need to #undef the __*_{8,64}_LENGTH_MODIFIER__ macros; in fact, you can't #undef them, because later uses of any of their dependents will *not* then do the intended substitution. Expansion of a #define like this one: #define x IDENT y uses the cpp value of IDENT at the location where x is *expanded*, not where it is #defined. */ #if defined(__RESTRICT_KEYWORD_DEFINED__) #undef restrict #undef __RESTRICT_KEYWORD_DEFINED__ #endif #endif /* !_INTTYPES_H_ */