1 // After editing this file, run "go generate" in the ../data directory.
2
3 // Copyright 2017 The Wuffs Authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // https://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16
17 // ---------------- Ranges and Rects
18
19 // See https://github.com/google/wuffs/blob/master/doc/note/ranges-and-rects.md
20
21 typedef struct wuffs_base__range_ii_u32__struct {
22 uint32_t min_incl;
23 uint32_t max_incl;
24
25 #ifdef __cplusplus
26 inline bool is_empty() const;
27 inline bool equals(wuffs_base__range_ii_u32__struct s) const;
28 inline wuffs_base__range_ii_u32__struct intersect(
29 wuffs_base__range_ii_u32__struct s) const;
30 inline wuffs_base__range_ii_u32__struct unite(
31 wuffs_base__range_ii_u32__struct s) const;
32 inline bool contains(uint32_t x) const;
33 inline bool contains_range(wuffs_base__range_ii_u32__struct s) const;
34 #endif // __cplusplus
35
36 } wuffs_base__range_ii_u32;
37
38 static inline wuffs_base__range_ii_u32 //
wuffs_base__empty_range_ii_u32()39 wuffs_base__empty_range_ii_u32() {
40 wuffs_base__range_ii_u32 ret;
41 ret.min_incl = 0;
42 ret.max_incl = 0;
43 return ret;
44 }
45
46 static inline wuffs_base__range_ii_u32 //
wuffs_base__make_range_ii_u32(uint32_t min_incl,uint32_t max_incl)47 wuffs_base__make_range_ii_u32(uint32_t min_incl, uint32_t max_incl) {
48 wuffs_base__range_ii_u32 ret;
49 ret.min_incl = min_incl;
50 ret.max_incl = max_incl;
51 return ret;
52 }
53
54 static inline bool //
wuffs_base__range_ii_u32__is_empty(const wuffs_base__range_ii_u32 * r)55 wuffs_base__range_ii_u32__is_empty(const wuffs_base__range_ii_u32* r) {
56 return r->min_incl > r->max_incl;
57 }
58
59 static inline bool //
wuffs_base__range_ii_u32__equals(const wuffs_base__range_ii_u32 * r,wuffs_base__range_ii_u32 s)60 wuffs_base__range_ii_u32__equals(const wuffs_base__range_ii_u32* r,
61 wuffs_base__range_ii_u32 s) {
62 return (r->min_incl == s.min_incl && r->max_incl == s.max_incl) ||
63 (wuffs_base__range_ii_u32__is_empty(r) &&
64 wuffs_base__range_ii_u32__is_empty(&s));
65 }
66
67 static inline wuffs_base__range_ii_u32 //
wuffs_base__range_ii_u32__intersect(const wuffs_base__range_ii_u32 * r,wuffs_base__range_ii_u32 s)68 wuffs_base__range_ii_u32__intersect(const wuffs_base__range_ii_u32* r,
69 wuffs_base__range_ii_u32 s) {
70 wuffs_base__range_ii_u32 t;
71 t.min_incl = wuffs_base__u32__max(r->min_incl, s.min_incl);
72 t.max_incl = wuffs_base__u32__min(r->max_incl, s.max_incl);
73 return t;
74 }
75
76 static inline wuffs_base__range_ii_u32 //
wuffs_base__range_ii_u32__unite(const wuffs_base__range_ii_u32 * r,wuffs_base__range_ii_u32 s)77 wuffs_base__range_ii_u32__unite(const wuffs_base__range_ii_u32* r,
78 wuffs_base__range_ii_u32 s) {
79 if (wuffs_base__range_ii_u32__is_empty(r)) {
80 return s;
81 }
82 if (wuffs_base__range_ii_u32__is_empty(&s)) {
83 return *r;
84 }
85 wuffs_base__range_ii_u32 t;
86 t.min_incl = wuffs_base__u32__min(r->min_incl, s.min_incl);
87 t.max_incl = wuffs_base__u32__max(r->max_incl, s.max_incl);
88 return t;
89 }
90
91 static inline bool //
wuffs_base__range_ii_u32__contains(const wuffs_base__range_ii_u32 * r,uint32_t x)92 wuffs_base__range_ii_u32__contains(const wuffs_base__range_ii_u32* r,
93 uint32_t x) {
94 return (r->min_incl <= x) && (x <= r->max_incl);
95 }
96
97 static inline bool //
wuffs_base__range_ii_u32__contains_range(const wuffs_base__range_ii_u32 * r,wuffs_base__range_ii_u32 s)98 wuffs_base__range_ii_u32__contains_range(const wuffs_base__range_ii_u32* r,
99 wuffs_base__range_ii_u32 s) {
100 return wuffs_base__range_ii_u32__equals(
101 &s, wuffs_base__range_ii_u32__intersect(r, s));
102 }
103
104 #ifdef __cplusplus
105
106 inline bool //
is_empty()107 wuffs_base__range_ii_u32::is_empty() const {
108 return wuffs_base__range_ii_u32__is_empty(this);
109 }
110
111 inline bool //
equals(wuffs_base__range_ii_u32 s)112 wuffs_base__range_ii_u32::equals(wuffs_base__range_ii_u32 s) const {
113 return wuffs_base__range_ii_u32__equals(this, s);
114 }
115
116 inline wuffs_base__range_ii_u32 //
intersect(wuffs_base__range_ii_u32 s)117 wuffs_base__range_ii_u32::intersect(wuffs_base__range_ii_u32 s) const {
118 return wuffs_base__range_ii_u32__intersect(this, s);
119 }
120
121 inline wuffs_base__range_ii_u32 //
unite(wuffs_base__range_ii_u32 s)122 wuffs_base__range_ii_u32::unite(wuffs_base__range_ii_u32 s) const {
123 return wuffs_base__range_ii_u32__unite(this, s);
124 }
125
126 inline bool //
contains(uint32_t x)127 wuffs_base__range_ii_u32::contains(uint32_t x) const {
128 return wuffs_base__range_ii_u32__contains(this, x);
129 }
130
131 inline bool //
contains_range(wuffs_base__range_ii_u32 s)132 wuffs_base__range_ii_u32::contains_range(wuffs_base__range_ii_u32 s) const {
133 return wuffs_base__range_ii_u32__contains_range(this, s);
134 }
135
136 #endif // __cplusplus
137
138 // --------
139
140 typedef struct wuffs_base__range_ie_u32__struct {
141 uint32_t min_incl;
142 uint32_t max_excl;
143
144 #ifdef __cplusplus
145 inline bool is_empty() const;
146 inline bool equals(wuffs_base__range_ie_u32__struct s) const;
147 inline wuffs_base__range_ie_u32__struct intersect(
148 wuffs_base__range_ie_u32__struct s) const;
149 inline wuffs_base__range_ie_u32__struct unite(
150 wuffs_base__range_ie_u32__struct s) const;
151 inline bool contains(uint32_t x) const;
152 inline bool contains_range(wuffs_base__range_ie_u32__struct s) const;
153 inline uint32_t length() const;
154 #endif // __cplusplus
155
156 } wuffs_base__range_ie_u32;
157
158 static inline wuffs_base__range_ie_u32 //
wuffs_base__empty_range_ie_u32()159 wuffs_base__empty_range_ie_u32() {
160 wuffs_base__range_ie_u32 ret;
161 ret.min_incl = 0;
162 ret.max_excl = 0;
163 return ret;
164 }
165
166 static inline wuffs_base__range_ie_u32 //
wuffs_base__make_range_ie_u32(uint32_t min_incl,uint32_t max_excl)167 wuffs_base__make_range_ie_u32(uint32_t min_incl, uint32_t max_excl) {
168 wuffs_base__range_ie_u32 ret;
169 ret.min_incl = min_incl;
170 ret.max_excl = max_excl;
171 return ret;
172 }
173
174 static inline bool //
wuffs_base__range_ie_u32__is_empty(const wuffs_base__range_ie_u32 * r)175 wuffs_base__range_ie_u32__is_empty(const wuffs_base__range_ie_u32* r) {
176 return r->min_incl >= r->max_excl;
177 }
178
179 static inline bool //
wuffs_base__range_ie_u32__equals(const wuffs_base__range_ie_u32 * r,wuffs_base__range_ie_u32 s)180 wuffs_base__range_ie_u32__equals(const wuffs_base__range_ie_u32* r,
181 wuffs_base__range_ie_u32 s) {
182 return (r->min_incl == s.min_incl && r->max_excl == s.max_excl) ||
183 (wuffs_base__range_ie_u32__is_empty(r) &&
184 wuffs_base__range_ie_u32__is_empty(&s));
185 }
186
187 static inline wuffs_base__range_ie_u32 //
wuffs_base__range_ie_u32__intersect(const wuffs_base__range_ie_u32 * r,wuffs_base__range_ie_u32 s)188 wuffs_base__range_ie_u32__intersect(const wuffs_base__range_ie_u32* r,
189 wuffs_base__range_ie_u32 s) {
190 wuffs_base__range_ie_u32 t;
191 t.min_incl = wuffs_base__u32__max(r->min_incl, s.min_incl);
192 t.max_excl = wuffs_base__u32__min(r->max_excl, s.max_excl);
193 return t;
194 }
195
196 static inline wuffs_base__range_ie_u32 //
wuffs_base__range_ie_u32__unite(const wuffs_base__range_ie_u32 * r,wuffs_base__range_ie_u32 s)197 wuffs_base__range_ie_u32__unite(const wuffs_base__range_ie_u32* r,
198 wuffs_base__range_ie_u32 s) {
199 if (wuffs_base__range_ie_u32__is_empty(r)) {
200 return s;
201 }
202 if (wuffs_base__range_ie_u32__is_empty(&s)) {
203 return *r;
204 }
205 wuffs_base__range_ie_u32 t;
206 t.min_incl = wuffs_base__u32__min(r->min_incl, s.min_incl);
207 t.max_excl = wuffs_base__u32__max(r->max_excl, s.max_excl);
208 return t;
209 }
210
211 static inline bool //
wuffs_base__range_ie_u32__contains(const wuffs_base__range_ie_u32 * r,uint32_t x)212 wuffs_base__range_ie_u32__contains(const wuffs_base__range_ie_u32* r,
213 uint32_t x) {
214 return (r->min_incl <= x) && (x < r->max_excl);
215 }
216
217 static inline bool //
wuffs_base__range_ie_u32__contains_range(const wuffs_base__range_ie_u32 * r,wuffs_base__range_ie_u32 s)218 wuffs_base__range_ie_u32__contains_range(const wuffs_base__range_ie_u32* r,
219 wuffs_base__range_ie_u32 s) {
220 return wuffs_base__range_ie_u32__equals(
221 &s, wuffs_base__range_ie_u32__intersect(r, s));
222 }
223
224 static inline uint32_t //
wuffs_base__range_ie_u32__length(const wuffs_base__range_ie_u32 * r)225 wuffs_base__range_ie_u32__length(const wuffs_base__range_ie_u32* r) {
226 return wuffs_base__u32__sat_sub(r->max_excl, r->min_incl);
227 }
228
229 #ifdef __cplusplus
230
231 inline bool //
is_empty()232 wuffs_base__range_ie_u32::is_empty() const {
233 return wuffs_base__range_ie_u32__is_empty(this);
234 }
235
236 inline bool //
equals(wuffs_base__range_ie_u32 s)237 wuffs_base__range_ie_u32::equals(wuffs_base__range_ie_u32 s) const {
238 return wuffs_base__range_ie_u32__equals(this, s);
239 }
240
241 inline wuffs_base__range_ie_u32 //
intersect(wuffs_base__range_ie_u32 s)242 wuffs_base__range_ie_u32::intersect(wuffs_base__range_ie_u32 s) const {
243 return wuffs_base__range_ie_u32__intersect(this, s);
244 }
245
246 inline wuffs_base__range_ie_u32 //
unite(wuffs_base__range_ie_u32 s)247 wuffs_base__range_ie_u32::unite(wuffs_base__range_ie_u32 s) const {
248 return wuffs_base__range_ie_u32__unite(this, s);
249 }
250
251 inline bool //
contains(uint32_t x)252 wuffs_base__range_ie_u32::contains(uint32_t x) const {
253 return wuffs_base__range_ie_u32__contains(this, x);
254 }
255
256 inline bool //
contains_range(wuffs_base__range_ie_u32 s)257 wuffs_base__range_ie_u32::contains_range(wuffs_base__range_ie_u32 s) const {
258 return wuffs_base__range_ie_u32__contains_range(this, s);
259 }
260
261 inline uint32_t //
length()262 wuffs_base__range_ie_u32::length() const {
263 return wuffs_base__range_ie_u32__length(this);
264 }
265
266 #endif // __cplusplus
267
268 // --------
269
270 typedef struct wuffs_base__range_ii_u64__struct {
271 uint64_t min_incl;
272 uint64_t max_incl;
273
274 #ifdef __cplusplus
275 inline bool is_empty() const;
276 inline bool equals(wuffs_base__range_ii_u64__struct s) const;
277 inline wuffs_base__range_ii_u64__struct intersect(
278 wuffs_base__range_ii_u64__struct s) const;
279 inline wuffs_base__range_ii_u64__struct unite(
280 wuffs_base__range_ii_u64__struct s) const;
281 inline bool contains(uint64_t x) const;
282 inline bool contains_range(wuffs_base__range_ii_u64__struct s) const;
283 #endif // __cplusplus
284
285 } wuffs_base__range_ii_u64;
286
287 static inline wuffs_base__range_ii_u64 //
wuffs_base__empty_range_ii_u64()288 wuffs_base__empty_range_ii_u64() {
289 wuffs_base__range_ii_u64 ret;
290 ret.min_incl = 0;
291 ret.max_incl = 0;
292 return ret;
293 }
294
295 static inline wuffs_base__range_ii_u64 //
wuffs_base__make_range_ii_u64(uint64_t min_incl,uint64_t max_incl)296 wuffs_base__make_range_ii_u64(uint64_t min_incl, uint64_t max_incl) {
297 wuffs_base__range_ii_u64 ret;
298 ret.min_incl = min_incl;
299 ret.max_incl = max_incl;
300 return ret;
301 }
302
303 static inline bool //
wuffs_base__range_ii_u64__is_empty(const wuffs_base__range_ii_u64 * r)304 wuffs_base__range_ii_u64__is_empty(const wuffs_base__range_ii_u64* r) {
305 return r->min_incl > r->max_incl;
306 }
307
308 static inline bool //
wuffs_base__range_ii_u64__equals(const wuffs_base__range_ii_u64 * r,wuffs_base__range_ii_u64 s)309 wuffs_base__range_ii_u64__equals(const wuffs_base__range_ii_u64* r,
310 wuffs_base__range_ii_u64 s) {
311 return (r->min_incl == s.min_incl && r->max_incl == s.max_incl) ||
312 (wuffs_base__range_ii_u64__is_empty(r) &&
313 wuffs_base__range_ii_u64__is_empty(&s));
314 }
315
316 static inline wuffs_base__range_ii_u64 //
wuffs_base__range_ii_u64__intersect(const wuffs_base__range_ii_u64 * r,wuffs_base__range_ii_u64 s)317 wuffs_base__range_ii_u64__intersect(const wuffs_base__range_ii_u64* r,
318 wuffs_base__range_ii_u64 s) {
319 wuffs_base__range_ii_u64 t;
320 t.min_incl = wuffs_base__u64__max(r->min_incl, s.min_incl);
321 t.max_incl = wuffs_base__u64__min(r->max_incl, s.max_incl);
322 return t;
323 }
324
325 static inline wuffs_base__range_ii_u64 //
wuffs_base__range_ii_u64__unite(const wuffs_base__range_ii_u64 * r,wuffs_base__range_ii_u64 s)326 wuffs_base__range_ii_u64__unite(const wuffs_base__range_ii_u64* r,
327 wuffs_base__range_ii_u64 s) {
328 if (wuffs_base__range_ii_u64__is_empty(r)) {
329 return s;
330 }
331 if (wuffs_base__range_ii_u64__is_empty(&s)) {
332 return *r;
333 }
334 wuffs_base__range_ii_u64 t;
335 t.min_incl = wuffs_base__u64__min(r->min_incl, s.min_incl);
336 t.max_incl = wuffs_base__u64__max(r->max_incl, s.max_incl);
337 return t;
338 }
339
340 static inline bool //
wuffs_base__range_ii_u64__contains(const wuffs_base__range_ii_u64 * r,uint64_t x)341 wuffs_base__range_ii_u64__contains(const wuffs_base__range_ii_u64* r,
342 uint64_t x) {
343 return (r->min_incl <= x) && (x <= r->max_incl);
344 }
345
346 static inline bool //
wuffs_base__range_ii_u64__contains_range(const wuffs_base__range_ii_u64 * r,wuffs_base__range_ii_u64 s)347 wuffs_base__range_ii_u64__contains_range(const wuffs_base__range_ii_u64* r,
348 wuffs_base__range_ii_u64 s) {
349 return wuffs_base__range_ii_u64__equals(
350 &s, wuffs_base__range_ii_u64__intersect(r, s));
351 }
352
353 #ifdef __cplusplus
354
355 inline bool //
is_empty()356 wuffs_base__range_ii_u64::is_empty() const {
357 return wuffs_base__range_ii_u64__is_empty(this);
358 }
359
360 inline bool //
equals(wuffs_base__range_ii_u64 s)361 wuffs_base__range_ii_u64::equals(wuffs_base__range_ii_u64 s) const {
362 return wuffs_base__range_ii_u64__equals(this, s);
363 }
364
365 inline wuffs_base__range_ii_u64 //
intersect(wuffs_base__range_ii_u64 s)366 wuffs_base__range_ii_u64::intersect(wuffs_base__range_ii_u64 s) const {
367 return wuffs_base__range_ii_u64__intersect(this, s);
368 }
369
370 inline wuffs_base__range_ii_u64 //
unite(wuffs_base__range_ii_u64 s)371 wuffs_base__range_ii_u64::unite(wuffs_base__range_ii_u64 s) const {
372 return wuffs_base__range_ii_u64__unite(this, s);
373 }
374
375 inline bool //
contains(uint64_t x)376 wuffs_base__range_ii_u64::contains(uint64_t x) const {
377 return wuffs_base__range_ii_u64__contains(this, x);
378 }
379
380 inline bool //
contains_range(wuffs_base__range_ii_u64 s)381 wuffs_base__range_ii_u64::contains_range(wuffs_base__range_ii_u64 s) const {
382 return wuffs_base__range_ii_u64__contains_range(this, s);
383 }
384
385 #endif // __cplusplus
386
387 // --------
388
389 typedef struct wuffs_base__range_ie_u64__struct {
390 uint64_t min_incl;
391 uint64_t max_excl;
392
393 #ifdef __cplusplus
394 inline bool is_empty() const;
395 inline bool equals(wuffs_base__range_ie_u64__struct s) const;
396 inline wuffs_base__range_ie_u64__struct intersect(
397 wuffs_base__range_ie_u64__struct s) const;
398 inline wuffs_base__range_ie_u64__struct unite(
399 wuffs_base__range_ie_u64__struct s) const;
400 inline bool contains(uint64_t x) const;
401 inline bool contains_range(wuffs_base__range_ie_u64__struct s) const;
402 inline uint64_t length() const;
403 #endif // __cplusplus
404
405 } wuffs_base__range_ie_u64;
406
407 static inline wuffs_base__range_ie_u64 //
wuffs_base__empty_range_ie_u64()408 wuffs_base__empty_range_ie_u64() {
409 wuffs_base__range_ie_u64 ret;
410 ret.min_incl = 0;
411 ret.max_excl = 0;
412 return ret;
413 }
414
415 static inline wuffs_base__range_ie_u64 //
wuffs_base__make_range_ie_u64(uint64_t min_incl,uint64_t max_excl)416 wuffs_base__make_range_ie_u64(uint64_t min_incl, uint64_t max_excl) {
417 wuffs_base__range_ie_u64 ret;
418 ret.min_incl = min_incl;
419 ret.max_excl = max_excl;
420 return ret;
421 }
422
423 static inline bool //
wuffs_base__range_ie_u64__is_empty(const wuffs_base__range_ie_u64 * r)424 wuffs_base__range_ie_u64__is_empty(const wuffs_base__range_ie_u64* r) {
425 return r->min_incl >= r->max_excl;
426 }
427
428 static inline bool //
wuffs_base__range_ie_u64__equals(const wuffs_base__range_ie_u64 * r,wuffs_base__range_ie_u64 s)429 wuffs_base__range_ie_u64__equals(const wuffs_base__range_ie_u64* r,
430 wuffs_base__range_ie_u64 s) {
431 return (r->min_incl == s.min_incl && r->max_excl == s.max_excl) ||
432 (wuffs_base__range_ie_u64__is_empty(r) &&
433 wuffs_base__range_ie_u64__is_empty(&s));
434 }
435
436 static inline wuffs_base__range_ie_u64 //
wuffs_base__range_ie_u64__intersect(const wuffs_base__range_ie_u64 * r,wuffs_base__range_ie_u64 s)437 wuffs_base__range_ie_u64__intersect(const wuffs_base__range_ie_u64* r,
438 wuffs_base__range_ie_u64 s) {
439 wuffs_base__range_ie_u64 t;
440 t.min_incl = wuffs_base__u64__max(r->min_incl, s.min_incl);
441 t.max_excl = wuffs_base__u64__min(r->max_excl, s.max_excl);
442 return t;
443 }
444
445 static inline wuffs_base__range_ie_u64 //
wuffs_base__range_ie_u64__unite(const wuffs_base__range_ie_u64 * r,wuffs_base__range_ie_u64 s)446 wuffs_base__range_ie_u64__unite(const wuffs_base__range_ie_u64* r,
447 wuffs_base__range_ie_u64 s) {
448 if (wuffs_base__range_ie_u64__is_empty(r)) {
449 return s;
450 }
451 if (wuffs_base__range_ie_u64__is_empty(&s)) {
452 return *r;
453 }
454 wuffs_base__range_ie_u64 t;
455 t.min_incl = wuffs_base__u64__min(r->min_incl, s.min_incl);
456 t.max_excl = wuffs_base__u64__max(r->max_excl, s.max_excl);
457 return t;
458 }
459
460 static inline bool //
wuffs_base__range_ie_u64__contains(const wuffs_base__range_ie_u64 * r,uint64_t x)461 wuffs_base__range_ie_u64__contains(const wuffs_base__range_ie_u64* r,
462 uint64_t x) {
463 return (r->min_incl <= x) && (x < r->max_excl);
464 }
465
466 static inline bool //
wuffs_base__range_ie_u64__contains_range(const wuffs_base__range_ie_u64 * r,wuffs_base__range_ie_u64 s)467 wuffs_base__range_ie_u64__contains_range(const wuffs_base__range_ie_u64* r,
468 wuffs_base__range_ie_u64 s) {
469 return wuffs_base__range_ie_u64__equals(
470 &s, wuffs_base__range_ie_u64__intersect(r, s));
471 }
472
473 static inline uint64_t //
wuffs_base__range_ie_u64__length(const wuffs_base__range_ie_u64 * r)474 wuffs_base__range_ie_u64__length(const wuffs_base__range_ie_u64* r) {
475 return wuffs_base__u64__sat_sub(r->max_excl, r->min_incl);
476 }
477
478 #ifdef __cplusplus
479
480 inline bool //
is_empty()481 wuffs_base__range_ie_u64::is_empty() const {
482 return wuffs_base__range_ie_u64__is_empty(this);
483 }
484
485 inline bool //
equals(wuffs_base__range_ie_u64 s)486 wuffs_base__range_ie_u64::equals(wuffs_base__range_ie_u64 s) const {
487 return wuffs_base__range_ie_u64__equals(this, s);
488 }
489
490 inline wuffs_base__range_ie_u64 //
intersect(wuffs_base__range_ie_u64 s)491 wuffs_base__range_ie_u64::intersect(wuffs_base__range_ie_u64 s) const {
492 return wuffs_base__range_ie_u64__intersect(this, s);
493 }
494
495 inline wuffs_base__range_ie_u64 //
unite(wuffs_base__range_ie_u64 s)496 wuffs_base__range_ie_u64::unite(wuffs_base__range_ie_u64 s) const {
497 return wuffs_base__range_ie_u64__unite(this, s);
498 }
499
500 inline bool //
contains(uint64_t x)501 wuffs_base__range_ie_u64::contains(uint64_t x) const {
502 return wuffs_base__range_ie_u64__contains(this, x);
503 }
504
505 inline bool //
contains_range(wuffs_base__range_ie_u64 s)506 wuffs_base__range_ie_u64::contains_range(wuffs_base__range_ie_u64 s) const {
507 return wuffs_base__range_ie_u64__contains_range(this, s);
508 }
509
510 inline uint64_t //
length()511 wuffs_base__range_ie_u64::length() const {
512 return wuffs_base__range_ie_u64__length(this);
513 }
514
515 #endif // __cplusplus
516
517 // --------
518
519 typedef struct wuffs_base__rect_ii_u32__struct {
520 uint32_t min_incl_x;
521 uint32_t min_incl_y;
522 uint32_t max_incl_x;
523 uint32_t max_incl_y;
524
525 #ifdef __cplusplus
526 inline bool is_empty() const;
527 inline bool equals(wuffs_base__rect_ii_u32__struct s) const;
528 inline wuffs_base__rect_ii_u32__struct intersect(
529 wuffs_base__rect_ii_u32__struct s) const;
530 inline wuffs_base__rect_ii_u32__struct unite(
531 wuffs_base__rect_ii_u32__struct s) const;
532 inline bool contains(uint32_t x, uint32_t y) const;
533 inline bool contains_rect(wuffs_base__rect_ii_u32__struct s) const;
534 #endif // __cplusplus
535
536 } wuffs_base__rect_ii_u32;
537
538 static inline wuffs_base__rect_ii_u32 //
wuffs_base__empty_rect_ii_u32()539 wuffs_base__empty_rect_ii_u32() {
540 wuffs_base__rect_ii_u32 ret;
541 ret.min_incl_x = 0;
542 ret.min_incl_y = 0;
543 ret.max_incl_x = 0;
544 ret.max_incl_y = 0;
545 return ret;
546 }
547
548 static inline wuffs_base__rect_ii_u32 //
wuffs_base__make_rect_ii_u32(uint32_t min_incl_x,uint32_t min_incl_y,uint32_t max_incl_x,uint32_t max_incl_y)549 wuffs_base__make_rect_ii_u32(uint32_t min_incl_x,
550 uint32_t min_incl_y,
551 uint32_t max_incl_x,
552 uint32_t max_incl_y) {
553 wuffs_base__rect_ii_u32 ret;
554 ret.min_incl_x = min_incl_x;
555 ret.min_incl_y = min_incl_y;
556 ret.max_incl_x = max_incl_x;
557 ret.max_incl_y = max_incl_y;
558 return ret;
559 }
560
561 static inline bool //
wuffs_base__rect_ii_u32__is_empty(const wuffs_base__rect_ii_u32 * r)562 wuffs_base__rect_ii_u32__is_empty(const wuffs_base__rect_ii_u32* r) {
563 return (r->min_incl_x > r->max_incl_x) || (r->min_incl_y > r->max_incl_y);
564 }
565
566 static inline bool //
wuffs_base__rect_ii_u32__equals(const wuffs_base__rect_ii_u32 * r,wuffs_base__rect_ii_u32 s)567 wuffs_base__rect_ii_u32__equals(const wuffs_base__rect_ii_u32* r,
568 wuffs_base__rect_ii_u32 s) {
569 return (r->min_incl_x == s.min_incl_x && r->min_incl_y == s.min_incl_y &&
570 r->max_incl_x == s.max_incl_x && r->max_incl_y == s.max_incl_y) ||
571 (wuffs_base__rect_ii_u32__is_empty(r) &&
572 wuffs_base__rect_ii_u32__is_empty(&s));
573 }
574
575 static inline wuffs_base__rect_ii_u32 //
wuffs_base__rect_ii_u32__intersect(const wuffs_base__rect_ii_u32 * r,wuffs_base__rect_ii_u32 s)576 wuffs_base__rect_ii_u32__intersect(const wuffs_base__rect_ii_u32* r,
577 wuffs_base__rect_ii_u32 s) {
578 wuffs_base__rect_ii_u32 t;
579 t.min_incl_x = wuffs_base__u32__max(r->min_incl_x, s.min_incl_x);
580 t.min_incl_y = wuffs_base__u32__max(r->min_incl_y, s.min_incl_y);
581 t.max_incl_x = wuffs_base__u32__min(r->max_incl_x, s.max_incl_x);
582 t.max_incl_y = wuffs_base__u32__min(r->max_incl_y, s.max_incl_y);
583 return t;
584 }
585
586 static inline wuffs_base__rect_ii_u32 //
wuffs_base__rect_ii_u32__unite(const wuffs_base__rect_ii_u32 * r,wuffs_base__rect_ii_u32 s)587 wuffs_base__rect_ii_u32__unite(const wuffs_base__rect_ii_u32* r,
588 wuffs_base__rect_ii_u32 s) {
589 if (wuffs_base__rect_ii_u32__is_empty(r)) {
590 return s;
591 }
592 if (wuffs_base__rect_ii_u32__is_empty(&s)) {
593 return *r;
594 }
595 wuffs_base__rect_ii_u32 t;
596 t.min_incl_x = wuffs_base__u32__min(r->min_incl_x, s.min_incl_x);
597 t.min_incl_y = wuffs_base__u32__min(r->min_incl_y, s.min_incl_y);
598 t.max_incl_x = wuffs_base__u32__max(r->max_incl_x, s.max_incl_x);
599 t.max_incl_y = wuffs_base__u32__max(r->max_incl_y, s.max_incl_y);
600 return t;
601 }
602
603 static inline bool //
wuffs_base__rect_ii_u32__contains(const wuffs_base__rect_ii_u32 * r,uint32_t x,uint32_t y)604 wuffs_base__rect_ii_u32__contains(const wuffs_base__rect_ii_u32* r,
605 uint32_t x,
606 uint32_t y) {
607 return (r->min_incl_x <= x) && (x <= r->max_incl_x) && (r->min_incl_y <= y) &&
608 (y <= r->max_incl_y);
609 }
610
611 static inline bool //
wuffs_base__rect_ii_u32__contains_rect(const wuffs_base__rect_ii_u32 * r,wuffs_base__rect_ii_u32 s)612 wuffs_base__rect_ii_u32__contains_rect(const wuffs_base__rect_ii_u32* r,
613 wuffs_base__rect_ii_u32 s) {
614 return wuffs_base__rect_ii_u32__equals(
615 &s, wuffs_base__rect_ii_u32__intersect(r, s));
616 }
617
618 #ifdef __cplusplus
619
620 inline bool //
is_empty()621 wuffs_base__rect_ii_u32::is_empty() const {
622 return wuffs_base__rect_ii_u32__is_empty(this);
623 }
624
625 inline bool //
equals(wuffs_base__rect_ii_u32 s)626 wuffs_base__rect_ii_u32::equals(wuffs_base__rect_ii_u32 s) const {
627 return wuffs_base__rect_ii_u32__equals(this, s);
628 }
629
630 inline wuffs_base__rect_ii_u32 //
intersect(wuffs_base__rect_ii_u32 s)631 wuffs_base__rect_ii_u32::intersect(wuffs_base__rect_ii_u32 s) const {
632 return wuffs_base__rect_ii_u32__intersect(this, s);
633 }
634
635 inline wuffs_base__rect_ii_u32 //
unite(wuffs_base__rect_ii_u32 s)636 wuffs_base__rect_ii_u32::unite(wuffs_base__rect_ii_u32 s) const {
637 return wuffs_base__rect_ii_u32__unite(this, s);
638 }
639
640 inline bool //
contains(uint32_t x,uint32_t y)641 wuffs_base__rect_ii_u32::contains(uint32_t x, uint32_t y) const {
642 return wuffs_base__rect_ii_u32__contains(this, x, y);
643 }
644
645 inline bool //
contains_rect(wuffs_base__rect_ii_u32 s)646 wuffs_base__rect_ii_u32::contains_rect(wuffs_base__rect_ii_u32 s) const {
647 return wuffs_base__rect_ii_u32__contains_rect(this, s);
648 }
649
650 #endif // __cplusplus
651
652 // --------
653
654 typedef struct wuffs_base__rect_ie_u32__struct {
655 uint32_t min_incl_x;
656 uint32_t min_incl_y;
657 uint32_t max_excl_x;
658 uint32_t max_excl_y;
659
660 #ifdef __cplusplus
661 inline bool is_empty() const;
662 inline bool equals(wuffs_base__rect_ie_u32__struct s) const;
663 inline wuffs_base__rect_ie_u32__struct intersect(
664 wuffs_base__rect_ie_u32__struct s) const;
665 inline wuffs_base__rect_ie_u32__struct unite(
666 wuffs_base__rect_ie_u32__struct s) const;
667 inline bool contains(uint32_t x, uint32_t y) const;
668 inline bool contains_rect(wuffs_base__rect_ie_u32__struct s) const;
669 inline uint32_t width() const;
670 inline uint32_t height() const;
671 #endif // __cplusplus
672
673 } wuffs_base__rect_ie_u32;
674
675 static inline wuffs_base__rect_ie_u32 //
wuffs_base__empty_rect_ie_u32()676 wuffs_base__empty_rect_ie_u32() {
677 wuffs_base__rect_ie_u32 ret;
678 ret.min_incl_x = 0;
679 ret.min_incl_y = 0;
680 ret.max_excl_x = 0;
681 ret.max_excl_y = 0;
682 return ret;
683 }
684
685 static inline wuffs_base__rect_ie_u32 //
wuffs_base__make_rect_ie_u32(uint32_t min_incl_x,uint32_t min_incl_y,uint32_t max_excl_x,uint32_t max_excl_y)686 wuffs_base__make_rect_ie_u32(uint32_t min_incl_x,
687 uint32_t min_incl_y,
688 uint32_t max_excl_x,
689 uint32_t max_excl_y) {
690 wuffs_base__rect_ie_u32 ret;
691 ret.min_incl_x = min_incl_x;
692 ret.min_incl_y = min_incl_y;
693 ret.max_excl_x = max_excl_x;
694 ret.max_excl_y = max_excl_y;
695 return ret;
696 }
697
698 static inline bool //
wuffs_base__rect_ie_u32__is_empty(const wuffs_base__rect_ie_u32 * r)699 wuffs_base__rect_ie_u32__is_empty(const wuffs_base__rect_ie_u32* r) {
700 return (r->min_incl_x >= r->max_excl_x) || (r->min_incl_y >= r->max_excl_y);
701 }
702
703 static inline bool //
wuffs_base__rect_ie_u32__equals(const wuffs_base__rect_ie_u32 * r,wuffs_base__rect_ie_u32 s)704 wuffs_base__rect_ie_u32__equals(const wuffs_base__rect_ie_u32* r,
705 wuffs_base__rect_ie_u32 s) {
706 return (r->min_incl_x == s.min_incl_x && r->min_incl_y == s.min_incl_y &&
707 r->max_excl_x == s.max_excl_x && r->max_excl_y == s.max_excl_y) ||
708 (wuffs_base__rect_ie_u32__is_empty(r) &&
709 wuffs_base__rect_ie_u32__is_empty(&s));
710 }
711
712 static inline wuffs_base__rect_ie_u32 //
wuffs_base__rect_ie_u32__intersect(const wuffs_base__rect_ie_u32 * r,wuffs_base__rect_ie_u32 s)713 wuffs_base__rect_ie_u32__intersect(const wuffs_base__rect_ie_u32* r,
714 wuffs_base__rect_ie_u32 s) {
715 wuffs_base__rect_ie_u32 t;
716 t.min_incl_x = wuffs_base__u32__max(r->min_incl_x, s.min_incl_x);
717 t.min_incl_y = wuffs_base__u32__max(r->min_incl_y, s.min_incl_y);
718 t.max_excl_x = wuffs_base__u32__min(r->max_excl_x, s.max_excl_x);
719 t.max_excl_y = wuffs_base__u32__min(r->max_excl_y, s.max_excl_y);
720 return t;
721 }
722
723 static inline wuffs_base__rect_ie_u32 //
wuffs_base__rect_ie_u32__unite(const wuffs_base__rect_ie_u32 * r,wuffs_base__rect_ie_u32 s)724 wuffs_base__rect_ie_u32__unite(const wuffs_base__rect_ie_u32* r,
725 wuffs_base__rect_ie_u32 s) {
726 if (wuffs_base__rect_ie_u32__is_empty(r)) {
727 return s;
728 }
729 if (wuffs_base__rect_ie_u32__is_empty(&s)) {
730 return *r;
731 }
732 wuffs_base__rect_ie_u32 t;
733 t.min_incl_x = wuffs_base__u32__min(r->min_incl_x, s.min_incl_x);
734 t.min_incl_y = wuffs_base__u32__min(r->min_incl_y, s.min_incl_y);
735 t.max_excl_x = wuffs_base__u32__max(r->max_excl_x, s.max_excl_x);
736 t.max_excl_y = wuffs_base__u32__max(r->max_excl_y, s.max_excl_y);
737 return t;
738 }
739
740 static inline bool //
wuffs_base__rect_ie_u32__contains(const wuffs_base__rect_ie_u32 * r,uint32_t x,uint32_t y)741 wuffs_base__rect_ie_u32__contains(const wuffs_base__rect_ie_u32* r,
742 uint32_t x,
743 uint32_t y) {
744 return (r->min_incl_x <= x) && (x < r->max_excl_x) && (r->min_incl_y <= y) &&
745 (y < r->max_excl_y);
746 }
747
748 static inline bool //
wuffs_base__rect_ie_u32__contains_rect(const wuffs_base__rect_ie_u32 * r,wuffs_base__rect_ie_u32 s)749 wuffs_base__rect_ie_u32__contains_rect(const wuffs_base__rect_ie_u32* r,
750 wuffs_base__rect_ie_u32 s) {
751 return wuffs_base__rect_ie_u32__equals(
752 &s, wuffs_base__rect_ie_u32__intersect(r, s));
753 }
754
755 static inline uint32_t //
wuffs_base__rect_ie_u32__width(const wuffs_base__rect_ie_u32 * r)756 wuffs_base__rect_ie_u32__width(const wuffs_base__rect_ie_u32* r) {
757 return wuffs_base__u32__sat_sub(r->max_excl_x, r->min_incl_x);
758 }
759
760 static inline uint32_t //
wuffs_base__rect_ie_u32__height(const wuffs_base__rect_ie_u32 * r)761 wuffs_base__rect_ie_u32__height(const wuffs_base__rect_ie_u32* r) {
762 return wuffs_base__u32__sat_sub(r->max_excl_y, r->min_incl_y);
763 }
764
765 #ifdef __cplusplus
766
767 inline bool //
is_empty()768 wuffs_base__rect_ie_u32::is_empty() const {
769 return wuffs_base__rect_ie_u32__is_empty(this);
770 }
771
772 inline bool //
equals(wuffs_base__rect_ie_u32 s)773 wuffs_base__rect_ie_u32::equals(wuffs_base__rect_ie_u32 s) const {
774 return wuffs_base__rect_ie_u32__equals(this, s);
775 }
776
777 inline wuffs_base__rect_ie_u32 //
intersect(wuffs_base__rect_ie_u32 s)778 wuffs_base__rect_ie_u32::intersect(wuffs_base__rect_ie_u32 s) const {
779 return wuffs_base__rect_ie_u32__intersect(this, s);
780 }
781
782 inline wuffs_base__rect_ie_u32 //
unite(wuffs_base__rect_ie_u32 s)783 wuffs_base__rect_ie_u32::unite(wuffs_base__rect_ie_u32 s) const {
784 return wuffs_base__rect_ie_u32__unite(this, s);
785 }
786
787 inline bool //
contains(uint32_t x,uint32_t y)788 wuffs_base__rect_ie_u32::contains(uint32_t x, uint32_t y) const {
789 return wuffs_base__rect_ie_u32__contains(this, x, y);
790 }
791
792 inline bool //
contains_rect(wuffs_base__rect_ie_u32 s)793 wuffs_base__rect_ie_u32::contains_rect(wuffs_base__rect_ie_u32 s) const {
794 return wuffs_base__rect_ie_u32__contains_rect(this, s);
795 }
796
797 inline uint32_t //
width()798 wuffs_base__rect_ie_u32::width() const {
799 return wuffs_base__rect_ie_u32__width(this);
800 }
801
802 inline uint32_t //
height()803 wuffs_base__rect_ie_u32::height() const {
804 return wuffs_base__rect_ie_u32__height(this);
805 }
806
807 #endif // __cplusplus
808
809 // ---------------- More Information
810
811 // wuffs_base__more_information holds additional fields, typically when a Wuffs
812 // method returns a [note status](/doc/note/statuses.md).
813 //
814 // The flavor field follows the base38 namespace
815 // convention](/doc/note/base38-and-fourcc.md). The other fields' semantics
816 // depends on the flavor.
817 typedef struct {
818 uint32_t flavor;
819 uint32_t w;
820 uint64_t x;
821 uint64_t y;
822 uint64_t z;
823
824 #ifdef __cplusplus
825 inline void set(uint32_t flavor_arg,
826 uint32_t w_arg,
827 uint64_t x_arg,
828 uint64_t y_arg,
829 uint64_t z_arg);
830 inline uint32_t io_redirect__fourcc() const;
831 inline wuffs_base__range_ie_u64 io_redirect__range() const;
832 inline uint64_t io_seek__position() const;
833 inline uint32_t metadata__fourcc() const;
834 inline wuffs_base__range_ie_u64 metadata__range() const;
835 #endif // __cplusplus
836
837 } wuffs_base__more_information;
838
839 #define WUFFS_BASE__MORE_INFORMATION__FLAVOR__IO_REDIRECT 1
840 #define WUFFS_BASE__MORE_INFORMATION__FLAVOR__IO_SEEK 2
841 #define WUFFS_BASE__MORE_INFORMATION__FLAVOR__METADATA 3
842
843 static inline wuffs_base__more_information //
wuffs_base__empty_more_information()844 wuffs_base__empty_more_information() {
845 wuffs_base__more_information ret;
846 ret.flavor = 0;
847 ret.w = 0;
848 ret.x = 0;
849 ret.y = 0;
850 ret.z = 0;
851 return ret;
852 }
853
854 static inline void //
wuffs_base__more_information__set(wuffs_base__more_information * m,uint32_t flavor,uint32_t w,uint64_t x,uint64_t y,uint64_t z)855 wuffs_base__more_information__set(wuffs_base__more_information* m,
856 uint32_t flavor,
857 uint32_t w,
858 uint64_t x,
859 uint64_t y,
860 uint64_t z) {
861 if (!m) {
862 return;
863 }
864 m->flavor = flavor;
865 m->w = w;
866 m->x = x;
867 m->y = y;
868 m->z = z;
869 }
870
871 static inline uint32_t //
wuffs_base__more_information__io_redirect__fourcc(const wuffs_base__more_information * m)872 wuffs_base__more_information__io_redirect__fourcc(
873 const wuffs_base__more_information* m) {
874 return m->w;
875 }
876
877 static inline wuffs_base__range_ie_u64 //
wuffs_base__more_information__io_redirect__range(const wuffs_base__more_information * m)878 wuffs_base__more_information__io_redirect__range(
879 const wuffs_base__more_information* m) {
880 wuffs_base__range_ie_u64 ret;
881 ret.min_incl = m->y;
882 ret.max_excl = m->z;
883 return ret;
884 }
885
886 static inline uint64_t //
wuffs_base__more_information__io_seek__position(const wuffs_base__more_information * m)887 wuffs_base__more_information__io_seek__position(
888 const wuffs_base__more_information* m) {
889 return m->x;
890 }
891
892 static inline uint32_t //
wuffs_base__more_information__metadata__fourcc(const wuffs_base__more_information * m)893 wuffs_base__more_information__metadata__fourcc(
894 const wuffs_base__more_information* m) {
895 return m->w;
896 }
897
898 static inline wuffs_base__range_ie_u64 //
wuffs_base__more_information__metadata__range(const wuffs_base__more_information * m)899 wuffs_base__more_information__metadata__range(
900 const wuffs_base__more_information* m) {
901 wuffs_base__range_ie_u64 ret;
902 ret.min_incl = m->y;
903 ret.max_excl = m->z;
904 return ret;
905 }
906
907 #ifdef __cplusplus
908
909 inline void //
set(uint32_t flavor_arg,uint32_t w_arg,uint64_t x_arg,uint64_t y_arg,uint64_t z_arg)910 wuffs_base__more_information::set(uint32_t flavor_arg,
911 uint32_t w_arg,
912 uint64_t x_arg,
913 uint64_t y_arg,
914 uint64_t z_arg) {
915 wuffs_base__more_information__set(this, flavor_arg, w_arg, x_arg, y_arg,
916 z_arg);
917 }
918
919 inline uint32_t //
io_redirect__fourcc()920 wuffs_base__more_information::io_redirect__fourcc() const {
921 return wuffs_base__more_information__io_redirect__fourcc(this);
922 }
923
924 inline wuffs_base__range_ie_u64 //
io_redirect__range()925 wuffs_base__more_information::io_redirect__range() const {
926 return wuffs_base__more_information__io_redirect__range(this);
927 }
928
929 inline uint64_t //
io_seek__position()930 wuffs_base__more_information::io_seek__position() const {
931 return wuffs_base__more_information__io_seek__position(this);
932 }
933
934 inline uint32_t //
metadata__fourcc()935 wuffs_base__more_information::metadata__fourcc() const {
936 return wuffs_base__more_information__metadata__fourcc(this);
937 }
938
939 inline wuffs_base__range_ie_u64 //
metadata__range()940 wuffs_base__more_information::metadata__range() const {
941 return wuffs_base__more_information__metadata__range(this);
942 }
943
944 #endif // __cplusplus
945