77 #include "jasper/jas_types.h"
78 #include "jasper/jas_stream.h"
80 #include "jpc_mqcod.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;
156 jpc_mqenc_t *jpc_mqenc_create(
int maxctxs, jas_stream_t *out);
159 void jpc_mqenc_destroy(jpc_mqenc_t *enc);
166 void jpc_mqenc_init(jpc_mqenc_t *enc);
173 #define jpc_mqenc_setcurctx(enc, ctxno) \
174 ((enc)->curctx = &(enc)->ctxs[ctxno]);
177 void jpc_mqenc_setctx(jpc_mqenc_t *enc,
int ctxno, jpc_mqctx_t *ctx);
180 void jpc_mqenc_setctxs(jpc_mqenc_t *enc,
int numctxs, jpc_mqctx_t *ctxs);
187 #define jpc_mqenc_error(enc) \
191 void jpc_mqenc_getstate(jpc_mqenc_t *enc, jpc_mqencstate_t *state);
194 int 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)
211 int 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))
229 int jpc_mqenc_codemps2(jpc_mqenc_t *enc);
230 int jpc_mqenc_codelps(jpc_mqenc_t *enc);
234 int jpc_mqenc_putbit_func(jpc_mqenc_t *enc,
int bit);