[BACK]Return to inttypes.h CVS log [TXT][DIR] Up to [local] / src / include

Annotation of src/include/inttypes.h, Revision 1.9

1.8       millert     1: /*     $OpenBSD: inttypes.h,v 1.7 2006/01/13 17:58:09 millert Exp $    */
1.1       millert     2:
                      3: /*
1.6       millert     4:  * Copyright (c) 1997, 2005 Todd C. Miller <Todd.Miller@courtesan.com>
1.1       millert     5:  *
1.4       millert     6:  * Permission to use, copy, modify, and distribute this software for any
                      7:  * purpose with or without fee is hereby granted, provided that the above
                      8:  * copyright notice and this permission notice appear in all copies.
1.1       millert     9:  *
1.5       millert    10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1       millert    17:  */
                     18:
1.6       millert    19: #ifndef        _INTTYPES_H_
                     20: #define        _INTTYPES_H_
1.1       millert    21:
1.6       millert    22: #include <sys/stdint.h>
1.1       millert    23:
1.6       millert    24: #if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
                     25: /*
                     26:  * 7.8.1 Macros for format specifiers
                     27:  *
                     28:  * Each of the following object-like macros expands to a string
                     29:  * literal containing a conversion specifier, possibly modified by
                     30:  * a prefix such as hh, h, l, or ll, suitable for use within the
                     31:  * format argument of a formatted input/output function when
                     32:  * converting the corresponding integer type.  These macro names
                     33:  * have the general form of PRI (character string literals for the
                     34:  * fprintf family) or SCN (character string literals for the fscanf
                     35:  * family), followed by the conversion specifier, followed by a
                     36:  * name corresponding to a similar typedef name.  For example,
                     37:  * PRIdFAST32 can be used in a format string to print the value of
                     38:  * an integer of type int_fast32_t.
                     39:  */
                     40:
                     41: /* fprintf macros for signed integers */
1.9     ! millert    42: #define        PRId8                   "d"             /* int8_t */
        !            43: #define        PRId16                  "d"             /* int16_t */
        !            44: #define        PRId32                  "d"             /* int32_t */
        !            45: #define        PRId64                  "lld"           /* int64_t */
        !            46:
        !            47: #define        PRIdLEAST8              "d"             /* int_least8_t */
        !            48: #define        PRIdLEAST16             "d"             /* int_least16_t */
        !            49: #define        PRIdLEAST32             "d"             /* int_least32_t */
        !            50: #define        PRIdLEAST64             "lld"           /* int_least64_t */
        !            51:
        !            52: #define        PRIdFAST8               "d"             /* int_fast8_t */
        !            53: #define        PRIdFAST16              "d"             /* int_fast16_t */
        !            54: #define        PRIdFAST32              "d"             /* int_fast32_t */
        !            55: #define        PRIdFAST64              "lld"           /* int_fast64_t */
        !            56:
        !            57: #define        PRIdMAX                 "jd"            /* intmax_t */
        !            58: #define        PRIdPTR                 "ld"            /* intptr_t */
        !            59:
        !            60: #define        PRIi8                   "i"             /* int8_t */
        !            61: #define        PRIi16                  "i"             /* int16_t */
        !            62: #define        PRIi32                  "i"             /* int32_t */
        !            63: #define        PRIi64                  "lli"           /* int64_t */
        !            64:
        !            65: #define        PRIiLEAST8              "i"             /* int_least8_t */
        !            66: #define        PRIiLEAST16             "i"             /* int_least16_t */
        !            67: #define        PRIiLEAST32             "i"             /* int_least32_t */
        !            68: #define        PRIiLEAST64             "lli"           /* int_least64_t */
        !            69:
        !            70: #define        PRIiFAST8               "i"             /* int_fast8_t */
        !            71: #define        PRIiFAST16              "i"             /* int_fast16_t */
        !            72: #define        PRIiFAST32              "i"             /* int_fast32_t */
        !            73: #define        PRIiFAST64              "lli"           /* int_fast64_t */
1.6       millert    74:
1.9     ! millert    75: #define        PRIiMAX                 "ji"            /* intmax_t */
        !            76: #define        PRIiPTR                 "li"            /* intptr_t */
1.6       millert    77:
                     78: /* fprintf macros for unsigned integers */
1.9     ! millert    79: #define        PRIo8                   "o"             /* int8_t */
        !            80: #define        PRIo16                  "o"             /* int16_t */
        !            81: #define        PRIo32                  "o"             /* int32_t */
        !            82: #define        PRIo64                  "llo"           /* int64_t */
        !            83:
        !            84: #define        PRIoLEAST8              "o"             /* int_least8_t */
        !            85: #define        PRIoLEAST16             "o"             /* int_least16_t */
        !            86: #define        PRIoLEAST32             "o"             /* int_least32_t */
        !            87: #define        PRIoLEAST64             "llo"           /* int_least64_t */
        !            88:
        !            89: #define        PRIoFAST8               "o"             /* int_fast8_t */
        !            90: #define        PRIoFAST16              "o"             /* int_fast16_t */
        !            91: #define        PRIoFAST32              "o"             /* int_fast32_t */
        !            92: #define        PRIoFAST64              "llo"           /* int_fast64_t */
        !            93:
        !            94: #define        PRIoMAX                 "jo"            /* intmax_t */
        !            95: #define        PRIoPTR                 "lo"            /* intptr_t */
        !            96:
        !            97: #define        PRIu8                   "u"             /* uint8_t */
        !            98: #define        PRIu16                  "u"             /* uint16_t */
        !            99: #define        PRIu32                  "u"             /* uint32_t */
        !           100: #define        PRIu64                  "llu"           /* uint64_t */
        !           101:
        !           102: #define        PRIuLEAST8              "u"             /* uint_least8_t */
        !           103: #define        PRIuLEAST16             "u"             /* uint_least16_t */
        !           104: #define        PRIuLEAST32             "u"             /* uint_least32_t */
        !           105: #define        PRIuLEAST64             "llu"           /* uint_least64_t */
        !           106:
        !           107: #define        PRIuFAST8               "u"             /* uint_fast8_t */
        !           108: #define        PRIuFAST16              "u"             /* uint_fast16_t */
        !           109: #define        PRIuFAST32              "u"             /* uint_fast32_t */
        !           110: #define        PRIuFAST64              "llu"           /* uint_fast64_t */
        !           111:
        !           112: #define        PRIuMAX                 "ju"            /* uintmax_t */
        !           113: #define        PRIuPTR                 "lu"            /* uintptr_t */
        !           114:
        !           115: #define        PRIx8                   "x"             /* uint8_t */
        !           116: #define        PRIx16                  "x"             /* uint16_t */
        !           117: #define        PRIx32                  "x"             /* uint32_t */
        !           118: #define        PRIx64                  "llx"           /* uint64_t */
        !           119:
        !           120: #define        PRIxLEAST8              "x"             /* uint_least8_t */
        !           121: #define        PRIxLEAST16             "x"             /* uint_least16_t */
        !           122: #define        PRIxLEAST32             "x"             /* uint_least32_t */
        !           123: #define        PRIxLEAST64             "llx"           /* uint_least64_t */
        !           124:
        !           125: #define        PRIxFAST8               "x"             /* uint_fast8_t */
        !           126: #define        PRIxFAST16              "x"             /* uint_fast16_t */
        !           127: #define        PRIxFAST32              "x"             /* uint_fast32_t */
        !           128: #define        PRIxFAST64              "llx"           /* uint_fast64_t */
        !           129:
        !           130: #define        PRIxMAX                 "jx"            /* uintmax_t */
        !           131: #define        PRIxPTR                 "lx"            /* uintptr_t */
        !           132:
        !           133: #define        PRIX8                   "X"             /* uint8_t */
        !           134: #define        PRIX16                  "X"             /* uint16_t */
        !           135: #define        PRIX32                  "X"             /* uint32_t */
        !           136: #define        PRIX64                  "llX"           /* uint64_t */
        !           137:
        !           138: #define        PRIXLEAST8              "X"             /* uint_least8_t */
        !           139: #define        PRIXLEAST16             "X"             /* uint_least16_t */
        !           140: #define        PRIXLEAST32             "X"             /* uint_least32_t */
        !           141: #define        PRIXLEAST64             "llX"           /* uint_least64_t */
        !           142:
        !           143: #define        PRIXFAST8               "X"             /* uint_fast8_t */
        !           144: #define        PRIXFAST16              "X"             /* uint_fast16_t */
        !           145: #define        PRIXFAST32              "X"             /* uint_fast32_t */
        !           146: #define        PRIXFAST64              "llX"           /* uint_fast64_t */
1.6       millert   147:
1.9     ! millert   148: #define        PRIXMAX                 "jX"            /* uintmax_t */
        !           149: #define        PRIXPTR                 "lX"            /* uintptr_t */
1.6       millert   150:
                    151: /* fscanf macros for signed integers */
1.9     ! millert   152: #define        SCNd8                   "hhd"           /* int8_t */
        !           153: #define        SCNd16                  "hd"            /* int16_t */
        !           154: #define        SCNd32                  "d"             /* int32_t */
        !           155: #define        SCNd64                  "lld"           /* int64_t */
        !           156:
        !           157: #define        SCNdLEAST8              "hhd"           /* int_least8_t */
        !           158: #define        SCNdLEAST16             "hd"            /* int_least16_t */
        !           159: #define        SCNdLEAST32             "d"             /* int_least32_t */
        !           160: #define        SCNdLEAST64             "lld"           /* int_least64_t */
        !           161:
        !           162: #define        SCNdFAST8               "hhd"           /* int_fast8_t */
        !           163: #define        SCNdFAST16              "hd"            /* int_fast16_t */
        !           164: #define        SCNdFAST32              "d"             /* int_fast32_t */
        !           165: #define        SCNdFAST64              "lld"           /* int_fast64_t */
        !           166:
        !           167: #define        SCNdMAX                 "jd"            /* intmax_t */
        !           168: #define        SCNdPTR                 "ld"            /* intptr_t */
        !           169:
        !           170: #define        SCNi8                   "hhi"           /* int8_t */
        !           171: #define        SCNi16                  "hi"            /* int16_t */
        !           172: #define        SCNi32                  "i"             /* int32_t */
        !           173: #define        SCNi64                  "lli"           /* int64_t */
        !           174:
        !           175: #define        SCNiLEAST8              "hhi"           /* int_least8_t */
        !           176: #define        SCNiLEAST16             "hi"            /* int_least16_t */
        !           177: #define        SCNiLEAST32             "i"             /* int_least32_t */
        !           178: #define        SCNiLEAST64             "lli"           /* int_least64_t */
        !           179:
        !           180: #define        SCNiFAST8               "hhi"           /* int_fast8_t */
        !           181: #define        SCNiFAST16              "hi"            /* int_fast16_t */
        !           182: #define        SCNiFAST32              "i"             /* int_fast32_t */
        !           183: #define        SCNiFAST64              "lli"           /* int_fast64_t */
1.6       millert   184:
1.9     ! millert   185: #define        SCNiMAX                 "ji"            /* intmax_t */
        !           186: #define        SCNiPTR                 "li"            /* intptr_t */
1.6       millert   187:
                    188: /* fscanf macros for unsigned integers */
1.9     ! millert   189: #define        SCNo8                   "hho"           /* uint8_t */
        !           190: #define        SCNo16                  "ho"            /* uint16_t */
        !           191: #define        SCNo32                  "o"             /* uint32_t */
        !           192: #define        SCNo64                  "llo"           /* uint64_t */
        !           193:
        !           194: #define        SCNoLEAST8              "hho"           /* uint_least8_t */
        !           195: #define        SCNoLEAST16             "ho"            /* uint_least16_t */
        !           196: #define        SCNoLEAST32             "o"             /* uint_least32_t */
        !           197: #define        SCNoLEAST64             "llo"           /* uint_least64_t */
        !           198:
        !           199: #define        SCNoFAST8               "hho"           /* uint_fast8_t */
        !           200: #define        SCNoFAST16              "ho"            /* uint_fast16_t */
        !           201: #define        SCNoFAST32              "o"             /* uint_fast32_t */
        !           202: #define        SCNoFAST64              "llo"           /* uint_fast64_t */
        !           203:
        !           204: #define        SCNoMAX                 "jo"            /* uintmax_t */
        !           205: #define        SCNoPTR                 "lo"            /* uintptr_t */
        !           206:
        !           207: #define        SCNu8                   "hhu"           /* uint8_t */
        !           208: #define        SCNu16                  "hu"            /* uint16_t */
        !           209: #define        SCNu32                  "u"             /* uint32_t */
        !           210: #define        SCNu64                  "llu"           /* uint64_t */
        !           211:
        !           212: #define        SCNuLEAST8              "hhu"           /* uint_least8_t */
        !           213: #define        SCNuLEAST16             "hu"            /* uint_least16_t */
        !           214: #define        SCNuLEAST32             "u"             /* uint_least32_t */
        !           215: #define        SCNuLEAST64             "llu"           /* uint_least64_t */
        !           216:
        !           217: #define        SCNuFAST8               "hhu"           /* uint_fast8_t */
        !           218: #define        SCNuFAST16              "hu"            /* uint_fast16_t */
        !           219: #define        SCNuFAST32              "u"             /* uint_fast32_t */
        !           220: #define        SCNuFAST64              "llu"           /* uint_fast64_t */
        !           221:
        !           222: #define        SCNuMAX                 "ju"            /* uintmax_t */
        !           223: #define        SCNuPTR                 "lu"            /* uintptr_t */
        !           224:
        !           225: #define        SCNx8                   "hhx"           /* uint8_t */
        !           226: #define        SCNx16                  "hx"            /* uint16_t */
        !           227: #define        SCNx32                  "x"             /* uint32_t */
        !           228: #define        SCNx64                  "llx"           /* uint64_t */
        !           229:
        !           230: #define        SCNxLEAST8              "hhx"           /* uint_least8_t */
        !           231: #define        SCNxLEAST16             "hx"            /* uint_least16_t */
        !           232: #define        SCNxLEAST32             "x"             /* uint_least32_t */
        !           233: #define        SCNxLEAST64             "llx"           /* uint_least64_t */
        !           234:
        !           235: #define        SCNxFAST8               "hhx"           /* uint_fast8_t */
        !           236: #define        SCNxFAST16              "hx"            /* uint_fast16_t */
        !           237: #define        SCNxFAST32              "x"             /* uint_fast32_t */
        !           238: #define        SCNxFAST64              "llx"           /* uint_fast64_t */
1.6       millert   239:
1.9     ! millert   240: #define        SCNxMAX                 "jx"            /* uintmax_t */
        !           241: #define        SCNxPTR                 "lx"            /* uintptr_t */
1.6       millert   242:
                    243: #endif /* __cplusplus || __STDC_FORMAT_MACROS */
                    244:
1.7       millert   245: typedef struct {
                    246:        intmax_t quot;          /* quotient */
                    247:        intmax_t rem;           /* remainder */
                    248: } imaxdiv_t;
                    249:
                    250: __BEGIN_DECLS
                    251: intmax_t       imaxabs(intmax_t);
                    252: imaxdiv_t      imaxdiv(intmax_t, intmax_t);
                    253: intmax_t       strtoimax(const char *, char **, int);
                    254: uintmax_t      strtoumax(const char *, char **, int);
                    255: __END_DECLS
1.1       millert   256:
                    257: #endif /* _INTTYPES_H_ */