blob: 4616a48ceffc51faa25e045bf0efa925b4e84358 [file] [log] [blame]
Viet-Trung Luu96b05c12016-01-11 11:26:36 -08001#ifndef _STDINT_H
2#define _STDINT_H
3
4#define __NEED_int8_t
5#define __NEED_int16_t
6#define __NEED_int32_t
7#define __NEED_int64_t
8
9#define __NEED_uint8_t
10#define __NEED_uint16_t
11#define __NEED_uint32_t
12#define __NEED_uint64_t
13
14#define __NEED_intptr_t
15#define __NEED_uintptr_t
16
17#define __NEED_intmax_t
18#define __NEED_uintmax_t
19
20#include <bits/alltypes.h>
21
22typedef int8_t int_fast8_t;
23typedef int64_t int_fast64_t;
24
George Kulakowski17e3b042016-02-18 15:59:50 -080025typedef int8_t int_least8_t;
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080026typedef int16_t int_least16_t;
27typedef int32_t int_least32_t;
28typedef int64_t int_least64_t;
29
30typedef uint8_t uint_fast8_t;
31typedef uint64_t uint_fast64_t;
32
George Kulakowski17e3b042016-02-18 15:59:50 -080033typedef uint8_t uint_least8_t;
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080034typedef uint16_t uint_least16_t;
35typedef uint32_t uint_least32_t;
36typedef uint64_t uint_least64_t;
37
George Kulakowski17e3b042016-02-18 15:59:50 -080038#define INT8_MIN (-1 - 0x7f)
39#define INT16_MIN (-1 - 0x7fff)
40#define INT32_MIN (-1 - 0x7fffffff)
41#define INT64_MIN (-1 - 0x7fffffffffffffff)
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080042
George Kulakowski17e3b042016-02-18 15:59:50 -080043#define INT8_MAX (0x7f)
44#define INT16_MAX (0x7fff)
45#define INT32_MAX (0x7fffffff)
46#define INT64_MAX (0x7fffffffffffffff)
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080047
George Kulakowski17e3b042016-02-18 15:59:50 -080048#define UINT8_MAX (0xff)
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080049#define UINT16_MAX (0xffff)
50#define UINT32_MAX (0xffffffffu)
51#define UINT64_MAX (0xffffffffffffffffu)
52
George Kulakowski17e3b042016-02-18 15:59:50 -080053#define INT_FAST8_MIN INT8_MIN
54#define INT_FAST64_MIN INT64_MIN
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080055
George Kulakowski17e3b042016-02-18 15:59:50 -080056#define INT_LEAST8_MIN INT8_MIN
57#define INT_LEAST16_MIN INT16_MIN
58#define INT_LEAST32_MIN INT32_MIN
59#define INT_LEAST64_MIN INT64_MIN
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080060
George Kulakowski17e3b042016-02-18 15:59:50 -080061#define INT_FAST8_MAX INT8_MAX
62#define INT_FAST64_MAX INT64_MAX
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080063
George Kulakowski17e3b042016-02-18 15:59:50 -080064#define INT_LEAST8_MAX INT8_MAX
65#define INT_LEAST16_MAX INT16_MAX
66#define INT_LEAST32_MAX INT32_MAX
67#define INT_LEAST64_MAX INT64_MAX
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080068
George Kulakowski17e3b042016-02-18 15:59:50 -080069#define UINT_FAST8_MAX UINT8_MAX
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080070#define UINT_FAST64_MAX UINT64_MAX
71
George Kulakowski17e3b042016-02-18 15:59:50 -080072#define UINT_LEAST8_MAX UINT8_MAX
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080073#define UINT_LEAST16_MAX UINT16_MAX
74#define UINT_LEAST32_MAX UINT32_MAX
75#define UINT_LEAST64_MAX UINT64_MAX
76
George Kulakowski17e3b042016-02-18 15:59:50 -080077#define INTMAX_MIN INT64_MIN
78#define INTMAX_MAX INT64_MAX
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080079#define UINTMAX_MAX UINT64_MAX
80
81#define WINT_MIN 0U
82#define WINT_MAX UINT32_MAX
83
George Kulakowski17e3b042016-02-18 15:59:50 -080084#if L'\0' - 1 > 0
85#define WCHAR_MAX (0xffffffffu + L'\0')
86#define WCHAR_MIN (0 + L'\0')
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080087#else
George Kulakowski17e3b042016-02-18 15:59:50 -080088#define WCHAR_MAX (0x7fffffff + L'\0')
89#define WCHAR_MIN (-1 - 0x7fffffff + L'\0')
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080090#endif
91
George Kulakowski17e3b042016-02-18 15:59:50 -080092#define SIG_ATOMIC_MIN INT32_MIN
93#define SIG_ATOMIC_MAX INT32_MAX
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080094
95#include <bits/stdint.h>
96
George Kulakowski17e3b042016-02-18 15:59:50 -080097#define INT8_C(c) c
Viet-Trung Luu96b05c12016-01-11 11:26:36 -080098#define INT16_C(c) c
99#define INT32_C(c) c
100
George Kulakowski17e3b042016-02-18 15:59:50 -0800101#define UINT8_C(c) c
Viet-Trung Luu96b05c12016-01-11 11:26:36 -0800102#define UINT16_C(c) c
George Kulakowski17e3b042016-02-18 15:59:50 -0800103#define UINT32_C(c) c##U
Viet-Trung Luu96b05c12016-01-11 11:26:36 -0800104
105#if UINTPTR_MAX == UINT64_MAX
George Kulakowski17e3b042016-02-18 15:59:50 -0800106#define INT64_C(c) c##L
107#define UINT64_C(c) c##UL
108#define INTMAX_C(c) c##L
109#define UINTMAX_C(c) c##UL
Viet-Trung Luu96b05c12016-01-11 11:26:36 -0800110#else
George Kulakowski17e3b042016-02-18 15:59:50 -0800111#define INT64_C(c) c##LL
112#define UINT64_C(c) c##ULL
113#define INTMAX_C(c) c##LL
114#define UINTMAX_C(c) c##ULL
Viet-Trung Luu96b05c12016-01-11 11:26:36 -0800115#endif
116
117#endif