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