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