1/* 2 * Copyright (c) 2000-2004, 2013 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * <inttypes.h> -- Standard C header, defined in ISO/IEC 9899:1999 26 * (aka "C99"), section 7.8. This defines format string conversion 27 * specifiers suitable for use within arguments to fprintf and fscanf 28 * and their ilk. 29 */ 30 31#if !defined(_INTTYPES_H_) 32#define _INTTYPES_H_ 33 34# define __PRI_8_LENGTH_MODIFIER__ "hh" 35# define __PRI_64_LENGTH_MODIFIER__ "ll" 36# define __SCN_64_LENGTH_MODIFIER__ "ll" 37# define __PRI_MAX_LENGTH_MODIFIER__ "j" 38# define __SCN_MAX_LENGTH_MODIFIER__ "j" 39 40# define PRId8 __PRI_8_LENGTH_MODIFIER__ "d" 41# define PRIi8 __PRI_8_LENGTH_MODIFIER__ "i" 42# define PRIo8 __PRI_8_LENGTH_MODIFIER__ "o" 43# define PRIu8 __PRI_8_LENGTH_MODIFIER__ "u" 44# define PRIx8 __PRI_8_LENGTH_MODIFIER__ "x" 45# define PRIX8 __PRI_8_LENGTH_MODIFIER__ "X" 46 47# define PRId16 "hd" 48# define PRIi16 "hi" 49# define PRIo16 "ho" 50# define PRIu16 "hu" 51# define PRIx16 "hx" 52# define PRIX16 "hX" 53 54# define PRId32 "d" 55# define PRIi32 "i" 56# define PRIo32 "o" 57# define PRIu32 "u" 58# define PRIx32 "x" 59# define PRIX32 "X" 60 61# define PRId64 __PRI_64_LENGTH_MODIFIER__ "d" 62# define PRIi64 __PRI_64_LENGTH_MODIFIER__ "i" 63# define PRIo64 __PRI_64_LENGTH_MODIFIER__ "o" 64# define PRIu64 __PRI_64_LENGTH_MODIFIER__ "u" 65# define PRIx64 __PRI_64_LENGTH_MODIFIER__ "x" 66# define PRIX64 __PRI_64_LENGTH_MODIFIER__ "X" 67 68# define PRIdLEAST8 PRId8 69# define PRIiLEAST8 PRIi8 70# define PRIoLEAST8 PRIo8 71# define PRIuLEAST8 PRIu8 72# define PRIxLEAST8 PRIx8 73# define PRIXLEAST8 PRIX8 74 75# define PRIdLEAST16 PRId16 76# define PRIiLEAST16 PRIi16 77# define PRIoLEAST16 PRIo16 78# define PRIuLEAST16 PRIu16 79# define PRIxLEAST16 PRIx16 80# define PRIXLEAST16 PRIX16 81 82# define PRIdLEAST32 PRId32 83# define PRIiLEAST32 PRIi32 84# define PRIoLEAST32 PRIo32 85# define PRIuLEAST32 PRIu32 86# define PRIxLEAST32 PRIx32 87# define PRIXLEAST32 PRIX32 88 89# define PRIdLEAST64 PRId64 90# define PRIiLEAST64 PRIi64 91# define PRIoLEAST64 PRIo64 92# define PRIuLEAST64 PRIu64 93# define PRIxLEAST64 PRIx64 94# define PRIXLEAST64 PRIX64 95 96# define PRIdFAST8 PRId8 97# define PRIiFAST8 PRIi8 98# define PRIoFAST8 PRIo8 99# define PRIuFAST8 PRIu8 100# define PRIxFAST8 PRIx8 101# define PRIXFAST8 PRIX8 102 103# define PRIdFAST16 PRId16 104# define PRIiFAST16 PRIi16 105# define PRIoFAST16 PRIo16 106# define PRIuFAST16 PRIu16 107# define PRIxFAST16 PRIx16 108# define PRIXFAST16 PRIX16 109 110# define PRIdFAST32 PRId32 111# define PRIiFAST32 PRIi32 112# define PRIoFAST32 PRIo32 113# define PRIuFAST32 PRIu32 114# define PRIxFAST32 PRIx32 115# define PRIXFAST32 PRIX32 116 117# define PRIdFAST64 PRId64 118# define PRIiFAST64 PRIi64 119# define PRIoFAST64 PRIo64 120# define PRIuFAST64 PRIu64 121# define PRIxFAST64 PRIx64 122# define PRIXFAST64 PRIX64 123 124/* int32_t is 'int', but intptr_t is 'long'. */ 125# define PRIdPTR "ld" 126# define PRIiPTR "li" 127# define PRIoPTR "lo" 128# define PRIuPTR "lu" 129# define PRIxPTR "lx" 130# define PRIXPTR "lX" 131 132# define PRIdMAX __PRI_MAX_LENGTH_MODIFIER__ "d" 133# define PRIiMAX __PRI_MAX_LENGTH_MODIFIER__ "i" 134# define PRIoMAX __PRI_MAX_LENGTH_MODIFIER__ "o" 135# define PRIuMAX __PRI_MAX_LENGTH_MODIFIER__ "u" 136# define PRIxMAX __PRI_MAX_LENGTH_MODIFIER__ "x" 137# define PRIXMAX __PRI_MAX_LENGTH_MODIFIER__ "X" 138 139# define SCNd8 __PRI_8_LENGTH_MODIFIER__ "d" 140# define SCNi8 __PRI_8_LENGTH_MODIFIER__ "i" 141# define SCNo8 __PRI_8_LENGTH_MODIFIER__ "o" 142# define SCNu8 __PRI_8_LENGTH_MODIFIER__ "u" 143# define SCNx8 __PRI_8_LENGTH_MODIFIER__ "x" 144 145# define SCNd16 "hd" 146# define SCNi16 "hi" 147# define SCNo16 "ho" 148# define SCNu16 "hu" 149# define SCNx16 "hx" 150 151# define SCNd32 "d" 152# define SCNi32 "i" 153# define SCNo32 "o" 154# define SCNu32 "u" 155# define SCNx32 "x" 156 157# define SCNd64 __SCN_64_LENGTH_MODIFIER__ "d" 158# define SCNi64 __SCN_64_LENGTH_MODIFIER__ "i" 159# define SCNo64 __SCN_64_LENGTH_MODIFIER__ "o" 160# define SCNu64 __SCN_64_LENGTH_MODIFIER__ "u" 161# define SCNx64 __SCN_64_LENGTH_MODIFIER__ "x" 162 163# define SCNdLEAST8 SCNd8 164# define SCNiLEAST8 SCNi8 165# define SCNoLEAST8 SCNo8 166# define SCNuLEAST8 SCNu8 167# define SCNxLEAST8 SCNx8 168 169# define SCNdLEAST16 SCNd16 170# define SCNiLEAST16 SCNi16 171# define SCNoLEAST16 SCNo16 172# define SCNuLEAST16 SCNu16 173# define SCNxLEAST16 SCNx16 174 175# define SCNdLEAST32 SCNd32 176# define SCNiLEAST32 SCNi32 177# define SCNoLEAST32 SCNo32 178# define SCNuLEAST32 SCNu32 179# define SCNxLEAST32 SCNx32 180 181# define SCNdLEAST64 SCNd64 182# define SCNiLEAST64 SCNi64 183# define SCNoLEAST64 SCNo64 184# define SCNuLEAST64 SCNu64 185# define SCNxLEAST64 SCNx64 186 187# define SCNdFAST8 SCNd8 188# define SCNiFAST8 SCNi8 189# define SCNoFAST8 SCNo8 190# define SCNuFAST8 SCNu8 191# define SCNxFAST8 SCNx8 192 193# define SCNdFAST16 SCNd16 194# define SCNiFAST16 SCNi16 195# define SCNoFAST16 SCNo16 196# define SCNuFAST16 SCNu16 197# define SCNxFAST16 SCNx16 198 199# define SCNdFAST32 SCNd32 200# define SCNiFAST32 SCNi32 201# define SCNoFAST32 SCNo32 202# define SCNuFAST32 SCNu32 203# define SCNxFAST32 SCNx32 204 205# define SCNdFAST64 SCNd64 206# define SCNiFAST64 SCNi64 207# define SCNoFAST64 SCNo64 208# define SCNuFAST64 SCNu64 209# define SCNxFAST64 SCNx64 210 211# define SCNdPTR "ld" 212# define SCNiPTR "li" 213# define SCNoPTR "lo" 214# define SCNuPTR "lu" 215# define SCNxPTR "lx" 216 217# define SCNdMAX __SCN_MAX_LENGTH_MODIFIER__ "d" 218# define SCNiMAX __SCN_MAX_LENGTH_MODIFIER__ "i" 219# define SCNoMAX __SCN_MAX_LENGTH_MODIFIER__ "o" 220# define SCNuMAX __SCN_MAX_LENGTH_MODIFIER__ "u" 221# define SCNxMAX __SCN_MAX_LENGTH_MODIFIER__ "x" 222 223#include <sys/cdefs.h> 224#include <Availability.h> 225 226#include <_types.h> 227#include <sys/_types/_wchar_t.h> 228 229#include <stdint.h> 230 231__BEGIN_DECLS 232 233/* 7.8.2.1 */ 234__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) 235extern intmax_t 236imaxabs(intmax_t j); 237 238/* 7.8.2.2 */ 239typedef struct { 240 intmax_t quot; 241 intmax_t rem; 242} imaxdiv_t; 243 244__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) 245extern imaxdiv_t 246imaxdiv(intmax_t __numer, intmax_t __denom); 247 248/* 7.8.2.3 */ 249__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) 250extern intmax_t 251strtoimax(const char * __restrict __nptr, 252 char ** __restrict __endptr, 253 int __base); 254 255__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) 256extern uintmax_t 257strtoumax(const char * __restrict __nptr, 258 char ** __restrict __endptr, 259 int __base); 260 261/* 7.8.2.4 */ 262__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) 263extern intmax_t 264wcstoimax(const wchar_t * __restrict __nptr, 265 wchar_t ** __restrict __endptr, 266 int __base); 267 268__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) 269extern uintmax_t 270wcstoumax(const wchar_t * __restrict __nptr, 271 wchar_t ** __restrict __endptr, 272 int __base); 273 274/* Poison the following routines if -fshort-wchar is set */ 275#if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU 276#pragma GCC poison wcstoimax wcstoumax 277#endif 278 279__END_DECLS 280 281#ifdef _USE_EXTENDED_LOCALES_ 282#include <xlocale/_inttypes.h> 283#endif /* _USE_EXTENDED_LOCALES_ */ 284 285/* 286 No need to #undef the __*_{8,64}_LENGTH_MODIFIER__ macros; 287 in fact, you can't #undef them, because later uses of any of 288 their dependents will *not* then do the intended substitution. 289 Expansion of a #define like this one: 290 291 #define x IDENT y 292 293 uses the cpp value of IDENT at the location where x is *expanded*, 294 not where it is #defined. 295*/ 296 297#endif /* !_INTTYPES_H_ */ 298