annotate paper-stdint.h @ 133:0d8eabdd12ab default tip

create: write H:MM:SS timestamps, add option to fill with gaussian-blur instead of black many albums are longer than one hour so writing H:MM:SS is a necessity. if anything there will just be verbose info that isn't important for my use-case. however the gaussian-blur is simply broken. It works, and it plays locally just fine, but YouTube in particular elongates the video to fit the full width. I'm not entirely sure why it does this, but it makes it useless and ugly.
author Paper <paper@tflc.us>
date Sat, 03 Jan 2026 20:25:38 -0500
parents 35580b661882
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
1 /* paper-stdint.h -- replacement stdint.h that does as much as it can
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
2 * without outside help
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
3 *
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
4 * Copyright (C) 2025 Paper
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
5 *
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
6 * This software is provided 'as-is', without any express or implied
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
7 * warranty. In no event will the authors be held liable for any damages
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
8 * arising from the use of this software.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
9 *
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
10 * Permission is granted to anyone to use this software for any purpose,
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
11 * including commercial applications, and to alter it and redistribute it
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
12 * freely, subject to the following restrictions:
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
13 *
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
14 * 1. The origin of this software must not be misrepresented; you must not
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
15 * claim that you wrote the original software. If you use this software
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
16 * in a product, an acknowledgment in the product documentation would be
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
17 * appreciated but is not required.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
18 * 2. Altered source versions must be plainly marked as such, and must not be
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
19 * misrepresented as being the original software.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
20 * 3. This notice may not be removed or altered from any source distribution.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
21 */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
22
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
23 /**
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
24 * This is a drop-in replacement stdint.h that provides a
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
25 * subset of the features that the C99 equivalent provides.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
26 *
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
27 * There are some caveats:
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
28 * - [u]intptr_t is not here. There's no way to do it portably.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
29 * Thus INTPTR_MAX and friends are not here either. It may
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
30 * be possible to do it with __LP64__ or something, but that
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
31 * really isn't portable either :(
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
32 * - ptrdiff_t is not here.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
33 * - int64_t relies on platform-specific extensions, or C99
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
34 * long long. Add your platform for funsies!
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
35 * - SIZE_MAX cannot be done portably. The closest thing we have
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
36 * is (~(size_t)0), which does not work in preprocessor
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
37 * expressions.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
38 * - WINT_MIN cannot be done portably, nor can WCHAR_MIN,
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
39 * WINT_MAX, or WCHAR_MAX.
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
40 * - I have not implemented scanf specifiers. I don't use
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
41 * them, and neither should you. (the real reason is that
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
42 * "%hhd" was only added in C99).
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
43 *
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
44 * Maybe there's just something I missed. As far as I know
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
45 * these are impossible to do without compiler-specific
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
46 * extensions. --paper
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
47 **/
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
48
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
49 #ifndef PAPER_STDINT_H_
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
50 #define PAPER_STDINT_H_
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
51
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
52 /* need limits.h for INT_MIN etc */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
53 #include <limits.h>
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
54
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
55 #define INT8_MAX 0x7F
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
56 #define INT8_MIN (-INT8_MAX - 1)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
57 #define INT16_MAX 0x7FFF
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
58 #define INT16_MIN (-INT16_MAX - 1)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
59 #define INT32_MAX 0x7FFFFFFF
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
60 #define INT32_MIN (-INT32_MAX - 1)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
61 #define INT64_MAX 0x7FFFFFFFFFFFFFFF
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
62 #define INT64_MIN (-INT64_MAX - 1)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
63 #define UINT8_MAX 0xFFu
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
64 #define UINT16_MAX 0xFFFFu
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
65 #define UINT32_MAX 0xFFFFFFFFu
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
66 #define UINT64_MAX 0xFFFFFFFFFFFFFFFFu
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
67
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
68 /* ?? */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
69 #ifndef SIZE_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
70 # define SIZE_MAX (~(size_t)0)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
71 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
72
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
73 #if UCHAR_MAX == UINT8_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
74 typedef unsigned char uint8_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
75 # define PRIu8 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
76 # define PRIo8 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
77 # define PRIx8 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
78 # define PRIX8 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
79 # define UINT8_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
80 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
81 # error "no unsigned 8-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
82 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
83
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
84 #if UCHAR_MAX == UINT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
85 typedef unsigned char uint16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
86 # define PRIu16 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
87 # define PRIo16 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
88 # define PRIx16 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
89 # define PRIX16 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
90 # define UINT16_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
91 #elif USHRT_MAX == UINT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
92 typedef unsigned short uint16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
93 # define PRIu16 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
94 # define PRIo16 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
95 # define PRIx16 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
96 # define PRIX16 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
97 # define UINT16_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
98 #elif UINT_MAX == UINT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
99 typedef unsigned int uint16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
100 # define PRIu16 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
101 # define PRIo16 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
102 # define PRIx16 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
103 # define PRIX16 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
104 # define UINT16_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
105 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
106 # error "no unsigned 16-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
107 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
108
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
109 #if UCHAR_MAX == UINT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
110 typedef unsigned char uint32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
111 # define PRIu32 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
112 # define PRIo32 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
113 # define PRIx32 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
114 # define PRIX32 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
115 # define UINT32_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
116 #elif USHRT_MAX == UINT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
117 typedef unsigned short uint32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
118 # define PRIu32 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
119 # define PRIo32 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
120 # define PRIx32 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
121 # define PRIX32 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
122 # define UINT32_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
123 #elif UINT_MAX == UINT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
124 typedef unsigned int uint32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
125 # define PRIu32 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
126 # define PRIo32 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
127 # define PRIx32 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
128 # define PRIX32 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
129 # define UINT32_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
130 #elif ULONG_MAX == UINT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
131 typedef unsigned long uint32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
132 # define PRIu32 "lu"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
133 # define PRIo32 "lo"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
134 # define PRIx32 "lx"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
135 # define PRIX32 "lX"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
136 # define UINT32_C(x) x ## UL
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
137 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
138 # error "no unsigned 32-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
139 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
140
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
141 #if UCHAR_MAX == UINT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
142 typedef unsigned char uint64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
143 # define PRIu64 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
144 # define PRIo64 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
145 # define PRIx64 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
146 # define PRIX64 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
147 # define UINT64_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
148 #elif USHRT_MAX == UINT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
149 typedef unsigned short uint64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
150 # define PRIu64 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
151 # define PRIo64 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
152 # define PRIx64 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
153 # define PRIX64 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
154 # define UINT64_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
155 #elif UINT_MAX == UINT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
156 typedef unsigned int uint64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
157 # define PRIu64 "u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
158 # define PRIo64 "o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
159 # define PRIx64 "x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
160 # define PRIX64 "X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
161 # define UINT64_C(x) x ## U
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
162 #elif ULONG_MAX == UINT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
163 typedef unsigned long uint64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
164 # define PRIu64 "lu"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
165 # define PRIo64 "lo"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
166 # define PRIx64 "lx"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
167 # define PRIX64 "lX"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
168 # define UINT64_C(x) x ## UL
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
169 #elif defined(_MSC_VER)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
170 typedef unsigned __int64 uint64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
171 # define PRIu64 "I64u"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
172 # define PRIo64 "I64o"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
173 # define PRIx64 "I64x"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
174 # define PRIX64 "I64X"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
175 # define UINT64_C(x) x ## Ui64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
176 #elif ULLONG_MAX == UINT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
177 /* C99 */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
178 typedef unsigned long long uint64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
179 # define PRIu64 "llu"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
180 # define PRIo64 "llo"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
181 # define PRIx64 "llx"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
182 # define PRIX64 "llX"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
183 # define UINT64_C(x) x ## ULL
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
184 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
185 # error "no unsigned 64-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
186 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
187
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
188 #if SCHAR_MIN == INT8_MIN && SCHAR_MAX == INT8_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
189 typedef signed char int8_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
190 # define PRId8 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
191 # define INT8_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
192 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
193 # error "no signed 8-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
194 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
195
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
196 #if SCHAR_MIN == INT16_MIN && SCHAR_MAX == INT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
197 typedef signed char int16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
198 # define PRId16 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
199 # define INT16_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
200 #elif SHRT_MIN == INT16_MIN && SHRT_MAX == INT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
201 typedef signed short int16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
202 # define PRId16 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
203 # define INT16_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
204 #elif INT_MIN == INT16_MIN && INT_MAX == INT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
205 typedef signed int int16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
206 # define PRId16 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
207 # define INT16_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
208 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
209 # error "no signed 16-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
210 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
211
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
212 #if SCHAR_MIN == INT32_MIN && SCHAR_MAX == INT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
213 typedef signed char int32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
214 # define PRId32 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
215 # define INT32_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
216 #elif SHRT_MIN == INT32_MIN && SHRT_MAX == INT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
217 typedef signed short int32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
218 # define PRId32 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
219 # define INT32_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
220 #elif INT_MIN == INT32_MIN && INT_MAX == INT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
221 typedef signed int int32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
222 # define PRId32 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
223 # define INT32_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
224 #elif LONG_MIN == INT32_MIN && LONG_MAX == INT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
225 typedef signed long int32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
226 # define PRId32 "ld"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
227 # define INT32_C(x) x ## L
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
228 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
229 # error "no signed 32-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
230 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
231
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
232 #if SCHAR_MIN == INT64_MIN && SCHAR_MAX == INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
233 typedef signed char int64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
234 # define PRId64 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
235 # define INT64_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
236 #elif SHRT_MIN == INT64_MIN && SHRT_MAX == INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
237 typedef signed short int64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
238 # define PRId64 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
239 # define INT64_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
240 #elif INT_MIN == INT64_MIN && INT_MAX == INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
241 typedef signed int int64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
242 # define PRId64 "d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
243 # define INT64_C(x) x
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
244 #elif LONG_MIN == INT64_MIN && LONG_MAX == INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
245 typedef signed long int64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
246 # define PRId64 "ld"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
247 # define INT64_C(x) x ## L
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
248 #elif defined(_MSC_VER)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
249 typedef signed __int64 int64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
250 # define PRId64 "I64d"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
251 # define INT64_C(x) x ## i64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
252 #elif LLONG_MIN == INT64_MIN && LLONG_MAX == INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
253 typedef signed long long int64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
254 # define PRId64 "lld"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
255 # define INT64_C(x) x ## LL
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
256 #else
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
257 # error "no signed 64-bit type"
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
258 #endif
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
259
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
260 #define PRIi8 PRId8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
261 #define PRIi16 PRId16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
262 #define PRIi32 PRId32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
263 #define PRIi64 PRId64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
264
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
265 /* -------------------------------------------------------------------------------- */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
266 /* least types */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
267
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
268 typedef int8_t int_least8_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
269 typedef int16_t int_least16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
270 typedef int32_t int_least32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
271 typedef int64_t int_least64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
272
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
273 #define INT_LEAST8_MIN INT8_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
274 #define INT_LEAST8_MAX INT8_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
275 #define INT_LEAST16_MIN INT16_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
276 #define INT_LEAST16_MAX INT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
277 #define INT_LEAST32_MIN INT32_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
278 #define INT_LEAST32_MAX INT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
279 #define INT_LEAST64_MIN INT64_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
280 #define INT_LEAST64_MAX INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
281
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
282 #define PRIdLEAST8 PRId8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
283 #define PRIdLEAST16 PRId16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
284 #define PRIdLEAST32 PRId32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
285 #define PRIdLEAST64 PRId64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
286 #define PRIxLEAST8 PRIx8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
287 #define PRIxLEAST16 PRIx16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
288 #define PRIxLEAST32 PRIx32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
289 #define PRIxLEAST64 PRIx64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
290 #define PRIoLEAST8 PRIo8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
291 #define PRIoLEAST16 PRIo16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
292 #define PRIoLEAST32 PRIo32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
293 #define PRIoLEAST64 PRIo64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
294 #define PRIiLEAST8 PRIi8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
295 #define PRIiLEAST16 PRIi16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
296 #define PRIiLEAST32 PRIi32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
297 #define PRIiLEAST64 PRIi64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
298 #define PRIXLEAST8 PRIX8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
299 #define PRIXLEAST16 PRIX16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
300 #define PRIXLEAST32 PRIX32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
301 #define PRIXLEAST64 PRIX64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
302 #define PRIuLEAST8 PRIu8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
303 #define PRIuLEAST16 PRIu16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
304 #define PRIuLEAST32 PRIu32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
305 #define PRIuLEAST64 PRIu64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
306
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
307 /* -------------------------------------------------------------------------------- */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
308 /* fast types */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
309
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
310 typedef int8_t int_fast8_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
311 typedef int16_t int_fast16_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
312 typedef int32_t int_fast32_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
313 typedef int64_t int_fast64_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
314
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
315 #define INT_FAST8_MIN INT8_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
316 #define INT_FAST8_MAX INT8_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
317 #define INT_FAST16_MIN INT16_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
318 #define INT_FAST16_MAX INT16_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
319 #define INT_FAST32_MIN INT32_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
320 #define INT_FAST32_MAX INT32_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
321 #define INT_FAST64_MIN INT64_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
322 #define INT_FAST64_MAX INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
323
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
324 #define PRIdFAST8 PRId8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
325 #define PRIdFAST16 PRId16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
326 #define PRIdFAST32 PRId32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
327 #define PRIdFAST64 PRId64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
328 #define PRIxFAST8 PRIx8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
329 #define PRIxFAST16 PRIx16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
330 #define PRIxFAST32 PRIx32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
331 #define PRIxFAST64 PRIx64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
332 #define PRIoFAST8 PRIo8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
333 #define PRIoFAST16 PRIo16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
334 #define PRIoFAST32 PRIo32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
335 #define PRIoFAST64 PRIo64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
336 #define PRIiFAST8 PRIi8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
337 #define PRIiFAST16 PRIi16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
338 #define PRIiFAST32 PRIi32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
339 #define PRIiFAST64 PRIi64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
340 #define PRIXFAST8 PRIX8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
341 #define PRIXFAST16 PRIX16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
342 #define PRIXFAST32 PRIX32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
343 #define PRIXFAST64 PRIX64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
344 #define PRIuFAST8 PRIu8
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
345 #define PRIuFAST16 PRIu16
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
346 #define PRIuFAST32 PRIu32
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
347 #define PRIuFAST64 PRIu64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
348
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
349 /* -------------------------------------------------------------------------------- */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
350 /* [u]intmax_t -- this is hardcoded to 64-bit, beware! */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
351
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
352 typedef int64_t intmax_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
353 typedef uint64_t uintmax_t;
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
354
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
355 #define INTMAX_MIN INT64_MIN
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
356 #define INTMAX_MAX INT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
357 #define UINTMAX_MAX UINT64_MAX
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
358
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
359 #define PRIdMAX PRId64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
360 #define PRIuMAX PRIu64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
361 #define PRIxMAX PRIx64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
362 #define PRIXMAX PRIX64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
363 #define PRIoMAX PRIo64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
364 #define PRIiMAX PRIi64
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
365
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
366 #define INTMAX_C(x) INT64_C(x)
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
367
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
368 #endif /* PAPER_STDINT_H_ */
35580b661882 clump it
Paper <paper@tflc.us>
parents:
diff changeset
369