38 lines · c
1// SPDX-License-Identifier: Zlib2#ifndef DFLTCC_INFLATE_H3#define DFLTCC_INFLATE_H4 5#include "dfltcc.h"6 7/* External functions */8void dfltcc_reset_inflate_state(z_streamp strm);9int dfltcc_can_inflate(z_streamp strm);10typedef enum {11 DFLTCC_INFLATE_CONTINUE,12 DFLTCC_INFLATE_BREAK,13 DFLTCC_INFLATE_SOFTWARE,14} dfltcc_inflate_action;15dfltcc_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