38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
|
// SPDX-License-Identifier: Zlib
|
||
|
#ifndef DFLTCC_INFLATE_H
|
||
|
#define DFLTCC_INFLATE_H
|
||
|
|
||
|
#include "dfltcc.h"
|
||
|
|
||
|
/* External functions */
|
||
|
void dfltcc_reset_inflate_state(z_streamp strm);
|
||
|
int dfltcc_can_inflate(z_streamp strm);
|
||
|
typedef enum {
|
||
|
DFLTCC_INFLATE_CONTINUE,
|
||
|
DFLTCC_INFLATE_BREAK,
|
||
|
DFLTCC_INFLATE_SOFTWARE,
|
||
|
} dfltcc_inflate_action;
|
||
|
dfltcc_inflate_action dfltcc_inflate(z_streamp strm,
|
||
|
int flush, int *ret);
|
||
|
#define INFLATE_RESET_HOOK(strm) \
|
||
|
dfltcc_reset_inflate_state((strm))
|
||
|
|
||
|
#define INFLATE_TYPEDO_HOOK(strm, flush) \
|
||
|
if (dfltcc_can_inflate((strm))) { \
|
||
|
dfltcc_inflate_action action; \
|
||
|
\
|
||
|
RESTORE(); \
|
||
|
action = dfltcc_inflate((strm), (flush), &ret); \
|
||
|
LOAD(); \
|
||
|
if (action == DFLTCC_INFLATE_CONTINUE) \
|
||
|
break; \
|
||
|
else if (action == DFLTCC_INFLATE_BREAK) \
|
||
|
goto inf_leave; \
|
||
|
}
|
||
|
|
||
|
#define INFLATE_NEED_CHECKSUM(strm) (!dfltcc_can_inflate((strm)))
|
||
|
|
||
|
#define INFLATE_NEED_UPDATEWINDOW(strm) (!dfltcc_can_inflate((strm)))
|
||
|
|
||
|
#endif /* DFLTCC_DEFLATE_H */
|