1*bcb514acSSimon Glass /* SPDX-License-Identifier: GPL-2.0+ */ 2*bcb514acSSimon Glass /* 3*bcb514acSSimon Glass * Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc. 4*bcb514acSSimon Glass * 5*bcb514acSSimon Glass * This file is taken from the GNU C Library v2.15, with the unimplemented 6*bcb514acSSimon Glass * functions removed and a few style fixes. 7*bcb514acSSimon Glass */ 8*bcb514acSSimon Glass 9*bcb514acSSimon Glass /* 10*bcb514acSSimon Glass * ISO C99: 7.8 Format conversion of integer types <inttypes.h> 11*bcb514acSSimon Glass */ 12*bcb514acSSimon Glass 13*bcb514acSSimon Glass #ifndef _INTTYPES_H 14*bcb514acSSimon Glass #define _INTTYPES_H 1 15*bcb514acSSimon Glass 16*bcb514acSSimon Glass #include <linux/compiler.h> 17*bcb514acSSimon Glass 18*bcb514acSSimon Glass /* Get a definition for wchar_t. But we must not define wchar_t itself. */ 19*bcb514acSSimon Glass #ifndef ____gwchar_t_defined 20*bcb514acSSimon Glass # ifdef __cplusplus 21*bcb514acSSimon Glass # define __gwchar_t wchar_t 22*bcb514acSSimon Glass # elif defined __WCHAR_TYPE__ 23*bcb514acSSimon Glass typedef __WCHAR_TYPE__ __gwchar_t; 24*bcb514acSSimon Glass # else 25*bcb514acSSimon Glass # define __need_wchar_t 26*bcb514acSSimon Glass # include <linux/stddef.h> 27*bcb514acSSimon Glass typedef wchar_t __gwchar_t; 28*bcb514acSSimon Glass # endif 29*bcb514acSSimon Glass # define ____gwchar_t_defined 1 30*bcb514acSSimon Glass #endif 31*bcb514acSSimon Glass 32*bcb514acSSimon Glass /* 33*bcb514acSSimon Glass * The ISO C99 standard specifies that these macros must only be defined if 34*bcb514acSSimon Glass * explicitly requested 35*bcb514acSSimon Glass */ 36*bcb514acSSimon Glass #if !defined __cplusplus || defined __STDC_FORMAT_MACROS 37*bcb514acSSimon Glass 38*bcb514acSSimon Glass /* linux/types.h always uses long long for 64-bit and long for uintptr_t */ 39*bcb514acSSimon Glass # define __PRI64_PREFIX "ll" 40*bcb514acSSimon Glass # define __PRIPTR_PREFIX "l" 41*bcb514acSSimon Glass 42*bcb514acSSimon Glass /* Macros for printing format specifiers. */ 43*bcb514acSSimon Glass 44*bcb514acSSimon Glass /* Decimal notation. */ 45*bcb514acSSimon Glass # define PRId8 "d" 46*bcb514acSSimon Glass # define PRId16 "d" 47*bcb514acSSimon Glass # define PRId32 "d" 48*bcb514acSSimon Glass # define PRId64 __PRI64_PREFIX "d" 49*bcb514acSSimon Glass 50*bcb514acSSimon Glass # define PRIdLEAST8 "d" 51*bcb514acSSimon Glass # define PRIdLEAST16 "d" 52*bcb514acSSimon Glass # define PRIdLEAST32 "d" 53*bcb514acSSimon Glass # define PRIdLEAST64 __PRI64_PREFIX "d" 54*bcb514acSSimon Glass 55*bcb514acSSimon Glass # define PRIdFAST8 "d" 56*bcb514acSSimon Glass # define PRIdFAST16 __PRIPTR_PREFIX "d" 57*bcb514acSSimon Glass # define PRIdFAST32 __PRIPTR_PREFIX "d" 58*bcb514acSSimon Glass # define PRIdFAST64 __PRI64_PREFIX "d" 59*bcb514acSSimon Glass 60*bcb514acSSimon Glass # define PRIi8 "i" 61*bcb514acSSimon Glass # define PRIi16 "i" 62*bcb514acSSimon Glass # define PRIi32 "i" 63*bcb514acSSimon Glass # define PRIi64 __PRI64_PREFIX "i" 64*bcb514acSSimon Glass 65*bcb514acSSimon Glass # define PRIiLEAST8 "i" 66*bcb514acSSimon Glass # define PRIiLEAST16 "i" 67*bcb514acSSimon Glass # define PRIiLEAST32 "i" 68*bcb514acSSimon Glass # define PRIiLEAST64 __PRI64_PREFIX "i" 69*bcb514acSSimon Glass 70*bcb514acSSimon Glass # define PRIiFAST8 "i" 71*bcb514acSSimon Glass # define PRIiFAST16 __PRIPTR_PREFIX "i" 72*bcb514acSSimon Glass # define PRIiFAST32 __PRIPTR_PREFIX "i" 73*bcb514acSSimon Glass # define PRIiFAST64 __PRI64_PREFIX "i" 74*bcb514acSSimon Glass 75*bcb514acSSimon Glass /* Octal notation. */ 76*bcb514acSSimon Glass # define PRIo8 "o" 77*bcb514acSSimon Glass # define PRIo16 "o" 78*bcb514acSSimon Glass # define PRIo32 "o" 79*bcb514acSSimon Glass # define PRIo64 __PRI64_PREFIX "o" 80*bcb514acSSimon Glass 81*bcb514acSSimon Glass # define PRIoLEAST8 "o" 82*bcb514acSSimon Glass # define PRIoLEAST16 "o" 83*bcb514acSSimon Glass # define PRIoLEAST32 "o" 84*bcb514acSSimon Glass # define PRIoLEAST64 __PRI64_PREFIX "o" 85*bcb514acSSimon Glass 86*bcb514acSSimon Glass # define PRIoFAST8 "o" 87*bcb514acSSimon Glass # define PRIoFAST16 __PRIPTR_PREFIX "o" 88*bcb514acSSimon Glass # define PRIoFAST32 __PRIPTR_PREFIX "o" 89*bcb514acSSimon Glass # define PRIoFAST64 __PRI64_PREFIX "o" 90*bcb514acSSimon Glass 91*bcb514acSSimon Glass /* Unsigned integers. */ 92*bcb514acSSimon Glass # define PRIu8 "u" 93*bcb514acSSimon Glass # define PRIu16 "u" 94*bcb514acSSimon Glass # define PRIu32 "u" 95*bcb514acSSimon Glass # define PRIu64 __PRI64_PREFIX "u" 96*bcb514acSSimon Glass 97*bcb514acSSimon Glass # define PRIuLEAST8 "u" 98*bcb514acSSimon Glass # define PRIuLEAST16 "u" 99*bcb514acSSimon Glass # define PRIuLEAST32 "u" 100*bcb514acSSimon Glass # define PRIuLEAST64 __PRI64_PREFIX "u" 101*bcb514acSSimon Glass 102*bcb514acSSimon Glass # define PRIuFAST8 "u" 103*bcb514acSSimon Glass # define PRIuFAST16 __PRIPTR_PREFIX "u" 104*bcb514acSSimon Glass # define PRIuFAST32 __PRIPTR_PREFIX "u" 105*bcb514acSSimon Glass # define PRIuFAST64 __PRI64_PREFIX "u" 106*bcb514acSSimon Glass 107*bcb514acSSimon Glass /* lowercase hexadecimal notation. */ 108*bcb514acSSimon Glass # define PRIx8 "x" 109*bcb514acSSimon Glass # define PRIx16 "x" 110*bcb514acSSimon Glass # define PRIx32 "x" 111*bcb514acSSimon Glass # define PRIx64 __PRI64_PREFIX "x" 112*bcb514acSSimon Glass 113*bcb514acSSimon Glass # define PRIxLEAST8 "x" 114*bcb514acSSimon Glass # define PRIxLEAST16 "x" 115*bcb514acSSimon Glass # define PRIxLEAST32 "x" 116*bcb514acSSimon Glass # define PRIxLEAST64 __PRI64_PREFIX "x" 117*bcb514acSSimon Glass 118*bcb514acSSimon Glass # define PRIxFAST8 "x" 119*bcb514acSSimon Glass # define PRIxFAST16 __PRIPTR_PREFIX "x" 120*bcb514acSSimon Glass # define PRIxFAST32 __PRIPTR_PREFIX "x" 121*bcb514acSSimon Glass # define PRIxFAST64 __PRI64_PREFIX "x" 122*bcb514acSSimon Glass 123*bcb514acSSimon Glass /* UPPERCASE hexadecimal notation. */ 124*bcb514acSSimon Glass # define PRIX8 "X" 125*bcb514acSSimon Glass # define PRIX16 "X" 126*bcb514acSSimon Glass # define PRIX32 "X" 127*bcb514acSSimon Glass # define PRIX64 __PRI64_PREFIX "X" 128*bcb514acSSimon Glass 129*bcb514acSSimon Glass # define PRIXLEAST8 "X" 130*bcb514acSSimon Glass # define PRIXLEAST16 "X" 131*bcb514acSSimon Glass # define PRIXLEAST32 "X" 132*bcb514acSSimon Glass # define PRIXLEAST64 __PRI64_PREFIX "X" 133*bcb514acSSimon Glass 134*bcb514acSSimon Glass # define PRIXFAST8 "X" 135*bcb514acSSimon Glass # define PRIXFAST16 __PRIPTR_PREFIX "X" 136*bcb514acSSimon Glass # define PRIXFAST32 __PRIPTR_PREFIX "X" 137*bcb514acSSimon Glass # define PRIXFAST64 __PRI64_PREFIX "X" 138*bcb514acSSimon Glass 139*bcb514acSSimon Glass /* Macros for printing `intmax_t' and `uintmax_t'. */ 140*bcb514acSSimon Glass # define PRIdMAX __PRI64_PREFIX "d" 141*bcb514acSSimon Glass # define PRIiMAX __PRI64_PREFIX "i" 142*bcb514acSSimon Glass # define PRIoMAX __PRI64_PREFIX "o" 143*bcb514acSSimon Glass # define PRIuMAX __PRI64_PREFIX "u" 144*bcb514acSSimon Glass # define PRIxMAX __PRI64_PREFIX "x" 145*bcb514acSSimon Glass # define PRIXMAX __PRI64_PREFIX "X" 146*bcb514acSSimon Glass 147*bcb514acSSimon Glass /* Macros for printing `intptr_t' and `uintptr_t'. */ 148*bcb514acSSimon Glass # define PRIdPTR __PRIPTR_PREFIX "d" 149*bcb514acSSimon Glass # define PRIiPTR __PRIPTR_PREFIX "i" 150*bcb514acSSimon Glass # define PRIoPTR __PRIPTR_PREFIX "o" 151*bcb514acSSimon Glass # define PRIuPTR __PRIPTR_PREFIX "u" 152*bcb514acSSimon Glass # define PRIxPTR __PRIPTR_PREFIX "x" 153*bcb514acSSimon Glass # define PRIXPTR __PRIPTR_PREFIX "X" 154*bcb514acSSimon Glass 155*bcb514acSSimon Glass /* Macros for scanning format specifiers. */ 156*bcb514acSSimon Glass 157*bcb514acSSimon Glass /* Signed decimal notation. */ 158*bcb514acSSimon Glass # define SCNd8 "hhd" 159*bcb514acSSimon Glass # define SCNd16 "hd" 160*bcb514acSSimon Glass # define SCNd32 "d" 161*bcb514acSSimon Glass # define SCNd64 __PRI64_PREFIX "d" 162*bcb514acSSimon Glass 163*bcb514acSSimon Glass # define SCNdLEAST8 "hhd" 164*bcb514acSSimon Glass # define SCNdLEAST16 "hd" 165*bcb514acSSimon Glass # define SCNdLEAST32 "d" 166*bcb514acSSimon Glass # define SCNdLEAST64 __PRI64_PREFIX "d" 167*bcb514acSSimon Glass 168*bcb514acSSimon Glass # define SCNdFAST8 "hhd" 169*bcb514acSSimon Glass # define SCNdFAST16 __PRIPTR_PREFIX "d" 170*bcb514acSSimon Glass # define SCNdFAST32 __PRIPTR_PREFIX "d" 171*bcb514acSSimon Glass # define SCNdFAST64 __PRI64_PREFIX "d" 172*bcb514acSSimon Glass 173*bcb514acSSimon Glass /* Signed decimal notation. */ 174*bcb514acSSimon Glass # define SCNi8 "hhi" 175*bcb514acSSimon Glass # define SCNi16 "hi" 176*bcb514acSSimon Glass # define SCNi32 "i" 177*bcb514acSSimon Glass # define SCNi64 __PRI64_PREFIX "i" 178*bcb514acSSimon Glass 179*bcb514acSSimon Glass # define SCNiLEAST8 "hhi" 180*bcb514acSSimon Glass # define SCNiLEAST16 "hi" 181*bcb514acSSimon Glass # define SCNiLEAST32 "i" 182*bcb514acSSimon Glass # define SCNiLEAST64 __PRI64_PREFIX "i" 183*bcb514acSSimon Glass 184*bcb514acSSimon Glass # define SCNiFAST8 "hhi" 185*bcb514acSSimon Glass # define SCNiFAST16 __PRIPTR_PREFIX "i" 186*bcb514acSSimon Glass # define SCNiFAST32 __PRIPTR_PREFIX "i" 187*bcb514acSSimon Glass # define SCNiFAST64 __PRI64_PREFIX "i" 188*bcb514acSSimon Glass 189*bcb514acSSimon Glass /* Unsigned decimal notation. */ 190*bcb514acSSimon Glass # define SCNu8 "hhu" 191*bcb514acSSimon Glass # define SCNu16 "hu" 192*bcb514acSSimon Glass # define SCNu32 "u" 193*bcb514acSSimon Glass # define SCNu64 __PRI64_PREFIX "u" 194*bcb514acSSimon Glass 195*bcb514acSSimon Glass # define SCNuLEAST8 "hhu" 196*bcb514acSSimon Glass # define SCNuLEAST16 "hu" 197*bcb514acSSimon Glass # define SCNuLEAST32 "u" 198*bcb514acSSimon Glass # define SCNuLEAST64 __PRI64_PREFIX "u" 199*bcb514acSSimon Glass 200*bcb514acSSimon Glass # define SCNuFAST8 "hhu" 201*bcb514acSSimon Glass # define SCNuFAST16 __PRIPTR_PREFIX "u" 202*bcb514acSSimon Glass # define SCNuFAST32 __PRIPTR_PREFIX "u" 203*bcb514acSSimon Glass # define SCNuFAST64 __PRI64_PREFIX "u" 204*bcb514acSSimon Glass 205*bcb514acSSimon Glass /* Octal notation. */ 206*bcb514acSSimon Glass # define SCNo8 "hho" 207*bcb514acSSimon Glass # define SCNo16 "ho" 208*bcb514acSSimon Glass # define SCNo32 "o" 209*bcb514acSSimon Glass # define SCNo64 __PRI64_PREFIX "o" 210*bcb514acSSimon Glass 211*bcb514acSSimon Glass # define SCNoLEAST8 "hho" 212*bcb514acSSimon Glass # define SCNoLEAST16 "ho" 213*bcb514acSSimon Glass # define SCNoLEAST32 "o" 214*bcb514acSSimon Glass # define SCNoLEAST64 __PRI64_PREFIX "o" 215*bcb514acSSimon Glass 216*bcb514acSSimon Glass # define SCNoFAST8 "hho" 217*bcb514acSSimon Glass # define SCNoFAST16 __PRIPTR_PREFIX "o" 218*bcb514acSSimon Glass # define SCNoFAST32 __PRIPTR_PREFIX "o" 219*bcb514acSSimon Glass # define SCNoFAST64 __PRI64_PREFIX "o" 220*bcb514acSSimon Glass 221*bcb514acSSimon Glass /* Hexadecimal notation. */ 222*bcb514acSSimon Glass # define SCNx8 "hhx" 223*bcb514acSSimon Glass # define SCNx16 "hx" 224*bcb514acSSimon Glass # define SCNx32 "x" 225*bcb514acSSimon Glass # define SCNx64 __PRI64_PREFIX "x" 226*bcb514acSSimon Glass 227*bcb514acSSimon Glass # define SCNxLEAST8 "hhx" 228*bcb514acSSimon Glass # define SCNxLEAST16 "hx" 229*bcb514acSSimon Glass # define SCNxLEAST32 "x" 230*bcb514acSSimon Glass # define SCNxLEAST64 __PRI64_PREFIX "x" 231*bcb514acSSimon Glass 232*bcb514acSSimon Glass # define SCNxFAST8 "hhx" 233*bcb514acSSimon Glass # define SCNxFAST16 __PRIPTR_PREFIX "x" 234*bcb514acSSimon Glass # define SCNxFAST32 __PRIPTR_PREFIX "x" 235*bcb514acSSimon Glass # define SCNxFAST64 __PRI64_PREFIX "x" 236*bcb514acSSimon Glass 237*bcb514acSSimon Glass /* Macros for scanning `intmax_t' and `uintmax_t'. */ 238*bcb514acSSimon Glass # define SCNdMAX __PRI64_PREFIX "d" 239*bcb514acSSimon Glass # define SCNiMAX __PRI64_PREFIX "i" 240*bcb514acSSimon Glass # define SCNoMAX __PRI64_PREFIX "o" 241*bcb514acSSimon Glass # define SCNuMAX __PRI64_PREFIX "u" 242*bcb514acSSimon Glass # define SCNxMAX __PRI64_PREFIX "x" 243*bcb514acSSimon Glass 244*bcb514acSSimon Glass /* Macros for scanning `intptr_t' and `uintptr_t'. */ 245*bcb514acSSimon Glass # define SCNdPTR __PRIPTR_PREFIX "d" 246*bcb514acSSimon Glass # define SCNiPTR __PRIPTR_PREFIX "i" 247*bcb514acSSimon Glass # define SCNoPTR __PRIPTR_PREFIX "o" 248*bcb514acSSimon Glass # define SCNuPTR __PRIPTR_PREFIX "u" 249*bcb514acSSimon Glass # define SCNxPTR __PRIPTR_PREFIX "x" 250*bcb514acSSimon Glass 251*bcb514acSSimon Glass #endif /* C++ && format macros */ 252*bcb514acSSimon Glass 253*bcb514acSSimon Glass #if __WORDSIZE == 64 254*bcb514acSSimon Glass 255*bcb514acSSimon Glass /* We have to define the `uintmax_t' type using `ldiv_t'. */ 256*bcb514acSSimon Glass typedef struct { 257*bcb514acSSimon Glass long int quot; /* Quotient. */ 258*bcb514acSSimon Glass long int rem; /* Remainder. */ 259*bcb514acSSimon Glass } imaxdiv_t; 260*bcb514acSSimon Glass 261*bcb514acSSimon Glass #else 262*bcb514acSSimon Glass 263*bcb514acSSimon Glass /* We have to define the `uintmax_t' type using `lldiv_t'. */ 264*bcb514acSSimon Glass typedef struct { 265*bcb514acSSimon Glass long long int quot; /* Quotient. */ 266*bcb514acSSimon Glass long long int rem; /* Remainder. */ 267*bcb514acSSimon Glass } imaxdiv_t; 268*bcb514acSSimon Glass 269*bcb514acSSimon Glass #endif 270*bcb514acSSimon Glass 271*bcb514acSSimon Glass #endif /* inttypes.h */ 272