1/*
2 * stdint.h
3 */
4
5#ifndef _STDINT_H
6#define _STDINT_H
7
8/* Exact types */
9
10typedef signed char int8_t;
11typedef signed short int16_t;
12typedef signed int int32_t;
13typedef signed long long int64_t;
14
15typedef unsigned char uint8_t;
16typedef unsigned short uint16_t;
17typedef unsigned int uint32_t;
18typedef unsigned long long uint64_t;
19
20/* Small types */
21
22typedef signed char int_least8_t;
23typedef signed short int_least16_t;
24typedef signed int int_least32_t;
25typedef signed long long int_least64_t;
26
27typedef unsigned char uint_least8_t;
28typedef unsigned short uint_least16_t;
29typedef unsigned int uint_least32_t;
30typedef unsigned long long uint_least64_t;
31
32/* Fast types */
33
34typedef signed char int_fast8_t;
35typedef signed short int_fast16_t;
36typedef signed int int_fast32_t;
37typedef signed long long int_fast64_t;
38
39typedef unsigned char uint_fast8_t;
40typedef unsigned short uint_fast16_t;
41typedef unsigned int uint_fast32_t;
42typedef unsigned long long uint_fast64_t;
43
44/* Pointer types */
45
46typedef int32_t intptr_t;
47typedef uint32_t uintptr_t;
48
49/* Maximal types */
50
51typedef int64_t intmax_t;
52typedef uint64_t uintmax_t;
53
54/*
55 * To be strictly correct...
56 */
57#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
58
59# define INT8_MIN               (-128)
60# define INT16_MIN              (-32767-1)
61# define INT32_MIN              (-2147483647-1)
62# define INT64_MIN              (-9223372036854775807LL-1)
63
64# define INT8_MAX               (127)
65# define INT16_MAX              (32767)
66# define INT32_MAX              (2147483647)
67# define INT64_MAX              (9223372036854775807LL)
68
69# define UINT8_MAX              (255U)
70# define UINT16_MAX             (65535U)
71# define UINT32_MAX             (4294967295U)
72# define UINT64_MAX             (18446744073709551615ULL)
73
74# define INT_LEAST8_MIN               (-128)
75# define INT_LEAST16_MIN              (-32767-1)
76# define INT_LEAST32_MIN              (-2147483647-1)
77# define INT_LEAST64_MIN              (-9223372036854775807LL-1)
78
79# define INT_LEAST8_MAX               (127)
80# define INT_LEAST16_MAX              (32767)
81# define INT_LEAST32_MAX              (2147483647)
82# define INT_LEAST64_MAX              (9223372036854775807LL)
83
84# define UINT_LEAST8_MAX              (255U)
85# define UINT_LEAST16_MAX             (65535U)
86# define UINT_LEAST32_MAX             (4294967295U)
87# define UINT_LEAST64_MAX             (18446744073709551615ULL)
88
89# define INT_FAST8_MIN               (-128)
90# define INT_FAST16_MIN              (-32767-1)
91# define INT_FAST32_MIN              (-2147483647-1)
92# define INT_FAST64_MIN              (-9223372036854775807LL-1)
93
94# define INT_FAST8_MAX               (127)
95# define INT_FAST16_MAX              (32767)
96# define INT_FAST32_MAX              (2147483647)
97# define INT_FAST64_MAX              (9223372036854775807LL)
98
99# define UINT_FAST8_MAX              (255U)
100# define UINT_FAST16_MAX             (65535U)
101# define UINT_FAST32_MAX             (4294967295U)
102# define UINT_FAST64_MAX             (18446744073709551615ULL)
103
104# define INTPTR_MIN		(-2147483647-1)
105# define INTPTR_MAX		(2147483647)
106# define UINTPTR_MAX		(4294967295U)
107
108# define INTMAX_MIN		(-9223372036854775807LL-1)
109# define INTMAX_MAX		(9223372036854775807LL)
110# define UINTMAX_MAX		(18446744073709551615ULL)
111
112/* ptrdiff_t limit */
113# define PTRDIFF_MIN		(-2147483647-1)
114# define PTRDIFF_MAX		(2147483647)
115
116/* sig_atomic_t limit */
117# define SIG_ATOMIC_MIN         (-2147483647-1)
118# define SIG_ATOMIC_MAX         (2147483647)
119
120/* size_t limit */
121# define SIZE_MAX		(4294967295U)
122
123#endif /* STDC_LIMIT_MACROS */
124
125#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
126
127# define INT8_C(n)	n
128# define INT16_C(n)	n
129# define INT32_C(n)	n
130# define INT64_C(n)	n ## LL
131
132# define UINT8_C(n)	n ## U
133# define UINT16_C(n)	n ## U
134# define UINT32_C(n)	n ## U
135# define UINT64_C(n)	n ## ULL
136
137# define INTMAX_C(n)	n ## LL
138# define UINTMAX_C(n)	n ## ULL
139
140#endif /* STDC_CONSTANT_MACROS */
141
142#endif /* _STDINT_H */
143