1 | // SPDX-License-Identifier: Zlib |
2 | #ifndef DFLTCC_INFLATE_H |
3 | #define DFLTCC_INFLATE_H |
4 | |
5 | #include "dfltcc.h" |
6 | |
7 | /* External functions */ |
8 | void dfltcc_reset_inflate_state(z_streamp strm); |
9 | int dfltcc_can_inflate(z_streamp strm); |
10 | typedef enum { |
11 | DFLTCC_INFLATE_CONTINUE, |
12 | DFLTCC_INFLATE_BREAK, |
13 | DFLTCC_INFLATE_SOFTWARE, |
14 | } dfltcc_inflate_action; |
15 | dfltcc_inflate_action dfltcc_inflate(z_streamp strm, |
16 | int flush, int *ret); |
17 | #define INFLATE_RESET_HOOK(strm) \ |
18 | dfltcc_reset_inflate_state((strm)) |
19 | |
20 | #define INFLATE_TYPEDO_HOOK(strm, flush) \ |
21 | if (dfltcc_can_inflate((strm))) { \ |
22 | dfltcc_inflate_action action; \ |
23 | \ |
24 | RESTORE(); \ |
25 | action = dfltcc_inflate((strm), (flush), &ret); \ |
26 | LOAD(); \ |
27 | if (action == DFLTCC_INFLATE_CONTINUE) \ |
28 | break; \ |
29 | else if (action == DFLTCC_INFLATE_BREAK) \ |
30 | goto inf_leave; \ |
31 | } |
32 | |
33 | #define INFLATE_NEED_CHECKSUM(strm) (!dfltcc_can_inflate((strm))) |
34 | |
35 | #define INFLATE_NEED_UPDATEWINDOW(strm) (!dfltcc_can_inflate((strm))) |
36 | |
37 | #endif /* DFLTCC_DEFLATE_H */ |
38 | |