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