77#include "jasper/jas_types.h"
78#include "jasper/jas_stream.h"
90#define JPC_MQENC_DEFTERM 0
91#define JPC_MQENC_PTERM 1
114 jpc_mqstate_t **ctxs;
117 jpc_mqstate_t **curctx;
126 int_fast16_t lastbyte;
156jpc_mqenc_t *jpc_mqenc_create(
int maxctxs, jas_stream_t *out);
159void jpc_mqenc_destroy(jpc_mqenc_t *enc);
166void jpc_mqenc_init(jpc_mqenc_t *enc);
173#define jpc_mqenc_setcurctx(enc, ctxno) \
174 ((enc)->curctx = &(enc)->ctxs[ctxno]);
177void jpc_mqenc_setctx(jpc_mqenc_t *enc,
int ctxno, jpc_mqctx_t *ctx);
180void jpc_mqenc_setctxs(jpc_mqenc_t *enc,
int numctxs, jpc_mqctx_t *ctxs);
187#define jpc_mqenc_error(enc) \
191void jpc_mqenc_getstate(jpc_mqenc_t *enc, jpc_mqencstate_t *state);
194int jpc_mqenc_flush(jpc_mqenc_t *enc,
int termmode);
202#define jpc_mqenc_putbit(enc, bit) jpc_mqenc_putbit_macro(enc, bit)
204#define jpc_mqenc_putbit(enc, bit) jpc_mqenc_putbit_func(enc, bit)
211int jpc_mqenc_dump(jpc_mqenc_t *mqenc, FILE *out);
219#define jpc_mqenc_putbit_macro(enc, bit) \
220 (((*((enc)->curctx))->mps == (bit)) ? \
221 (((enc)->areg -= (*(enc)->curctx)->qeval), \
222 ((!((enc)->areg & 0x8000)) ? (jpc_mqenc_codemps2(enc)) : \
223 ((enc)->creg += (*(enc)->curctx)->qeval))) : \
224 jpc_mqenc_codelps(enc))
229int jpc_mqenc_codemps2(jpc_mqenc_t *enc);
230int jpc_mqenc_codelps(jpc_mqenc_t *enc);
234int jpc_mqenc_putbit_func(jpc_mqenc_t *enc,
int bit);