30#ifndef _RWSTD_CSTDINT_H_INCLUDED
31#define _RWSTD_CSTDINT_H_INCLUDED
39#ifndef _RWSTD_BNO_TWOS_COMPLEMENT
40# define _RWSTD_T_MIN(tmax) (-(tmax) - 1)
42# define _RWSTD_T_MIN(tmax) -(tmax)
51typedef _RWSTD_INT8_T int8_t;
52typedef _RWSTD_UINT8_T uint8_t;
55# define UINT8_MAX 255U
56# define INT_LEAST8_MAX INT8_MAX
57# define UINT_LEAST8_MAX UINT8_MAX
58# define INT_FAST8_MAX INT8_MAX
59# define UINT_FAST8_MAX UINT8_MAX
61#elif defined (_RWSTD_INT16_T)
63# define INT_LEAST8_MAX 32767
64# define UINT_LEAST8_MAX 65535U
65# define INT_FAST8_MAX 32767
66# define UINT_FAST8_MAX 65535U
68#elif defined (_RWSTD_INT32_T)
70# if 4 == _RWSTD_INT_SIZE
71# define INT_LEAST8_MAX _RWSTD_INT_MAX
72# define UINT_LEAST8_MAX _RWSTD_UINT_MAX
73# define INT_FAST8_MAX _RWSTD_INT_MAX
74# define UINT_FAST8_MAX _RWSTD_UINT_MAX
75# elif 4 == _RWSTD_LONG_SIZE
76# define INT_LEAST8_MAX _RWSTD_LONG_MAX
77# define UINT_LEAST8_MAX _RWSTD_ULONG_MAX
78# define INT_FAST8_MAX _RWSTD_LONG_MAX
79# define UINT_FAST8_MAX _RWSTD_ULONG_MAX
82#elif defined (_RWSTD_INT64_T)
84# if 8 == _RWSTD_LONG_SIZE
85# define INT_LEAST8_MAX _RWSTD_LONG_MAX
86# define UINT_LEAST8_MAX _RWSTD_ULONG_MAX
87# define INT_FAST8_MAX _RWSTD_LONG_MAX
88# define UINT_FAST8_MAX _RWSTD_ULONG_MAX
89# elif 8 == _RWSTD_LLONG_SIZE
90# define INT_LEAST8_MAX _RWSTD_LLONG_MAX
91# define UINT_LEAST8_MAX _RWSTD_ULLONG_MAX
92# define INT_FAST8_MAX _RWSTD_LLONG_MAX
93# define UINT_FAST8_MAX _RWSTD_ULLONG_MAX
98# define INT_LEAST8_MAX _RWSTD_INT_MAX
99# define UINT_LEAST8_MAX _RWSTD_UINT_MAX
100# define INT_FAST8_MAX _RWSTD_INT_MAX
101# define UINT_FAST8_MAX _RWSTD_UINT_MAX
111typedef _RWSTD_INT16_T int16_t;
112typedef _RWSTD_UINT16_T uint16_t;
114# define INT16_MAX 32767
115# define UINT16_MAX 65535U
117# define INT_LEAST16_MAX INT16_MAX
118# define UINT_LEAST16_MAX UINT16_MAX
119# define INT_FAST16_MAX INT16_MAX
120# define UINT_FAST16_MAX UINT16_MAX
122#elif defined (_RWSTD_INT32_T)
124# if 4 == _RWSTD_INT_SIZE
125# define INT_LEAST16_MAX _RWSTD_INT_MAX
126# define UINT_LEAST16_MAX _RWSTD_UINT_MAX
127# define INT_FAST16_MAX _RWSTD_INT_MAX
128# define UINT_FAST16_MAX _RWSTD_UINT_MAX
129# elif 4 == _RWSTD_LONG_SIZE
130# define INT_LEAST16_MAX _RWSTD_LONG_MAX
131# define UINT_LEAST16_MAX _RWSTD_ULONG_MAX
132# define INT_FAST16_MAX _RWSTD_LONG_MAX
133# define UINT_FAST16_MAX _RWSTD_ULONG_MAX
136#elif defined (_RWSTD_INT64_T)
138# if 8 == _RWSTD_LONG_SIZE
139# define INT_LEAST16_MAX _RWSTD_LONG_MAX
140# define UINT_LEAST16_MAX _RWSTD_ULONG_MAX
141# define INT_FAST16_MAX _RWSTD_LONG_MAX
142# define UINT_FAST16_MAX _RWSTD_ULONG_MAX
143# elif 8 == _RWSTD_LLONG_SIZE
144# define INT_LEAST16_MAX _RWSTD_LLONG_MAX
145# define UINT_LEAST16_MAX _RWSTD_ULLONG_MAX
146# define INT_FAST16_MAX _RWSTD_LLONG_MAX
147# define UINT_FAST16_MAX _RWSTD_ULLONG_MAX
152# define INT_LEAST16_MAX _RWSTD_INT_MAX
153# define UINT_LEAST16_MAX _RWSTD_UINT_MAX
154# define INT_FAST16_MAX _RWSTD_INT_MAX
155# define UINT_FAST16_MAX _RWSTD_UINT_MAX
165typedef _RWSTD_INT32_T int32_t;
166typedef _RWSTD_UINT32_T uint32_t;
168# if 4 == _RWSTD_INT_SIZE
169# define INT32_MAX _RWSTD_INT_MAX
170# define UINT32_MAX _RWSTD_UINT_MAX
171# elif 4 == _RWSTD_LONG_SIZE
172# define INT32_MAX _RWSTD_LONG_MAX
173# define UINT32_MAX _RWSTD_LONG_MAX
176# define INT_LEAST32_MAX INT32_MAX
177# define UINT_LEAST32_MAX UINT32_MAX
178# define INT_FAST32_MAX INT32_MAX
179# define UINT_FAST32_MAX UINT32_MAX
181#elif defined (_RWSTD_INT64_T)
183# if 8 == _RWSTD_LONG_SIZE
184# define INT_LEAST32_MAX _RWSTD_LONG_MAX
185# define UINT_LEAST32_MAX _RWSTD_ULONG_MAX
186# define INT_FAST32_MAX _RWSTD_LONG_MAX
187# define UINT_FAST32_MAX _RWSTD_ULONG_MAX
188# elif 8 == _RWSTD_LLONG_SIZE
189# define INT_LEAST32_MAX _RWSTD_LLONG_MAX
190# define UINT_LEAST32_MAX _RWSTD_ULLONG_MAX
191# define INT_FAST32_MAX _RWSTD_LLONG_MAX
192# define UINT_FAST32_MAX _RWSTD_ULLONG_MAX
197# define INT32_MAX _RWSTD_INT_MAX
198# define UINT32_MAX _RWSTD_UINT_MAX
199# define INT_LEAST32_MAX _RWSTD_INT_MAX
200# define UINT_LEAST32_MAX _RWSTD_UINT_MAX
201# define INT_FAST32_MAX _RWSTD_INT_MAX
202# define UINT_FAST32_MAX _RWSTD_UINT_MAX
212typedef _RWSTD_INT64_T int64_t;
213typedef _RWSTD_UINT64_T uint64_t;
216typedef _RWSTD_INT64_T intmax_t;
217typedef _RWSTD_UINT64_T uintmax_t;
219# if 8 == _RWSTD_LONG_SIZE
220# define INT64_MAX _RWSTD_LONG_MAX
221# define UINT64_MAX _RWSTD_ULONG_MAX
222# elif 8 == _RWSTD_LLONG_SIZE
223# define INT64_MAX _RWSTD_LLONG_MAX
224# define UINT64_MAX _RWSTD_ULLONG_MAX
227# define INT_LEAST64_MAX INT64_MAX
228# define UINT_LEAST64_MAX UINT64_MAX
229# define INT_FAST64_MAX INT64_MAX
230# define UINT_FAST64_MAX UINT64_MAX
232#elif defined (_RWSTD_LONG_LONG)
243typedef long intmax_t;
244typedef unsigned long uintmax_t;
250#if 8 == _RWSTD_PTR_SIZE
252typedef _RWSTD_INT64_T intptr_t;
253typedef _RWSTD_UINT64_T uintptr_t;
255# define INTPTR_MAX INT64_MAX
256# define UINTPTR_MAX UINT64_MAX
258#elif 4 == _RWSTD_PTR_SIZE
260typedef _RWSTD_INT32_T intptr_t;
261typedef _RWSTD_UINT32_T uintptr_t;
263# define INTPTR_MAX INT32_MAX
264# define UINTPTR_MAX UINT32_MAX
266#elif 2 == _RWSTD_PTR_SIZE
268typedef _RWSTD_INT16_T intptr_t;
269typedef _RWSTD_UINT16_T uintptr_t;
271# define INTPTR_MAX INT16_MAX
272# define UINTPTR_MAX UINT16_MAX
276typedef long intptr_t;
277typedef unsigned long uintptr_t;
279# define INTPTR_MAX _RWSTD_LONG_MAX
280# define UINTPTR_MAX _RWSTD_LONG_MAX
286typedef _RWSTD_INT_LEAST8_T int_least8_t;
287typedef _RWSTD_UINT_LEAST8_T uint_least8_t;
288typedef _RWSTD_INT_LEAST8_T int_fast8_t;
289typedef _RWSTD_UINT_LEAST8_T uint_fast8_t;
291typedef _RWSTD_INT_LEAST16_T int_least16_t;
292typedef _RWSTD_UINT_LEAST16_T uint_least16_t;
293typedef _RWSTD_INT_LEAST16_T int_fast16_t;
294typedef _RWSTD_UINT_LEAST16_T uint_fast16_t;
296typedef _RWSTD_INT_LEAST32_T int_least32_t;
297typedef _RWSTD_UINT_LEAST32_T uint_least32_t;
298typedef _RWSTD_INT_LEAST32_T int_fast32_t;
299typedef _RWSTD_UINT_LEAST32_T uint_fast32_t;
301#ifdef _RWSTD_INT_LEAST64_T
303typedef _RWSTD_INT_LEAST64_T int_least64_t;
304typedef _RWSTD_UINT_LEAST64_T uint_least64_t;
305typedef _RWSTD_INT_LEAST64_T int_fast64_t;
306typedef _RWSTD_UINT_LEAST64_T uint_fast64_t;
310#ifdef _RWSTD_INT_LEAST128_T
312typedef _RWSTD_INT_LEAST128_T int_least128_t;
313typedef _RWSTD_UINT_LEAST128_T uint_least128_t;
314typedef _RWSTD_INT_LEAST128_T int_fast128_t;
315typedef _RWSTD_UINT_LEAST128_T uint_fast128_t;
321#define PTRDIFF_MIN _RWSTD_PTRDIFF_MIN
322#define PTRDIFF_MAX _RWSTD_PTRDIFF_MAX
324#define SIZE_MAX _RWSTD_SIZE_MAX
326#define WCHAR_MIN _RWSTD_WCHAR_MIN
327#define WCHAR_MAX _RWSTD_WCHAR_MAX
329#define WINT_MIN _RWSTD_WINT_MIN
330#define WINT_MAX _RWSTD_WINT_MAX
332#define SIG_ATOMIC_MIN _RWSTD_SIG_ATOMIC_MIN
333#define SIG_ATOMIC_MAX _RWSTD_SIG_ATOMIC_MAX
337#define INT8_MIN _RWSTD_T_MIN (INT8_MAX)
338#define INT16_MIN _RWSTD_T_MIN (INT16_MAX)
339#define INT32_MIN _RWSTD_T_MIN (INT32_MAX)
340#define INT64_MIN _RWSTD_T_MIN (INT64_MAX)
342#define INT_LEAST8_MIN _RWSTD_T_MIN (INT_LEAST8_MAX)
343#define INT_LEAST16_MIN _RWSTD_T_MIN (INT_LEAST16_MAX)
344#define INT_LEAST32_MIN _RWSTD_T_MIN (INT_LEAST32_MAX)
345#define INT_LEAST64_MIN _RWSTD_T_MIN (INT_LEAST64_MAX)
347#define INT_FAST8_MIN _RWSTD_T_MIN (INT_FAST8_MAX)
348#define INT_FAST16_MIN _RWSTD_T_MIN (INT_FAST16_MAX)
349#define INT_FAST32_MIN _RWSTD_T_MIN (INT_FAST32_MAX)
350#define INT_FAST64_MIN _RWSTD_T_MIN (INT_FAST64_MAX)
#define _RWSTD_NAMESPACE(name)