#define EMULATE_JISX0213_2000_ENCODE_INVALID MAP_UNMAPPABLE
#define EMULATE_JISX0213_2000_DECODE_INVALID MAP_UNMAPPABLE
+#define CJK_MOD_SPECIFIC_STATE \
+ /* kr */ \
+ const encode_map *cp949_encmap; \
+ const decode_map *ksx1001_decmap; \
+ \
+ /* jp */ \
+ const encode_map *jisxcommon_encmap; \
+ const decode_map *jisx0208_decmap; \
+ const decode_map *jisx0212_decmap; \
+ const encode_map *jisx0213_bmp_encmap; \
+ const decode_map *jisx0213_1_bmp_decmap; \
+ const decode_map *jisx0213_2_bmp_decmap; \
+ const encode_map *jisx0213_emp_encmap; \
+ const decode_map *jisx0213_1_emp_decmap; \
+ const decode_map *jisx0213_2_emp_decmap; \
+ \
+ /* cn */ \
+ const encode_map *gbcommon_encmap; \
+ const decode_map *gb2312_decmap;
+
+
#include "cjkcodecs.h"
#include "alg_jisx0201.h"
#include "emu_jisx0213_2000.h"
#define STATE_CLEARFLAG(f) do { ((state)->c[4]) &= ~(f); } while (0)
#define STATE_CLEARFLAGS() do { ((state)->c[4]) = 0; } while (0)
-#define ISO2022_CONFIG ((const struct iso2022_config *)config)
+#define ISO2022_CONFIG ((const struct iso2022_config *)(codec->config))
#define CONFIG_ISSET(flag) (ISO2022_CONFIG->flags & (flag))
#define CONFIG_DESIGNATIONS (ISO2022_CONFIG->designations)
/*-*- internal data structures -*-*/
-typedef int (*iso2022_init_func)(void);
-typedef Py_UCS4 (*iso2022_decode_func)(const unsigned char *data);
-typedef DBCHAR (*iso2022_encode_func)(const Py_UCS4 *data, Py_ssize_t *length);
+typedef int (*iso2022_init_func)(const MultibyteCodec *codec);
+typedef Py_UCS4 (*iso2022_decode_func)(const MultibyteCodec *codec,
+ const unsigned char *data);
+typedef DBCHAR (*iso2022_encode_func)(const MultibyteCodec *codec,
+ const Py_UCS4 *data,
+ Py_ssize_t *length);
struct iso2022_designation {
unsigned char mark;
CODEC_INIT(iso2022)
{
const struct iso2022_designation *desig;
- for (desig = CONFIG_DESIGNATIONS; desig->mark; desig++)
- if (desig->initializer != NULL && desig->initializer() != 0)
+ for (desig = CONFIG_DESIGNATIONS; desig->mark; desig++) {
+ if (desig->initializer != NULL && desig->initializer(codec) != 0) {
return -1;
+ }
+ }
return 0;
}
encoded = MAP_UNMAPPABLE;
for (dsg = CONFIG_DESIGNATIONS; dsg->mark; dsg++) {
Py_ssize_t length = 1;
- encoded = dsg->encoder(&c, &length);
+ encoded = dsg->encoder(codec, &c, &length);
if (encoded == MAP_MULTIPLE_AVAIL) {
/* this implementation won't work for pair
* of non-bmp characters. */
}
else
length = 2;
- encoded = dsg->encoder(&c, &length);
+ encoded = dsg->encoder(codec, &c, &length);
if (encoded != MAP_UNMAPPABLE) {
insize = length;
break;
}
static Py_ssize_t
-iso2022processesc(const void *config, MultibyteCodec_State *state,
+iso2022processesc(const MultibyteCodec *codec, MultibyteCodec_State *state,
const unsigned char **inbuf, Py_ssize_t *inleft)
{
unsigned char charset, designation;
}
static Py_ssize_t
-iso2022processg2(const void *config, MultibyteCodec_State *state,
+iso2022processg2(const MultibyteCodec *codec, MultibyteCodec_State *state,
const unsigned char **inbuf, Py_ssize_t *inleft,
_PyUnicodeWriter *writer)
{
case ESC:
REQUIRE_INBUF(2);
if (IS_ISO2022ESC(INBYTE2)) {
- err = iso2022processesc(config, state,
+ err = iso2022processesc(codec, state,
inbuf, &inleft);
if (err != 0)
return err;
}
else if (CONFIG_ISSET(USE_G2) && INBYTE2 == 'N') {/* SS2 */
REQUIRE_INBUF(3);
- err = iso2022processg2(config, state,
+ err = iso2022processg2(codec, state,
inbuf, &inleft, writer);
if (err != 0)
return err;
}
REQUIRE_INBUF(dsg->width);
- decoded = dsg->decoder(*inbuf);
+ decoded = dsg->decoder(codec, *inbuf);
if (decoded == MAP_UNMAPPABLE)
return dsg->width;
return 0;
}
-/*-*- mapping table holders -*-*/
-
-#define ENCMAP(enc) static const encode_map *enc##_encmap = NULL;
-#define DECMAP(enc) static const decode_map *enc##_decmap = NULL;
-
-/* kr */
-ENCMAP(cp949)
-DECMAP(ksx1001)
-
-/* jp */
-ENCMAP(jisxcommon)
-DECMAP(jisx0208)
-DECMAP(jisx0212)
-ENCMAP(jisx0213_bmp)
-DECMAP(jisx0213_1_bmp)
-DECMAP(jisx0213_2_bmp)
-ENCMAP(jisx0213_emp)
-DECMAP(jisx0213_1_emp)
-DECMAP(jisx0213_2_emp)
-
-/* cn */
-ENCMAP(gbcommon)
-DECMAP(gb2312)
-
-/* tw */
-
/*-*- mapping access functions -*-*/
static int
-ksx1001_init(void)
+ksx1001_init(const MultibyteCodec *codec)
{
- static int initialized = 0;
-
- if (!initialized && (
- IMPORT_MAP(kr, cp949, &cp949_encmap, NULL) ||
- IMPORT_MAP(kr, ksx1001, NULL, &ksx1001_decmap)))
+ cjkcodecs_module_state *st = codec->modstate;
+ if (IMPORT_MAP(kr, cp949, &st->cp949_encmap, NULL) ||
+ IMPORT_MAP(kr, ksx1001, NULL, &st->ksx1001_decmap))
+ {
return -1;
- initialized = 1;
+ }
return 0;
}
static Py_UCS4
-ksx1001_decoder(const unsigned char *data)
+ksx1001_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
- if (TRYMAP_DEC(ksx1001, u, data[0], data[1]))
+ if (TRYMAP_DEC_ST(ksx1001, u, data[0], data[1]))
return u;
else
return MAP_UNMAPPABLE;
}
static DBCHAR
-ksx1001_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+ksx1001_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
DBCHAR coded;
assert(*length == 1);
if (*data < 0x10000) {
- if (TRYMAP_ENC(cp949, coded, *data)) {
+ if (TRYMAP_ENC_ST(cp949, coded, *data)) {
if (!(coded & 0x8000))
return coded;
}
}
static int
-jisx0208_init(void)
+jisx0208_init(const MultibyteCodec *codec)
{
- static int initialized = 0;
-
- if (!initialized && (
- IMPORT_MAP(jp, jisxcommon, &jisxcommon_encmap, NULL) ||
- IMPORT_MAP(jp, jisx0208, NULL, &jisx0208_decmap)))
+ cjkcodecs_module_state *st = codec->modstate;
+ if (IMPORT_MAP(jp, jisxcommon, &st->jisxcommon_encmap, NULL) ||
+ IMPORT_MAP(jp, jisx0208, NULL, &st->jisx0208_decmap))
+ {
return -1;
- initialized = 1;
+ }
return 0;
}
static Py_UCS4
-jisx0208_decoder(const unsigned char *data)
+jisx0208_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */
return 0xff3c;
- else if (TRYMAP_DEC(jisx0208, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0208, u, data[0], data[1]))
return u;
else
return MAP_UNMAPPABLE;
}
static DBCHAR
-jisx0208_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0208_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
DBCHAR coded;
assert(*length == 1);
if (*data < 0x10000) {
if (*data == 0xff3c) /* F/W REVERSE SOLIDUS */
return 0x2140;
- else if (TRYMAP_ENC(jisxcommon, coded, *data)) {
+ else if (TRYMAP_ENC_ST(jisxcommon, coded, *data)) {
if (!(coded & 0x8000))
return coded;
}
}
static int
-jisx0212_init(void)
+jisx0212_init(const MultibyteCodec *codec)
{
- static int initialized = 0;
-
- if (!initialized && (
- IMPORT_MAP(jp, jisxcommon, &jisxcommon_encmap, NULL) ||
- IMPORT_MAP(jp, jisx0212, NULL, &jisx0212_decmap)))
+ cjkcodecs_module_state *st = codec->modstate;
+ if (IMPORT_MAP(jp, jisxcommon, &st->jisxcommon_encmap, NULL) ||
+ IMPORT_MAP(jp, jisx0212, NULL, &st->jisx0212_decmap))
+ {
return -1;
- initialized = 1;
+ }
return 0;
}
static Py_UCS4
-jisx0212_decoder(const unsigned char *data)
+jisx0212_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
- if (TRYMAP_DEC(jisx0212, u, data[0], data[1]))
+ if (TRYMAP_DEC_ST(jisx0212, u, data[0], data[1]))
return u;
else
return MAP_UNMAPPABLE;
}
static DBCHAR
-jisx0212_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0212_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
DBCHAR coded;
assert(*length == 1);
if (*data < 0x10000) {
- if (TRYMAP_ENC(jisxcommon, coded, *data)) {
+ if (TRYMAP_ENC_ST(jisxcommon, coded, *data)) {
if (coded & 0x8000)
return coded & 0x7fff;
}
}
static int
-jisx0213_init(void)
+jisx0213_init(const MultibyteCodec *codec)
{
- static int initialized = 0;
-
- if (!initialized && (
- jisx0208_init() ||
- IMPORT_MAP(jp, jisx0213_bmp,
- &jisx0213_bmp_encmap, NULL) ||
- IMPORT_MAP(jp, jisx0213_1_bmp,
- NULL, &jisx0213_1_bmp_decmap) ||
- IMPORT_MAP(jp, jisx0213_2_bmp,
- NULL, &jisx0213_2_bmp_decmap) ||
- IMPORT_MAP(jp, jisx0213_emp,
- &jisx0213_emp_encmap, NULL) ||
- IMPORT_MAP(jp, jisx0213_1_emp,
- NULL, &jisx0213_1_emp_decmap) ||
- IMPORT_MAP(jp, jisx0213_2_emp,
- NULL, &jisx0213_2_emp_decmap) ||
- IMPORT_MAP(jp, jisx0213_pair, &jisx0213_pair_encmap,
- &jisx0213_pair_decmap)))
+ cjkcodecs_module_state *st = codec->modstate;
+ if (jisx0208_init(codec) ||
+ IMPORT_MAP(jp, jisx0213_bmp, &st->jisx0213_bmp_encmap, NULL) ||
+ IMPORT_MAP(jp, jisx0213_1_bmp, NULL, &st->jisx0213_1_bmp_decmap) ||
+ IMPORT_MAP(jp, jisx0213_2_bmp, NULL, &st->jisx0213_2_bmp_decmap) ||
+ IMPORT_MAP(jp, jisx0213_emp, &st->jisx0213_emp_encmap, NULL) ||
+ IMPORT_MAP(jp, jisx0213_1_emp, NULL, &st->jisx0213_1_emp_decmap) ||
+ IMPORT_MAP(jp, jisx0213_2_emp, NULL, &st->jisx0213_2_emp_decmap) ||
+ IMPORT_MAP(jp, jisx0213_pair,
+ &jisx0213_pair_encmap, &jisx0213_pair_decmap))
+ {
return -1;
- initialized = 1;
+ }
return 0;
}
#define config ((void *)2000)
static Py_UCS4
-jisx0213_2000_1_decoder(const unsigned char *data)
+jisx0213_2000_1_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
- EMULATE_JISX0213_2000_DECODE_PLANE1(u, data[0], data[1])
+ EMULATE_JISX0213_2000_DECODE_PLANE1(config, u, data[0], data[1])
else if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */
return 0xff3c;
- else if (TRYMAP_DEC(jisx0208, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0208, u, data[0], data[1]))
;
- else if (TRYMAP_DEC(jisx0213_1_bmp, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0213_1_bmp, u, data[0], data[1]))
;
- else if (TRYMAP_DEC(jisx0213_1_emp, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0213_1_emp, u, data[0], data[1]))
u |= 0x20000;
else if (TRYMAP_DEC(jisx0213_pair, u, data[0], data[1]))
;
}
static Py_UCS4
-jisx0213_2000_2_decoder(const unsigned char *data)
+jisx0213_2000_2_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
- EMULATE_JISX0213_2000_DECODE_PLANE2_CHAR(u, data[0], data[1])
- if (TRYMAP_DEC(jisx0213_2_bmp, u, data[0], data[1]))
+ EMULATE_JISX0213_2000_DECODE_PLANE2_CHAR(config, u, data[0], data[1])
+ if (TRYMAP_DEC_ST(jisx0213_2_bmp, u, data[0], data[1]))
;
- else if (TRYMAP_DEC(jisx0213_2_emp, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0213_2_emp, u, data[0], data[1]))
u |= 0x20000;
else
return MAP_UNMAPPABLE;
#undef config
static Py_UCS4
-jisx0213_2004_1_decoder(const unsigned char *data)
+jisx0213_2004_1_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */
return 0xff3c;
- else if (TRYMAP_DEC(jisx0208, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0208, u, data[0], data[1]))
;
- else if (TRYMAP_DEC(jisx0213_1_bmp, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0213_1_bmp, u, data[0], data[1]))
;
- else if (TRYMAP_DEC(jisx0213_1_emp, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0213_1_emp, u, data[0], data[1]))
u |= 0x20000;
else if (TRYMAP_DEC(jisx0213_pair, u, data[0], data[1]))
;
}
static Py_UCS4
-jisx0213_2004_2_decoder(const unsigned char *data)
+jisx0213_2004_2_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
- if (TRYMAP_DEC(jisx0213_2_bmp, u, data[0], data[1]))
+ if (TRYMAP_DEC_ST(jisx0213_2_bmp, u, data[0], data[1]))
;
- else if (TRYMAP_DEC(jisx0213_2_emp, u, data[0], data[1]))
+ else if (TRYMAP_DEC_ST(jisx0213_2_emp, u, data[0], data[1]))
u |= 0x20000;
else
return MAP_UNMAPPABLE;
}
static DBCHAR
-jisx0213_encoder(const Py_UCS4 *data, Py_ssize_t *length, void *config)
+jisx0213_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length, const void *config)
{
DBCHAR coded;
case 1: /* first character */
if (*data >= 0x10000) {
if ((*data) >> 16 == 0x20000 >> 16) {
- EMULATE_JISX0213_2000_ENCODE_EMP(coded, *data)
- else if (TRYMAP_ENC(jisx0213_emp, coded, (*data) & 0xffff))
+ EMULATE_JISX0213_2000_ENCODE_EMP(config, coded, *data)
+ else if (TRYMAP_ENC_ST(jisx0213_emp, coded, (*data) & 0xffff))
return coded;
}
return MAP_UNMAPPABLE;
}
- EMULATE_JISX0213_2000_ENCODE_BMP(coded, *data)
- else if (TRYMAP_ENC(jisx0213_bmp, coded, *data)) {
+ EMULATE_JISX0213_2000_ENCODE_BMP(config, coded, *data)
+ else if (TRYMAP_ENC_ST(jisx0213_bmp, coded, *data)) {
if (coded == MULTIC)
return MAP_MULTIPLE_AVAIL;
}
- else if (TRYMAP_ENC(jisxcommon, coded, *data)) {
+ else if (TRYMAP_ENC_ST(jisxcommon, coded, *data)) {
if (coded & 0x8000)
return MAP_UNMAPPABLE;
}
}
static DBCHAR
-jisx0213_2000_1_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0213_2000_1_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
- DBCHAR coded = jisx0213_encoder(data, length, (void *)2000);
+ DBCHAR coded = jisx0213_encoder(codec, data, length, (void *)2000);
if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
return coded;
else if (coded & 0x8000)
}
static DBCHAR
-jisx0213_2000_1_encoder_paironly(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0213_2000_1_encoder_paironly(const MultibyteCodec *codec,
+ const Py_UCS4 *data, Py_ssize_t *length)
{
DBCHAR coded;
Py_ssize_t ilength = *length;
- coded = jisx0213_encoder(data, length, (void *)2000);
+ coded = jisx0213_encoder(codec, data, length, (void *)2000);
switch (ilength) {
case 1:
if (coded == MAP_MULTIPLE_AVAIL)
}
static DBCHAR
-jisx0213_2000_2_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0213_2000_2_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
- DBCHAR coded = jisx0213_encoder(data, length, (void *)2000);
+ DBCHAR coded = jisx0213_encoder(codec, data, length, (void *)2000);
if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
return coded;
else if (coded & 0x8000)
}
static DBCHAR
-jisx0213_2004_1_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0213_2004_1_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
- DBCHAR coded = jisx0213_encoder(data, length, NULL);
+ DBCHAR coded = jisx0213_encoder(codec, data, length, NULL);
if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
return coded;
else if (coded & 0x8000)
}
static DBCHAR
-jisx0213_2004_1_encoder_paironly(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0213_2004_1_encoder_paironly(const MultibyteCodec *codec,
+ const Py_UCS4 *data, Py_ssize_t *length)
{
DBCHAR coded;
Py_ssize_t ilength = *length;
- coded = jisx0213_encoder(data, length, NULL);
+ coded = jisx0213_encoder(codec, data, length, NULL);
switch (ilength) {
case 1:
if (coded == MAP_MULTIPLE_AVAIL)
}
static DBCHAR
-jisx0213_2004_2_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0213_2004_2_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
- DBCHAR coded = jisx0213_encoder(data, length, NULL);
+ DBCHAR coded = jisx0213_encoder(codec, data, length, NULL);
if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
return coded;
else if (coded & 0x8000)
}
static Py_UCS4
-jisx0201_r_decoder(const unsigned char *data)
+jisx0201_r_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
JISX0201_R_DECODE_CHAR(*data, u)
}
static DBCHAR
-jisx0201_r_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0201_r_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
DBCHAR coded;
JISX0201_R_ENCODE(*data, coded)
}
static Py_UCS4
-jisx0201_k_decoder(const unsigned char *data)
+jisx0201_k_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
JISX0201_K_DECODE_CHAR(*data ^ 0x80, u)
}
static DBCHAR
-jisx0201_k_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+jisx0201_k_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
DBCHAR coded;
JISX0201_K_ENCODE(*data, coded)
}
static int
-gb2312_init(void)
+gb2312_init(const MultibyteCodec *codec)
{
- static int initialized = 0;
-
- if (!initialized && (
- IMPORT_MAP(cn, gbcommon, &gbcommon_encmap, NULL) ||
- IMPORT_MAP(cn, gb2312, NULL, &gb2312_decmap)))
+ cjkcodecs_module_state *st = codec->modstate;
+ if (IMPORT_MAP(cn, gbcommon, &st->gbcommon_encmap, NULL) ||
+ IMPORT_MAP(cn, gb2312, NULL, &st->gb2312_decmap))
+ {
return -1;
- initialized = 1;
+ }
return 0;
}
static Py_UCS4
-gb2312_decoder(const unsigned char *data)
+gb2312_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
Py_UCS4 u;
- if (TRYMAP_DEC(gb2312, u, data[0], data[1]))
+ if (TRYMAP_DEC_ST(gb2312, u, data[0], data[1]))
return u;
else
return MAP_UNMAPPABLE;
}
static DBCHAR
-gb2312_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+gb2312_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
DBCHAR coded;
assert(*length == 1);
if (*data < 0x10000) {
- if (TRYMAP_ENC(gbcommon, coded, *data)) {
+ if (TRYMAP_ENC_ST(gbcommon, coded, *data)) {
if (!(coded & 0x8000))
return coded;
}
static Py_UCS4
-dummy_decoder(const unsigned char *data)
+dummy_decoder(const MultibyteCodec *codec, const unsigned char *data)
{
return MAP_UNMAPPABLE;
}
static DBCHAR
-dummy_encoder(const Py_UCS4 *data, Py_ssize_t *length)
+dummy_encoder(const MultibyteCodec *codec, const Py_UCS4 *data,
+ Py_ssize_t *length)
{
return MAP_UNMAPPABLE;
}
for (;;) {
Py_ssize_t outleft = (Py_ssize_t)(buf->outbuf_end - buf->outbuf);
- r = codec->encode(state, codec->config,
+ r = codec->encode(state, codec,
kind, data, &inpos, 1,
&buf->outbuf, outleft, 0);
if (r == MBERR_TOOSMALL) {
* error callbacks can relocate the cursor anywhere on buffer*/
Py_ssize_t outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
- r = codec->encode(state, codec->config,
+ r = codec->encode(state, codec,
kind, data,
&buf.inpos, buf.inlen,
&buf.outbuf, outleft, flags);
Py_ssize_t outleft;
outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
- r = codec->encreset(state, codec->config, &buf.outbuf,
+ r = codec->encreset(state, codec, &buf.outbuf,
outleft);
if (r == 0)
break;
}
if (self->codec->encinit != NULL &&
- self->codec->encinit(&state, self->codec->config) != 0)
+ self->codec->encinit(&state, self->codec) != 0)
goto errorexit;
r = multibytecodec_encode(self->codec, &state,
input, NULL, errorcb,
buf.inbuf_end = buf.inbuf_top + datalen;
if (self->codec->decinit != NULL &&
- self->codec->decinit(&state, self->codec->config) != 0)
+ self->codec->decinit(&state, self->codec) != 0)
goto errorexit;
while (buf.inbuf < buf.inbuf_end) {
inleft = (Py_ssize_t)(buf.inbuf_end - buf.inbuf);
- r = self->codec->decode(&state, self->codec->config,
+ r = self->codec->decode(&state, self->codec,
&buf.inbuf, inleft, &buf.writer);
if (r == 0)
break;
inleft = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
- r = ctx->codec->decode(&ctx->state, ctx->codec->config,
+ r = ctx->codec->decode(&ctx->state, ctx->codec,
&buf->inbuf, inleft, &buf->writer);
if (r == 0 || r == MBERR_TOOFEW)
break;
Py_ssize_t r;
if (self->codec->encreset != NULL) {
outbuf = buffer;
- r = self->codec->encreset(&self->state, self->codec->config,
+ r = self->codec->encreset(&self->state, self->codec,
&outbuf, sizeof(buffer));
if (r != 0)
return NULL;
if (self->errors == NULL)
goto errorexit;
if (self->codec->encinit != NULL &&
- self->codec->encinit(&self->state, self->codec->config) != 0)
+ self->codec->encinit(&self->state, self->codec) != 0)
goto errorexit;
Py_DECREF(codec);
/*[clinic end generated code: output=da423b1782c23ed1 input=3b63b3be85b2fb45]*/
{
if (self->codec->decreset != NULL &&
- self->codec->decreset(&self->state, self->codec->config) != 0)
+ self->codec->decreset(&self->state, self->codec) != 0)
return NULL;
self->pendingsize = 0;
if (self->errors == NULL)
goto errorexit;
if (self->codec->decinit != NULL &&
- self->codec->decinit(&self->state, self->codec->config) != 0)
+ self->codec->decinit(&self->state, self->codec) != 0)
goto errorexit;
Py_DECREF(codec);
/*[clinic end generated code: output=138490370a680abc input=5d4140db84b5e1e2]*/
{
if (self->codec->decreset != NULL &&
- self->codec->decreset(&self->state, self->codec->config) != 0)
+ self->codec->decreset(&self->state, self->codec) != 0)
return NULL;
self->pendingsize = 0;
if (self->errors == NULL)
goto errorexit;
if (self->codec->decinit != NULL &&
- self->codec->decinit(&self->state, self->codec->config) != 0)
+ self->codec->decinit(&self->state, self->codec) != 0)
goto errorexit;
Py_DECREF(codec);
if (self->errors == NULL)
goto errorexit;
if (self->codec->encinit != NULL &&
- self->codec->encinit(&self->state, self->codec->config) != 0)
+ self->codec->encinit(&self->state, self->codec) != 0)
goto errorexit;
Py_DECREF(codec);
codec_capsule *data = PyCapsule_GetPointer(arg, CODEC_CAPSULE);
const MultibyteCodec *codec = data->codec;
- if (codec->codecinit != NULL && codec->codecinit(codec->config) != 0)
+ if (codec->codecinit != NULL && codec->codecinit(codec) != 0)
return NULL;
module_state *state = get_module_state(module);