koco-cvs Mailing List for Python Korean Codecs (Page 11)
Brought to you by:
perky
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
(88) |
May
(5) |
Jun
|
Jul
(27) |
Aug
|
Sep
|
Oct
(5) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(77) |
Feb
(3) |
Mar
|
Apr
(22) |
May
(123) |
Jun
(80) |
Jul
(83) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Hye-Shik C. <pe...@us...> - 2003-05-19 06:14:20
|
perky 03/05/18 23:14:20 Modified: . setup.py Log: Build multibytecodec and _euc_kr module. Revision Changes Path 1.5 +5 -2 cjkcodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/setup.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- setup.py 17 May 2003 21:56:17 -0000 1.4 +++ setup.py 19 May 2003 06:14:19 -0000 1.5 @@ -27,7 +27,7 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: setup.py,v 1.4 2003/05/17 21:56:17 perky Exp $ +# $Id: setup.py,v 1.5 2003/05/19 06:14:19 perky Exp $ # import sys @@ -41,7 +41,10 @@ [Extension("cjkcodecs.mapdata_ja_JP", ["src/maps/mapdata_ja_JP.c"]), Extension("cjkcodecs.mapdata_ko_KR", ["src/maps/mapdata_ko_KR.c"]), Extension("cjkcodecs.mapdata_zh_CN", ["src/maps/mapdata_zh_CN.c"]), - Extension("cjkcodecs.mapdata_zh_TW", ["src/maps/mapdata_zh_TW.c"])], + Extension("cjkcodecs.mapdata_zh_TW", ["src/maps/mapdata_zh_TW.c"]), + Extension("cjkcodecs.multibytecodec", ["src/multibytecodec.c"]), + Extension("cjkcodecs._euc_kr", ["src/_euc_kr.c"]), + ], ) # ex: ts=8 sts=4 et |
From: Hye-Shik C. <pe...@us...> - 2003-05-19 06:06:39
|
perky 03/05/18 23:06:38 Modified: src multibytecodec.c multibytecodec.h Added: src _euc_kr.c codeccommon.h Log: Add on-going first implementation. Revision Changes Path 1.3 +2 -2 cjkcodecs/src/multibytecodec.c Index: multibytecodec.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/multibytecodec.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- multibytecodec.c 19 May 2003 02:53:49 -0000 1.2 +++ multibytecodec.c 19 May 2003 06:06:38 -0000 1.3 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: multibytecodec.c,v 1.2 2003/05/19 02:53:49 perky Exp $ + * $Id: multibytecodec.c,v 1.3 2003/05/19 06:06:38 perky Exp $ */ #include "Python.h" @@ -268,7 +268,7 @@ /* we don't reuse inleft and outleft here. * error callbacks can relocate the cursor anywhere on buffer */ - inleft = (size_t)buf->inbuf_end - (size_t)buf->inbuf; + inleft = (size_t)(buf->inbuf_end - buf->inbuf); outleft = (size_t)(buf->outbuf_end - buf->outbuf); r = codec->encode(state, &buf->inbuf, inleft, &buf->outbuf, outleft); 1.4 +5 -5 cjkcodecs/src/multibytecodec.h Index: multibytecodec.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/multibytecodec.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- multibytecodec.h 19 May 2003 02:53:49 -0000 1.3 +++ multibytecodec.h 19 May 2003 06:06:38 -0000 1.4 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: multibytecodec.h,v 1.3 2003/05/19 02:53:49 perky Exp $ + * $Id: multibytecodec.h,v 1.4 2003/05/19 06:06:38 perky Exp $ */ #ifndef _PYTHON_MULTIBYTECODEC_H_ @@ -41,11 +41,11 @@ } PyMultibyteCodec_State; typedef int (*mbencode_func)(PyMultibyteCodec_State *state, - const Py_UNICODE **inbuf, int inleft, - unsigned char **outbuf, int outleft); + const Py_UNICODE **inbuf, size_t inleft, + unsigned char **outbuf, size_t outleft); typedef int (*mbdecode_func)(PyMultibyteCodec_State *state, - const unsigned char **inbuf, int inleft, - Py_UNICODE **outbuf, int outleft); + const unsigned char **inbuf, size_t inleft, + Py_UNICODE **outbuf, size_t outleft); typedef struct { const char *encoding; 1.1 cjkcodecs/src/_euc_kr.c Index: _euc_kr.c =================================================================== /* * _euc_kr.c: the EUC-KR codec * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: _euc_kr.c,v 1.1 2003/05/19 06:06:38 perky Exp $ */ #include "Python.h" #include "multibytecodec.h" #include "cjkcommon.h" #include "codeccommon.h" const static struct unim_index *cp949encmap; const static struct dbcs_index *ksx1001decmap, *cp949decmap; static int euc_kr_encode(PyMultibyteCodec_State *state, const Py_UNICODE **inbuf, size_t inleft, unsigned char **outbuf, size_t outleft) { while (inleft > 0) { const struct unim_index *map; Py_UNICODE c = **inbuf, clow; DBCHAR code; if (c < 0x80) { if (outleft < 1) return MBERR_TOOSMALL; **outbuf = c; (*inbuf)++; inleft--; (*outbuf)++; outleft--; continue; } if (outleft < 2) return MBERR_TOOSMALL; map = &cp949encmap[c >> 8]; clow = c & 0xff; if (map->map == NULL || clow < map->bottom || clow > map->top || (code = map->map[clow - map->bottom]) == UNIINV) return 2; if (code & 0x8000) /* MSB set: CP949 */ return 2; (*outbuf)[0] = (code >> 8) | 0x80; (*outbuf)[1] = (code & 0xFF) | 0x80; (*outbuf) += 2; outleft -= 2; (*inbuf)++; inleft--; } return 0; } static int euc_kr_decode(PyMultibyteCodec_State *state, const unsigned char **inbuf, size_t inleft, Py_UNICODE **outbuf, size_t outleft) { return 0; } static PyMultibyteCodec __codec = { "euc_kr", euc_kr_encode, euc_kr_decode, }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void init_euc_kr(void) { PyObject *codec; PyObject *m = NULL, *mod = NULL, *o = NULL; m = Py_InitModule("_euc_kr", __methods); /* Import mapdata */ MAPOPEN(mod, "ko_KR") if (importmap(mod, "__map_ksx1001", NULL, &ksx1001decmap) || importmap(mod, "__map_cp949ext", NULL, &cp949decmap) || importmap(mod, "__map_cp949", &cp949encmap, NULL)) goto errorexit; MAPCLOSE(mod) /* Create Codec Instances */ MULTIBYTECODEC_OPEN(mod, o) codec = createcodec(o, &__codec); if (codec == NULL) goto errorexit; PyModule_AddObject(m, "codec", codec); MULTIBYTECODEC_CLOSE(mod, o) if (PyErr_Occurred()) Py_FatalError("can't initialize the _euc_kr module"); return; errorexit: Py_XDECREF(m); Py_XDECREF(mod); Py_XDECREF(o); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/codeccommon.h Index: codeccommon.h =================================================================== /* * codeccommon.h: Common Codec Routines * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: codeccommon.h,v 1.1 2003/05/19 06:06:38 perky Exp $ */ #define MAPOPEN(mod, locale) \ mod = PyImport_ImportModule("mapdata_" locale); \ if (mod == NULL) goto errorexit; #define MAPCLOSE(mod) \ Py_DECREF(mod); #define MULTIBYTECODEC_OPEN(mod, o) \ mod = PyImport_ImportModule("multibytecodec"); \ if (mod == NULL) goto errorexit; \ o = PyObject_GetAttrString(mod, "__create_codec"); \ if (o == NULL || !PyCallable_Check(o)) \ goto errorexit; #define MULTIBYTECODEC_CLOSE(mod, o) \ Py_DECREF(o); Py_DECREF(mod); static int importmap(PyObject *mod, const char *symbol, const struct unim_index **encmap, const struct dbcs_index **decmap) { PyObject *o; o = PyObject_GetAttrString(mod, (char*)symbol); if (o == NULL) return -1; else if (!PyCObject_Check(o)) { PyErr_SetString(PyExc_ValueError, "map data must be a CObject."); return -1; } else { struct dbcs_map *map; map = PyCObject_AsVoidPtr(o); if (encmap != NULL) *encmap = map->encmap; if (decmap != NULL) *decmap = map->decmap; Py_DECREF(o); } return 0; } static PyObject * createcodec(PyObject *cofunc, PyMultibyteCodec *codec) { PyObject *args, *r; args = PyTuple_New(1); if (args == NULL) return NULL; PyTuple_SET_ITEM(args, 0, PyCObject_FromVoidPtr(codec, NULL)); r = PyObject_CallObject(cofunc, args); Py_DECREF(args); return r; } /* * ex: ts=8 sts=4 et */ |
From: Hye-Shik C. <pe...@us...> - 2003-05-19 06:06:00
|
perky 03/05/18 23:05:59 Modified: src/maps mapdata_ko_KR.c Log: Fix typo. Revision Changes Path 1.3 +3 -3 cjkcodecs/src/maps/mapdata_ko_KR.c Index: mapdata_ko_KR.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/mapdata_ko_KR.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- mapdata_ko_KR.c 18 May 2003 15:58:09 -0000 1.2 +++ mapdata_ko_KR.c 19 May 2003 06:05:58 -0000 1.3 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: mapdata_ko_KR.c,v 1.2 2003/05/18 15:58:09 perky Exp $ + * $Id: mapdata_ko_KR.c,v 1.3 2003/05/19 06:05:58 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map mapholders[] = { {"ksx1001", NULL, ksx1001_decmap}, - {"cp949ext", cp949_encmap, NULL}, - {"cp949", NULL, cp949ext_decmap}, + {"cp949", cp949_encmap, NULL}, + {"cp949ext", NULL, cp949ext_decmap}, {"", NULL, NULL}, }; |
From: Hye-Shik C. <pe...@us...> - 2003-05-19 02:53:51
|
perky 03/05/18 19:53:49 Modified: src multibytecodec.c multibytecodec.h Log: Add basic encoder routines. Revision Changes Path 1.2 +209 -885 cjkcodecs/src/multibytecodec.c Index: multibytecodec.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/multibytecodec.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- multibytecodec.c 20 Apr 2003 17:35:31 -0000 1.1 +++ multibytecodec.c 19 May 2003 02:53:49 -0000 1.2 @@ -26,13 +26,19 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: multibytecodec.c,v 1.1 2003/04/20 17:35:31 perky Exp $ + * $Id: multibytecodec.c,v 1.2 2003/05/19 02:53:49 perky Exp $ */ #include "Python.h" #include "multibytecodec.h" -PyDoc_STRVAR(multibyteencoder_doc, +typedef struct { + const Py_UNICODE *inbuf, *inbuf_top, *inbuf_end; + unsigned char *outbuf, *outbuf_end; + PyObject *excobj, *outobj; +} MultibyteEncodeBuffer; + +PyDoc_STRVAR(MultibyteCodec_Encode__doc__, "I.encode(unicode, [,errors]) -> (string, length consumed)\n\ \n\ Return an encoded string version of `unicode'. errors may be given to\n\ @@ -41,26 +47,8 @@ 'ignore', 'replace' and 'xmlcharrefreplace' as well as any other name\n\ registered with codecs.register_error that can handle UnicodeEncodeErrors."); -PyDoc_STRVAR(multibytedecoder_doc, -"I.decode(string, [,errors]) -> (unicodeobject, length consumed)\n\ -\n\ -Decodes `string' using I, an MultibyteDecode instance. errors may be given\n\ -to set a different error handling scheme. Default is 'strict' meaning\n\ -that encoding errors raise a UnicodeDecodeError. Other possible values\n\ -are 'ignore' and 'replace' as well as any other name registerd with\n\ -codecs.register_error that is able to handle UnicodeDecodeErrors."); - static char *kwarglist[] = {"input", "errors", NULL}; -static PyObject *multibyteencoder_encode(PyMultibyteEncoderObject *, - PyMultibyteEncoder_Context *, const Py_UNICODE *, - int, PyObject *, int); -static PyObject *multibytedecoder_decode(PyMultibyteDecoderObject *, - PyMultibyteDecoder_Context *, const char *, - int, PyObject *, int); -static PyObject *mbstreamreader_create(PyMultibyteDecoderObject *, - PyObject *, const char *); - static PyObject * make_tuple(PyObject *unicode, int len) { @@ -99,37 +87,8 @@ return PyCodec_LookupError(errors); } -static const char * -multibyte_strerror(int e) -{ - const char *msg; - - switch (e) { - case MBERR_TOOSMALL: - msg = "not output buffer space"; - break; - case MBERR_TOOFEW: - msg = "incomplete multibyte sequence"; - break; - case MBERR_ILLSEQ: - msg = "illegal multibyte encoding sequence"; - break; - case MBERR_UNDEFINED: - msg = "undefined character or no map"; - break; - case MBERR_INTERNAL: - msg = "internal error"; - break; - default: - msg = "unknown error"; - break; - } - - return msg; -} - static int -expand_encodebuffer(PyMultibyteEncoder_Buffer *buf, int esize) +expand_encodebuffer(MultibyteEncodeBuffer *buf, int esize) { int orgpos, orgsize; @@ -152,103 +111,93 @@ } static int -expand_decodebuffer(PyMultibyteDecoder_Buffer *buf, int esize) -{ - int orgpos, orgsize; +multibytecodec_error(PyMultibyteCodec *codec, + PyMultibyteCodec_State *state, + MultibyteEncodeBuffer *buf, + PyObject *errors, int e) +{ + PyObject *retobj = NULL, *retstr = NULL, *argsobj, *tobj; + const char *reason; + int retstrsize, newpos, start, end, esize; + + if (e == MBERR_TOOSMALL) { + RESERVE_ENCODEBUFFER(buf, -1); + return 0; /* retry it */ + } else if (e > 0) { + reason = "illegal multibyte sequence"; + esize = e; + } else { + switch (e) { + case MBERR_TOOFEW: + reason = "incomplete multibyte sequence"; + esize = (int)(buf->inbuf_end - buf->inbuf); + break; + case MBERR_INTERNAL: + PyErr_SetString(PyExc_RuntimeError, "internal codec error"); + return -1; + default: + PyErr_SetString(PyExc_RuntimeError, "unknown runtime error"); + return -1; + } + } - orgpos = (int)(buf->outbuf - PyUnicode_AS_UNICODE(buf->outobj)); - orgsize = PyUnicode_GET_SIZE(buf->outobj); - if (PyUnicode_Resize(&buf->outobj, orgsize + ( - esize < (orgsize >> 1) ? (orgsize >> 1) | 1 : esize)) == -1) - return -1; + if (errors == ERROR_REPLACE) { + const Py_UNICODE replchar = '?', *inbuf = &replchar; + int r; - buf->outbuf = PyUnicode_AS_UNICODE(buf->outobj) + orgpos; - buf->outbuf_end = PyUnicode_AS_UNICODE(buf->outobj) - + PyUnicode_GET_SIZE(buf->outobj); + for (;;) { + size_t outleft; - return 0; -} -#define RESERVE_DECODEBUFFER(buf, s) { \ - if ((s) < 1 || (buf)->outbuf + (s) > (buf)->outbuf_end) \ - if (expand_decodebuffer(buf, s) == -1) \ - goto errorexit; \ -} + outleft = (size_t)(buf->outbuf_end - buf->outbuf); + r = codec->encode(state, &inbuf, 1, &buf->outbuf, outleft); + if (r == MBERR_TOOSMALL) { + RESERVE_ENCODEBUFFER(buf, -1); + continue; + } else + break; + } -static int -multibyteencoder_error(PyMultibyteEncoderObject *self, - PyMultibyteEncoder_Context *ctx, - PyMultibyteEncoder_Buffer *buf, - PyMultibyteEncoder_Error *err, - const char *reason, - PyObject *errors) -{ - PyObject *argsobj, *retobj = NULL, *tobj; - PyObject *retstr = NULL, *exc = NULL; - int retstrsize, newpos, e, nonctxbuf; + if (r != 0) { + RESERVE_ENCODEBUFFER(buf, 1); + *buf->outbuf++ = '?'; + } + } + if (errors == ERROR_IGNORE) { + buf->inbuf += esize; + return 0; + } - nonctxbuf = (buf->inbuf_top != err->object); + start = (int)(buf->inbuf - buf->inbuf_top); + end = start + esize; - if (errors == ERROR_REPLACE) { - if (self->codec->putrepl != NULL) { - /* we can't put just '?' here. - * consider utf-16 or iso-2022 shifted state */ - do { - e = self->codec->putrepl(self->hdl, ctx, buf); - if (e == MBERR_TOOSMALL) { - RESERVE_ENCODEBUFFER(buf, -1); - continue; - } - } while (0); - - if (!e) return err->end; - else if (e == MBERR_INTERNAL) - return -1; - /* fall through to put '?' for other errors */ - } - RESERVE_ENCODEBUFFER(buf, 1); - *buf->outbuf++ = '?'; - return err->end; - } else if (errors == ERROR_IGNORE) - return err->end; - - if (!nonctxbuf) { - /* use cached exception object if available */ - if (buf->excobj == NULL) { - exc = PyUnicodeEncodeError_Create(self->hdl->encoding, - err->object, err->objlength, err->start, err->end, reason); - if (exc == NULL) - goto errorexit; - buf->excobj = exc; - } else { - exc = buf->excobj; - if (PyUnicodeEncodeError_SetStart(exc, err->start) != 0) - goto errorexit; - if (PyUnicodeEncodeError_SetEnd(exc, err->end) != 0) - goto errorexit; - if (PyUnicodeEncodeError_SetReason(exc, reason) != 0) - goto errorexit; - } + /* use cached exception object if available */ + if (buf->excobj == NULL) { + buf->excobj = PyUnicodeEncodeError_Create(codec->encoding, + buf->inbuf_top, (int)(buf->inbuf_end - buf->inbuf_top), + start, end, reason); + if (buf->excobj == NULL) + goto errorexit; } else { - exc = PyUnicodeEncodeError_Create(self->hdl->encoding, - err->object, err->objlength, 0, err->objlength, reason); - if (exc == NULL) + if (PyUnicodeEncodeError_SetStart(buf->excobj, start) != 0) + goto errorexit; + if (PyUnicodeEncodeError_SetEnd(buf->excobj, end) != 0) + goto errorexit; + if (PyUnicodeEncodeError_SetReason(buf->excobj, reason) != 0) goto errorexit; } if (errors == ERROR_STRICT) { - PyCodec_StrictErrors(exc); + PyCodec_StrictErrors(buf->excobj); goto errorexit; } - /* `errors' is a real python object from here */ - assert(errors > ERROR_MAX); - +#if 0 argsobj = PyTuple_New(1); if (argsobj == NULL) goto errorexit; - PyTuple_SET_ITEM(argsobj, 0, exc); - Py_INCREF(exc); + PyTuple_SET_ITEM(argsobj, 0, buf->excobj); + Py_INCREF(buf->excobj); retobj = PyObject_CallObject(errors, argsobj); Py_DECREF(argsobj); if (retobj == NULL) @@ -257,12 +206,12 @@ if (!PyTuple_Check(retobj) || PyTuple_GET_SIZE(retobj) != 2 || !PyUnicode_Check((tobj = PyTuple_GET_ITEM(retobj, 0))) || !PyInt_Check(PyTuple_GET_ITEM(retobj, 1))) { - PyErr_SetString(PyExc_ValueError, "encoding error handler " - "must return (unicode, int) tuple"); + PyErr_SetString(PyExc_ValueError, + "encoding error handler must return (unicode, int) tuple"); goto errorexit; } - retstr = multibyteencoder_encode(self, ctx, PyUnicode_AS_UNICODE(tobj), + retstr = multibytecodec_encode(self, ic, PyUnicode_AS_UNICODE(tobj), PyUnicode_GET_SIZE(tobj), ERROR_STRICT, 0); if (retstr == NULL) goto errorexit; @@ -274,405 +223,125 @@ buf->outbuf += retstrsize; newpos = (int)PyInt_AS_LONG(PyTuple_GET_ITEM(retobj, 1)); - if (nonctxbuf) { - if (newpos < 0) - newpos += err->objlength; - if (newpos < 0 || newpos > err->objlength) { - PyErr_Format(PyExc_IndexError, - "position %d from error handler out of bounds", newpos); - goto errorexit; - } - newpos -= err->objlength - err->end + err->start; - /* translating to inbuf position: rewind by (err->end - err->start) */ - } else { - if (newpos < 0) - newpos += INBUFLEN(buf); - if (newpos < 0 || buf->inbuf_top + newpos > buf->inbuf_end) { - PyErr_Format(PyExc_IndexError, - "position %d from error handler out of bounds", newpos); - goto errorexit; - } + if (newpos < 0) + newpos += (int)(buf->inbuf_end - buf->inbuf_top); + if (newpos < 0 || buf->inbuf_top + newpos > buf->inbuf_end) { + PyErr_Format(PyExc_IndexError, + "position %d from error handler out of bounds", newpos); + goto errorexit; + } + switch (self->unitype) { + case UNIINTERNAL_UTF_8: + if (newpos >= start) /* buf->rinbuf is at 'start' position now */ + buf->rinbuf = skipchars_utf8(buf->rinbuf, newpos - start); + else + buf->rinbuf = skipchars_utf8(buf->rinbuf_top, newpos); + break; + case UNIINTERNAL_UCS_SWAPPED: + buf->rinbuf = buf->rinbuf_top + newpos * Py_UNICODE_SIZE; + break; + default: + break; } + buf->inbuf = buf->inbuf_top + newpos; Py_DECREF(retobj); Py_DECREF(retstr); - if (nonctxbuf) { - Py_DECREF(exc); - } - return newpos; + return 0; +#endif errorexit: Py_XDECREF(retobj); Py_XDECREF(retstr); - if (nonctxbuf) { - Py_XDECREF(exc); - } return -1; } -static PyObject * -multibyteencoder_encode(PyMultibyteEncoderObject *self, - PyMultibyteEncoder_Context *ctx, - const Py_UNICODE *data, int datalen, - PyObject *errors, int doflush) -{ - PyMultibyteEncoder_Buffer buf; - int finalsize; - - if (datalen == 0) - return PyString_FromString(""); - - buf.excobj = NULL; - buf.inbuf = buf.inbuf_top = data; - buf.inbuf_end = buf.inbuf_top + datalen; - buf.outobj = PyString_FromStringAndSize(NULL, datalen * 2); - if (buf.outobj == NULL) - goto errorexit; - buf.outbuf = (unsigned char *)PyString_AS_STRING(buf.outobj); - buf.outbuf_end = buf.outbuf + PyString_GET_SIZE(buf.outobj); - - while (1) { - PyMultibyteEncoder_Error err; - int e, newpos; - - if (buf.inbuf < buf.inbuf_end) { - e = self->codec->encode(self->hdl, ctx, &buf, &err); - if (!e) continue; - } else if (buf.inbuf == buf.inbuf_end) { - if (doflush && self->codec->flush != NULL) { - e = self->codec->flush(self->hdl, ctx, &buf, &err); - if (!e) break; - else if (e != MBERR_TOOSMALL) - doflush = 0; - } else - break; - } else break; - - switch (e) { - case MBERR_TOOSMALL: - RESERVE_ENCODEBUFFER(&buf, -1); - break; - case MBERR_INTERNAL: - /* module sets an exception */ - goto errorexit; - default: - newpos = multibyteencoder_error(self, ctx, &buf, &err, - multibyte_strerror(e), errors); - if (err.object != buf.inbuf_top) - PyMem_Free(err.object); - if (newpos == -1) - goto errorexit; - buf.inbuf = buf.inbuf_top + newpos; - if (self->codec->reset != NULL && self->codec->reset(self->hdl, ctx)) - return NULL; - } - } - - finalsize = (int)((char*)buf.outbuf - PyString_AS_STRING(buf.outobj)); - - if (finalsize != PyString_GET_SIZE(buf.outobj)) - if (_PyString_Resize(&buf.outobj, finalsize) == -1) - goto errorexit; - - Py_XDECREF(buf.excobj); - - return buf.outobj; - -errorexit: - Py_XDECREF(buf.excobj); - Py_XDECREF(buf.outobj); - - return NULL; -} - -static PyObject * -multibyteencoder_call(PyMultibyteEncoderObject *self, - PyObject *args, PyObject *kwargs) +static int +multibytecodec_iencode(PyMultibyteCodec *codec, + PyMultibyteCodec_State *state, + MultibyteEncodeBuffer *buf, + PyObject *errors) { - PyMultibyteEncoder_Context ctx; - Py_UNICODE *data; - PyObject *errorcb, *r; - const char *errors = NULL; - int datalen; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "u#|z:encode", - kwarglist, &data, &datalen, &errors)) - return NULL; - - errorcb = get_errorcallback(errors); - if (errorcb == NULL) - return NULL; - - if (self->codec->open != NULL && self->codec->open(self->hdl, &ctx)) - goto errorexit_noclose; - - r = multibyteencoder_encode(self, &ctx, data, datalen, errorcb, 1); - if (r == NULL) - goto errorexit; - - if (errorcb > ERROR_MAX) { - Py_DECREF(errorcb); - } - if (self->codec->close != NULL) - self->codec->close(self->hdl, &ctx); - - return make_tuple(r, datalen); - -errorexit: - if (self->codec->close != NULL) - self->codec->close(self->hdl, &ctx); -errorexit_noclose: - if (errorcb > ERROR_MAX) { - Py_DECREF(errorcb); + for (;;) { + int r; + size_t inleft, outleft; + + /* we don't reuse inleft and outleft here. + * error callbacks can relocate the cursor anywhere on buffer */ + inleft = (size_t)buf->inbuf_end - (size_t)buf->inbuf; + outleft = (size_t)(buf->outbuf_end - buf->outbuf); + r = codec->encode(state, &buf->inbuf, inleft, + &buf->outbuf, outleft); + + if (r == 0) + return 0; + else if (multibytecodec_error(codec, state, buf, errors, r)) + return -1; + else if (buf->inbuf >= buf->inbuf_end) + return 0; } - - return NULL; } -static void -multibyteencoder_dealloc(PyMultibyteEncoderObject *self) -{ - if (self->codec != NULL && self->codec->shutdown != NULL) - self->codec->shutdown(self->hdl); - PyMem_Del(self->hdl); - PyObject_Del(self); -} - -static PyObject * -multibyteencoder_repr(PyMultibyteEncoderObject *self) -{ - return PyString_FromFormat( - "<MultibyteEncoder codec='%s' encoding='%s'>", - self->codec->name, self->hdl->encoding); -} - -static PyTypeObject PyMultibyteEncoder_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "MultibyteEncoder", /*tp_name*/ - sizeof(PyMultibyteEncoderObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)multibyteencoder_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - (reprfunc)multibyteencoder_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - (ternaryfunc)multibyteencoder_call, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - multibyteencoder_doc, /*tp_doc*/ -}; - static int -multibytedecoder_error(PyMultibyteDecoder_Handle *hdl, - PyMultibyteDecoder_Context *ctx, - PyMultibyteDecoder_Buffer *buf, - PyMultibyteDecoder_Error *err, - const char *reason, - PyObject *errors) +multibytecodec_prepencoderbuf(MultibyteEncodeBuffer *buf, + const Py_UNICODE *data, int datalen) { - PyObject *argsobj, *retobj = NULL; - PyObject *exc = NULL, *retuni = NULL; - int retunisize, newpos, nonctxbuf; - - nonctxbuf = (buf->inbuf_top != err->object); - - if (errors == ERROR_REPLACE) { - RESERVE_DECODEBUFFER(buf, 1); - *buf->outbuf++ = Py_UNICODE_REPLACEMENT_CHARACTER; - return err->end; - } else if (errors == ERROR_IGNORE) - return err->end; - - if (!nonctxbuf) { - /* use cached exception object if available */ - if (buf->excobj == NULL) { - exc = PyUnicodeDecodeError_Create( - hdl->encoding, buf->inbuf_top, - INBUFLEN(buf), err->start, err->end, reason); - if (exc == NULL) - goto errorexit; - buf->excobj = exc; - } else { - exc = buf->excobj; - if (PyUnicodeDecodeError_SetStart(exc, err->start) != 0) - goto errorexit; - if (PyUnicodeDecodeError_SetEnd(exc, err->end) != 0) - goto errorexit; - if (PyUnicodeDecodeError_SetReason(exc, reason) != 0) - goto errorexit; - } - } else { - exc = PyUnicodeDecodeError_Create(hdl->encoding, - err->object, err->objlength, 0, err->objlength, reason); - if (exc == NULL) - goto errorexit; - } - - if (errors == ERROR_STRICT) { - PyCodec_StrictErrors(exc); - goto errorexit; - } - - /* `errors' is a real python object from here */ - assert(errors > ERROR_MAX); - - argsobj = PyTuple_New(1); - if (argsobj == NULL) - goto errorexit; - - PyTuple_SET_ITEM(argsobj, 0, exc); - Py_INCREF(exc); - retobj = PyObject_CallObject(errors, argsobj); - Py_DECREF(argsobj); - if (retobj == NULL) - goto errorexit; - - if (!PyTuple_Check(retobj) || PyTuple_GET_SIZE(retobj) != 2 || - !PyUnicode_Check((retuni = PyTuple_GET_ITEM(retobj, 0))) || - !PyInt_Check(PyTuple_GET_ITEM(retobj, 1))) { - PyErr_SetString(PyExc_ValueError, "decoding error handler " - "must return (unicode, int) tuple"); - goto errorexit; - } - - retunisize = PyUnicode_GET_SIZE(retuni); - if (retunisize > 0) { - RESERVE_DECODEBUFFER(buf, retunisize); - memcpy((char *)buf->outbuf, PyUnicode_AS_DATA(retuni), - retunisize * Py_UNICODE_SIZE); - buf->outbuf += retunisize; - } - - newpos = (int)PyInt_AS_LONG(PyTuple_GET_ITEM(retobj, 1)); - if (nonctxbuf) { - if (newpos < 0) - newpos += err->objlength; - if (newpos < 0 || newpos > err->objlength) { - PyErr_Format(PyExc_IndexError, - "position %d from error handler out of bounds", newpos); - goto errorexit; - } - newpos -= err->objlength - err->end + err->start; - /* translating to inbuf position: rewind by (err->end - err->start) */ - } else { - if (newpos < 0) - newpos += INBUFLEN(buf); - if (newpos < 0 || buf->inbuf_top + newpos > buf->inbuf_end) { - PyErr_Format(PyExc_IndexError, - "position %d from error handler out of bounds", newpos); - goto errorexit; - } - } - Py_DECREF(retobj); - if (nonctxbuf) { - Py_DECREF(exc); - } - return newpos; + buf->excobj = NULL; + buf->inbuf = buf->inbuf_top = data; + buf->inbuf_end = buf->inbuf_top + datalen; + buf->outobj = PyString_FromStringAndSize(NULL, datalen * 2 + 16); + if (buf->outobj == NULL) + return -1; + buf->outbuf = (unsigned char *)PyString_AS_STRING(buf->outobj); + buf->outbuf_end = buf->outbuf + PyString_GET_SIZE(buf->outobj); -errorexit: - Py_XDECREF(retobj); - if (nonctxbuf) { - Py_XDECREF(exc); - } - return -1; + return 0; } static PyObject * -multibytedecoder_decode(PyMultibyteDecoderObject *self, - PyMultibyteDecoder_Context *ctx, - const char *data, int datalen, - PyObject *errors, int doflush) +multibytecodec_encode(PyMultibyteCodec *codec, + PyMultibyteCodec_State *state, + const Py_UNICODE *data, int datalen, + PyObject *errors) { - PyMultibyteDecoder_Buffer buf; - int finalsize; + MultibyteEncodeBuffer buf; + int finalsize; if (datalen == 0) - return PyUnicode_FromUnicode(NULL, 0); + return PyString_FromString(""); - buf.excobj = NULL; - buf.inbuf = buf.inbuf_top = (unsigned char *)data; - buf.inbuf_end = buf.inbuf_top + datalen; - buf.outobj = PyUnicode_FromUnicode(NULL, datalen); - if (buf.outobj == NULL) + if (multibytecodec_prepencoderbuf(&buf, data, datalen) == -1) goto errorexit; - buf.outbuf = PyUnicode_AS_UNICODE(buf.outobj); - buf.outbuf_end = buf.outbuf + PyUnicode_GET_SIZE(buf.outobj); - - while (1) { - PyMultibyteDecoder_Error err; - int e, newpos; - - if (buf.inbuf < buf.inbuf_end) { - e = self->codec->decode(self->hdl, ctx, &buf, &err); - if (!e) continue; - } else if (buf.inbuf == buf.inbuf_end) { - if (doflush && self->codec->flush != NULL) { - e = self->codec->flush(self->hdl, ctx, &buf, &err); - if (!e) break; - else if (e != MBERR_TOOSMALL) - doflush = 0; - } else - break; - } else break; - switch (e) { - case MBERR_TOOSMALL: - RESERVE_DECODEBUFFER(&buf, -1); - break; - case MBERR_INTERNAL: - /* module sets an exception */ - goto errorexit; - default: - newpos = multibytedecoder_error(self->hdl, ctx, &buf, &err, - multibyte_strerror(e), errors); - if (err.object != buf.inbuf_top) - PyMem_Free(err.object); - if (newpos == -1) - goto errorexit; - buf.inbuf = buf.inbuf_top + newpos; - if (self->codec->reset != NULL && self->codec->reset(self->hdl, ctx)) - return NULL; - } - } + if (multibytecodec_iencode(codec, state, &buf, errors) == -1) + goto errorexit; - finalsize = (int)(buf.outbuf - PyUnicode_AS_UNICODE(buf.outobj)); + finalsize = (int)((char*)buf.outbuf - PyString_AS_STRING(buf.outobj)); - if (finalsize != PyUnicode_GET_SIZE(buf.outobj)) - if (PyUnicode_Resize(&buf.outobj, finalsize) == -1) + if (finalsize != PyString_GET_SIZE(buf.outobj)) + if (_PyString_Resize(&buf.outobj, finalsize) == -1) goto errorexit; Py_XDECREF(buf.excobj); - return buf.outobj; errorexit: Py_XDECREF(buf.excobj); Py_XDECREF(buf.outobj); - return NULL; } static PyObject * -multibytedecoder_call(PyMultibyteDecoderObject *self, +MultibyteCodec_Encode(PyMultibyteCodecObject *self, PyObject *args, PyObject *kwargs) { - PyMultibyteDecoder_Context ctx; - PyObject *errorcb, *r; - const char *errors = NULL; - char *data; - int datalen; + PyMultibyteCodec_State state; + Py_UNICODE *data; + PyObject *errorcb, *r; + const char *errors = NULL; + int datalen; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|z:decode", + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "u#|z:encode", kwarglist, &data, &datalen, &errors)) return NULL; @@ -680,445 +349,100 @@ if (errorcb == NULL) return NULL; - if (self->codec->open != NULL && self->codec->open(self->hdl, &ctx)) - goto errorexit_noclose; - - r = multibytedecoder_decode(self, &ctx, data, datalen, errorcb, 1); + state.p = NULL; + r = multibytecodec_encode(self->codec, &state, data, datalen, errorcb); if (r == NULL) goto errorexit; if (errorcb > ERROR_MAX) { Py_DECREF(errorcb); } - if (self->codec->close != NULL) - self->codec->close(self->hdl, &ctx); - return make_tuple(r, datalen); errorexit: - if (self->codec->close != NULL) - self->codec->close(self->hdl, &ctx); -errorexit_noclose: if (errorcb > ERROR_MAX) { Py_DECREF(errorcb); } - return NULL; } -PyDoc_STRVAR(multibytedecoder_makestream__doc__, -"I.makestream(stream, errors='strict')\n" -"Return an StreamReader instance of `I' multibyte decode."); - -static PyObject * -multibytedecoder_makestream(PyMultibyteDecoderObject *self, - PyObject *args, PyObject *kwargs) -{ - static char *stream_kwarglist[] = {"stream", "errors", NULL}; - PyObject *stream; - char *errors = NULL; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|s:makestream", - stream_kwarglist, &stream, &errors)) - return NULL; - - return mbstreamreader_create(self, stream, errors); -} - -static void -multibytedecoder_dealloc(PyMultibyteDecoderObject *self) -{ - if (self->codec != NULL && self->codec->shutdown != NULL) - self->codec->shutdown(self->hdl); - PyMem_Del(self->hdl); - PyObject_Del(self); -} - -static PyObject * -multibytedecoder_repr(PyMultibyteDecoderObject *self) -{ - return PyString_FromFormat( - "<MultibyteDecoder codec='%s' encoding='%s'>", - self->codec->name, self->hdl->encoding); -} - -static struct PyMethodDef multibytedecoder_methods[] = { - {"makestream", (PyCFunction)multibytedecoder_makestream, +static struct PyMethodDef multibytecodec_methods[] = { + {"encode", (PyCFunction)MultibyteCodec_Encode, METH_VARARGS | METH_KEYWORDS, - multibytedecoder_makestream__doc__}, - {NULL, NULL}, -}; - -static PyTypeObject PyMultibyteDecoder_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "MultibyteDecoder", /*tp_name*/ - sizeof(PyMultibyteDecoderObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)multibytedecoder_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - (reprfunc)multibytedecoder_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - (ternaryfunc)multibytedecoder_call, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - multibytedecoder_doc, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iterext*/ - multibytedecoder_methods, /*tp_methods*/ -}; - -static PyObject * -mbstreamreader_iread(PyMultibyteStreamReaderObject *self, - const char *method, int sizehint) -{ - PyMultibyteDecoder_Buffer buf; - PyObject *cres; - int finalsize = 0, rsize, flushed = 0; - - if (sizehint == 0) - return PyUnicode_FromUnicode(NULL, 0); - - buf.outobj = buf.excobj = NULL; - cres = NULL; - - while (1) { - if (sizehint < 0) - cres = PyObject_CallMethod(self->stream, (char *)method, NULL); - else - cres = PyObject_CallMethod(self->stream, - (char *)method, "i", sizehint); - if (cres == NULL) - goto errorexit; - - if (!PyString_Check(cres)) { - PyErr_SetString(PyExc_TypeError, - "stream function returned a non-string object"); - goto errorexit; - } - - rsize = PyString_GET_SIZE(cres); - buf.inbuf = buf.inbuf_top = (unsigned char *)PyString_AS_STRING(cres); - buf.inbuf_end = buf.inbuf_top + rsize; - if (buf.outobj == NULL) { - buf.outobj = PyUnicode_FromUnicode(NULL, rsize); - if (buf.outobj == NULL) - goto errorexit; - buf.outbuf = PyUnicode_AS_UNICODE(buf.outobj); - buf.outbuf_end = buf.outbuf + PyUnicode_GET_SIZE(buf.outobj); - } - - while (buf.inbuf < buf.inbuf_end || (rsize == 0 && !flushed)) { - PyMultibyteDecoder_Error err; - int e, newpos; - - if (rsize == 0) { /* end of file */ - if (self->codec->flush != NULL) { - e = self->codec->flush(self->hdl, &self->ctx, &buf, &err); - if (e != MBERR_TOOSMALL) flushed = 1; - if (!e) break; - } else { - flushed = 1; - break; - } - } else { - e = self->codec->decode(self->hdl, &self->ctx, &buf, &err); - if (!e) continue; - } - - switch (e) { - case MBERR_TOOSMALL: - RESERVE_DECODEBUFFER(&buf, -1); - break; - case MBERR_INTERNAL: - goto errorexit; - default: - newpos = multibytedecoder_error(self->hdl, &self->ctx, &buf, - &err, multibyte_strerror(e), self->errors); - if (err.object != buf.inbuf_top) - PyMem_Free(err.object); - if (newpos == -1) - goto errorexit; - buf.inbuf = buf.inbuf_top + newpos; - break; - } - } - - finalsize = (int)(buf.outbuf - PyUnicode_AS_UNICODE(buf.outobj)); - - Py_DECREF(cres); - cres = NULL; - - if (sizehint < 0 || finalsize != 0 || rsize == 0) - break; - - sizehint = 1; /* read 1 more byte and retry */ - } - - if (finalsize != PyUnicode_GET_SIZE(buf.outobj)) - if (PyUnicode_Resize(&buf.outobj, finalsize) == -1) - goto errorexit; - - Py_XDECREF(cres); - Py_XDECREF(buf.excobj); - return buf.outobj; - -errorexit: - Py_XDECREF(cres); - Py_XDECREF(buf.excobj); - Py_XDECREF(buf.outobj); - return NULL; -} - -static PyObject * -mbstreamreader_read(PyMultibyteStreamReaderObject *self, PyObject *args) -{ - PyObject *sizeobj = NULL; - long size; - - if (!PyArg_ParseTuple(args, "|O:read", &sizeobj)) - return NULL; - - if (sizeobj == Py_None || sizeobj == NULL) - size = -1; - else if (PyInt_Check(sizeobj)) - size = PyInt_AsLong(sizeobj); - else { - PyErr_SetString(PyExc_TypeError, "arg 1 must be an integer"); - return NULL; - } - - return mbstreamreader_iread(self, "read", size); -} - -static PyObject * -mbstreamreader_readline(PyMultibyteStreamReaderObject *self, PyObject *args) -{ - PyObject *sizeobj = NULL; - long size; - - if (!PyArg_ParseTuple(args, "|O:readline", &sizeobj)) - return NULL; - - if (sizeobj == Py_None || sizeobj == NULL) - size = -1; - else if (PyInt_Check(sizeobj)) - size = PyInt_AsLong(sizeobj); - else { - PyErr_SetString(PyExc_TypeError, "arg 1 must be an integer"); - return NULL; - } - - return mbstreamreader_iread(self, "readline", size); -} - -static PyObject * -mbstreamreader_readlines(PyMultibyteStreamReaderObject *self, PyObject *args) -{ - PyObject *sizehintobj = NULL, *r, *sr; - long sizehint; - - if (!PyArg_ParseTuple(args, "|O:readlines", &sizehintobj)) - return NULL; - - if (sizehintobj == Py_None || sizehintobj == NULL) - sizehint = -1; - else if (PyInt_Check(sizehintobj)) - sizehint = PyInt_AsLong(sizehintobj); - else { - PyErr_SetString(PyExc_TypeError, "arg 1 must be an integer"); - return NULL; - } - - r = mbstreamreader_iread(self, "read", sizehint); - if (r == NULL) - return NULL; - - sr = PyUnicode_Splitlines(r, 1); - Py_DECREF(r); - return sr; -} - -static PyObject * -mbstreamreader_reset(PyMultibyteStreamReaderObject *self, PyObject *args) -{ - if (self->codec->reset != NULL && self->codec->reset(self->hdl, &self->ctx)) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef mbstreamreader_methods[] = { - {"read", (PyCFunction)mbstreamreader_read, METH_VARARGS, NULL}, - {"readline", (PyCFunction)mbstreamreader_readline, METH_VARARGS, NULL}, - {"readlines", (PyCFunction)mbstreamreader_readlines, METH_VARARGS, NULL}, - {"reset", (PyCFunction)mbstreamreader_reset, METH_NOARGS, NULL}, + MultibyteCodec_Encode__doc__}, {NULL, NULL}, }; static void -mbstreamreader_dealloc(PyMultibyteStreamReaderObject *self) -{ - if (self->codec != NULL && self->codec->close != NULL) - self->codec->close(self->hdl, &self->ctx); - if (self->errors > ERROR_MAX) { - Py_DECREF(self->errors); - } - Py_XDECREF(self->stream); - Py_XDECREF(self->decoder); - PyObject_Del(self); -} - -static PyObject * -mbstreamreader_repr(PyMultibyteStreamReaderObject *self) +multibytecodec_dealloc(PyMultibyteCodecObject *self) { - return PyString_FromFormat( - "<MultibyteStreamReader codec='%s' encoding='%s'>", - self->codec->name, self->hdl->encoding); -} + PyObject_Del(self); +} -static PyTypeObject PyMultibyteStreamReader_Type = { +static PyTypeObject PyMultibyteCodec_Type = { PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "MultibyteStreamReader", /*tp_name*/ - sizeof(PyMultibyteStreamReaderObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ + 0, /* ob_size */ + "MultibyteCodec", /* tp_name */ + sizeof(PyMultibyteCodecObject), /* tp_basicsize */ + 0, /* tp_itemsize */ /* methods */ - (destructor)mbstreamreader_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - (reprfunc)mbstreamreader_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iterext*/ - mbstreamreader_methods, /*tp_methods*/ + (destructor)multibytecodec_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iterext */ + multibytecodec_methods, /* tp_methods */ }; PyObject * -_PyMultibyteEncoder_Create(PyMultibyteEncoder_Codec *codec, - const char *encoding) +__create_codec(PyObject *ignore, PyObject *arg) { - PyMultibyteEncoderObject *self; + PyMultibyteCodecObject *self; - if (strlen(encoding) >= MAXENCODINGLEN) { - PyErr_SetString(PyExc_ValueError, "encoding name too long"); + if (!PyCObject_Check(arg)) { + PyErr_SetString(PyExc_ValueError, "argument type invalid"); return NULL; } - self = PyObject_New(PyMultibyteEncoderObject, &PyMultibyteEncoder_Type); + self = PyObject_New(PyMultibyteCodecObject, &PyMultibyteCodec_Type); if (self == NULL) return NULL; - self->codec = codec; - self->hdl = PyMem_New(PyMultibyteEncoder_Handle, 1); - if (self->hdl == NULL) - return NULL; - strcpy(self->hdl->encoding, encoding); - self->hdl->config = NULL; - - if (codec->init != NULL && codec->init(self->hdl)) { - self->codec = NULL; - Py_DECREF(self); - return NULL; - } + self->codec = PyCObject_AsVoidPtr(arg); - return (PyObject *)self; + return (PyObject *)self; } -PyObject * -_PyMultibyteDecoder_Create(PyMultibyteDecoder_Codec *codec, - const char *encoding) -{ - PyMultibyteDecoderObject *self; - - if (strlen(encoding) >= MAXENCODINGLEN) { - PyErr_SetString(PyExc_ValueError, "encoding name too long"); - return NULL; - } - - self = PyObject_New(PyMultibyteDecoderObject, &PyMultibyteDecoder_Type); - if (self == NULL) - return NULL; - - self->codec = codec; - self->hdl = PyMem_New(PyMultibyteDecoder_Handle, 1); - if (self->hdl == NULL) - return NULL; - strcpy(self->hdl->encoding, encoding); - self->hdl->config = NULL; - - if (codec->init != NULL && codec->init(self->hdl)) { - self->codec = NULL; - Py_DECREF(self); - return NULL; - } - - return (PyObject *)self; -} +static struct PyMethodDef __methods[] = { + {"__create_codec", (PyCFunction)__create_codec, METH_O}, + {NULL, NULL}, +}; -static PyObject * -mbstreamreader_create(PyMultibyteDecoderObject *decoder, - PyObject *stream, const char *errors) +void +initmultibytecodec(void) { - PyMultibyteStreamReaderObject *self; - - self = PyObject_New(PyMultibyteStreamReaderObject, - &PyMultibyteStreamReader_Type); - if (self == NULL) - return NULL; - - self->errors = get_errorcallback(errors); - if (self->errors == NULL) { - self->decoder = self->stream = NULL; - Py_DECREF(self); - return NULL; - } - self->hdl = decoder->hdl; - self->decoder = (PyObject *)decoder; - Py_INCREF(decoder); - self->stream = stream; - Py_INCREF(stream); - - self->codec = decoder->codec; - if (self->codec->open != NULL) - if (self->codec->open(self->hdl, &self->ctx)) { - self->codec = NULL; - Py_DECREF(self); - return NULL; - } + Py_InitModule("multibytecodec", __methods); - return (PyObject *)self; + if (PyErr_Occurred()) + Py_FatalError("can't initialize the multibytecodec module"); } /* 1.3 +7 -7 cjkcodecs/src/multibytecodec.h Index: multibytecodec.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/multibytecodec.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- multibytecodec.h 18 May 2003 23:21:29 -0000 1.2 +++ multibytecodec.h 19 May 2003 02:53:49 -0000 1.3 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: multibytecodec.h,v 1.2 2003/05/18 23:21:29 perky Exp $ + * $Id: multibytecodec.h,v 1.3 2003/05/19 02:53:49 perky Exp $ */ #ifndef _PYTHON_MULTIBYTECODEC_H_ @@ -41,11 +41,11 @@ } PyMultibyteCodec_State; typedef int (*mbencode_func)(PyMultibyteCodec_State *state, - const Py_UNICODE **inbuf, int *inleft, - unsigned char **outbuf, int *outleft); + const Py_UNICODE **inbuf, int inleft, + unsigned char **outbuf, int outleft); typedef int (*mbdecode_func)(PyMultibyteCodec_State *state, - const unsigned char **inbuf, int *inleft, - Py_UNICODE **outbuf, int *outleft); + const unsigned char **inbuf, int inleft, + Py_UNICODE **outbuf, int outleft); typedef struct { const char *encoding; @@ -62,7 +62,7 @@ typedef struct { PyObject_HEAD PyMultibyteCodec *codec; - PyMultibyteCodec_State *state; + PyMultibyteCodec_State state; unsigned char pending[MAXPENDING]; int pendingsize; PyObject *stream, *errors; @@ -71,7 +71,7 @@ typedef struct { PyObject_HEAD PyMultibyteCodec *codec; - PyMultibyteCodec_State *state; + PyMultibyteCodec_State state; Py_UNICODE pending[MAXPENDING]; int pendingsize; PyObject *stream, *errors; |
From: Hye-Shik C. <pe...@us...> - 2003-05-18 23:21:30
|
perky 03/05/18 16:21:29 Modified: src multibytecodec.h Log: Introduce new simple design of multibytecodec. Revision Changes Path 1.2 +34 -132 cjkcodecs/src/multibytecodec.h Index: multibytecodec.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/multibytecodec.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- multibytecodec.h 20 Apr 2003 17:35:31 -0000 1.1 +++ multibytecodec.h 18 May 2003 23:21:29 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: multibytecodec.h,v 1.1 2003/04/20 17:35:31 perky Exp $ + * $Id: multibytecodec.h,v 1.2 2003/05/18 23:21:29 perky Exp $ */ #ifndef _PYTHON_MULTIBYTECODEC_H_ @@ -35,155 +35,57 @@ extern "C" { #endif -#define MAXENCODINGLEN 64 - -typedef struct { - char encoding[MAXENCODINGLEN]; - void *config; /* intended to use in iconvcodec */ -} PyMultibyteEncoder_Handle; - -typedef void *PyMultibyteEncoder_Context; - -typedef struct { - const Py_UNICODE *inbuf, *inbuf_top, *inbuf_end; - unsigned char *outbuf, *outbuf_end; - PyObject *excobj, *outobj; -} PyMultibyteEncoder_Buffer; - -typedef struct { - Py_UNICODE *object; - /* if object != inbuf_top, error handler will assume object's last - * character is located to inbuf's current position. - * - * +--------+ - * | object | - * +yyyyy---+ - * ^ current buf->inbuf - * +-----------------+ - * | buf->inbuf_top | - * +xxx--------------+ - * yyyyyxxx => first 5 characters came from previous buffer and error is - * caused on feeding 3rd 'x'. - * - * in this case, multibyte subsytem will free the allocation for `object' - * and `start' and `end' is not object's range but a part of buf->inbuf_top - * because we can see all characters of object is the error content. - */ - int objlength; - int start, end; -} PyMultibyteEncoder_Error; - -typedef struct { - const char *name; - int (*init)(PyMultibyteEncoder_Handle *hdl); - void (*shutdown)(PyMultibyteEncoder_Handle *hdl); - int (*open)(PyMultibyteEncoder_Handle *hdl, - PyMultibyteEncoder_Context *ctx); - void (*close)(PyMultibyteEncoder_Handle *hdl, - PyMultibyteEncoder_Context *ctx); - int (*encode)(PyMultibyteEncoder_Handle *hdl, - PyMultibyteEncoder_Context *ctx, - PyMultibyteEncoder_Buffer *buf, - PyMultibyteEncoder_Error *err); - int (*flush)(PyMultibyteEncoder_Handle *hdl, - PyMultibyteEncoder_Context *ctx, - PyMultibyteEncoder_Buffer *buf, - PyMultibyteEncoder_Error *err); - int (*reset)(PyMultibyteEncoder_Handle *hdl, - PyMultibyteEncoder_Context *ctx); - int (*putrepl)(PyMultibyteEncoder_Handle *hdl, - PyMultibyteEncoder_Context *ctx, - PyMultibyteEncoder_Buffer *buf); -} PyMultibyteEncoder_Codec; - - -typedef struct { - char encoding[MAXENCODINGLEN]; - void *config; /* intended to use in iconvcodec */ -} PyMultibyteDecoder_Handle; - -typedef void *PyMultibyteDecoder_Context; - -typedef struct { - const unsigned char *inbuf, *inbuf_top, *inbuf_end; - Py_UNICODE *outbuf, *outbuf_end; - PyObject *excobj, *outobj; -} PyMultibyteDecoder_Buffer; - -typedef struct { - unsigned char *object; - int objlength; - int start, end; -} PyMultibyteDecoder_Error; - -typedef struct { - const char *name; - int (*init)(PyMultibyteDecoder_Handle *hdl); - void (*shutdown)(PyMultibyteDecoder_Handle *hdl); - int (*open)(PyMultibyteDecoder_Handle *hdl, - PyMultibyteDecoder_Context *ctx); - void (*close)(PyMultibyteDecoder_Handle *hdl, - PyMultibyteDecoder_Context *ctx); - int (*decode)(PyMultibyteDecoder_Handle *hdl, - PyMultibyteDecoder_Context *ctx, - PyMultibyteDecoder_Buffer *buf, - PyMultibyteDecoder_Error *err); - int (*flush)(PyMultibyteDecoder_Handle *hdl, - PyMultibyteDecoder_Context *ctx, - PyMultibyteDecoder_Buffer *buf, - PyMultibyteDecoder_Error *err); - int (*reset)(PyMultibyteDecoder_Handle *hdl, - PyMultibyteDecoder_Context *ctx); -} PyMultibyteDecoder_Codec; - +typedef union { + unsigned long i; + void *p; +} PyMultibyteCodec_State; + +typedef int (*mbencode_func)(PyMultibyteCodec_State *state, + const Py_UNICODE **inbuf, int *inleft, + unsigned char **outbuf, int *outleft); +typedef int (*mbdecode_func)(PyMultibyteCodec_State *state, + const unsigned char **inbuf, int *inleft, + Py_UNICODE **outbuf, int *outleft); + +typedef struct { + const char *encoding; + mbencode_func encode; + mbdecode_func decode; +} PyMultibyteCodec; typedef struct { PyObject_HEAD - PyMultibyteEncoder_Codec *codec; - PyMultibyteEncoder_Handle *hdl; -} PyMultibyteEncoderObject; + PyMultibyteCodec *codec; +} PyMultibyteCodecObject; +#define MAXPENDING 8 typedef struct { PyObject_HEAD - PyMultibyteDecoder_Codec *codec; - PyMultibyteDecoder_Handle *hdl; -} PyMultibyteDecoderObject; + PyMultibyteCodec *codec; + PyMultibyteCodec_State *state; + unsigned char pending[MAXPENDING]; + int pendingsize; + PyObject *stream, *errors; +} PyMultibyteStreamReaderObject; typedef struct { PyObject_HEAD - PyMultibyteDecoder_Codec *codec; - PyMultibyteDecoder_Handle *hdl; - PyMultibyteDecoder_Context ctx; + PyMultibyteCodec *codec; + PyMultibyteCodec_State *state; + Py_UNICODE pending[MAXPENDING]; + int pendingsize; PyObject *stream, *errors; - PyObject *decoder; /* just to keep refcount */ -} PyMultibyteStreamReaderObject; +} PyMultibyteStreamWriterObject; +/* positive values for illegal sequences */ #define MBERR_TOOSMALL (-1) /* insufficient output buffer space */ #define MBERR_TOOFEW (-2) /* incomplete input buffer */ -#define MBERR_ILLSEQ (-3) /* illegal multibyte encoding sequence */ -#define MBERR_UNDEFINED (-4) /* undefined character or no map */ -#define MBERR_INTERNAL (-5) /* internal runtime error */ +#define MBERR_INTERNAL (-3) /* internal runtime error */ #define ERROR_STRICT (PyObject *)(1) #define ERROR_IGNORE (PyObject *)(2) #define ERROR_REPLACE (PyObject *)(3) #define ERROR_MAX ERROR_REPLACE - -#define HAS_NOT_ENOUGH_SPACE(buf, size) \ - ((buf)->outbuf + (size) > (buf)->outbuf_end) -#define INBUFPOS(buf) (int)((buf)->inbuf - (buf)->inbuf_top) -#define INBUFLEN(buf) (int)((buf)->inbuf_end - (buf)->inbuf_top) -#define SETERR_INBUF(err, buf) { \ - (err)->object = (void *)(buf)->inbuf_top; /* discard const */ \ - (err)->objlength = INBUFLEN(buf); \ -} - -PyAPI_FUNC(PyObject *) _PyMultibyteEncoder_Create( - PyMultibyteEncoder_Codec *codec, - const char *encoding); -PyAPI_FUNC(PyObject *) _PyMultibyteDecoder_Create( - PyMultibyteDecoder_Codec *codec, - const char *encoding); #ifdef __cplusplus } |
From: Hye-Shik C. <pe...@us...> - 2003-05-18 16:01:27
|
perky 03/05/18 09:01:26 Removed: src _ja_codecs.c _ko_codecs.c _zh_CN_codecs.c _zh_TW_codecs.c map_generic.c.in Log: Remove old fashioned files. |
From: Hye-Shik C. <pe...@us...> - 2003-05-18 15:58:17
|
perky 03/05/18 08:58:09 Modified: src/maps mapdata_ja_JP.c mapdata_ko_KR.c mapdata_zh_CN.c mapdata_zh_TW.c Log: Fix up re mistake Revision Changes Path 1.2 +3 -3 cjkcodecs/src/maps/mapdata_ja_JP.c Index: mapdata_ja_JP.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/mapdata_ja_JP.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mapdata_ja_JP.c 17 May 2003 21:56:45 -0000 1.1 +++ mapdata_ja_JP.c 18 May 2003 15:58:09 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: mapdata_ja_JP.c,v 1.1 2003/05/17 21:56:45 perky Exp $ + * $Id: mapdata_ja_JP.c,v 1.2 2003/05/18 15:58:09 perky Exp $ */ #include "Python.h" @@ -36,7 +36,7 @@ #include "map_jisxcommon.h" #include "map_cp932ext.h" -static struct dbcs_map mapdataers[] = { +static struct dbcs_map mapholders[] = { {"jisx0208", NULL, jisx0208_decmap}, {"jisx0212", NULL, jisx0212_decmap}, {"jisxcommon", jisxcommon_encmap, NULL}, @@ -56,7 +56,7 @@ m = Py_InitModule("mapdata_ja_JP", __methods); - for (h = mapdataers; h->charset[0] != '\0'; h++) { + for (h = mapholders; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); 1.2 +3 -3 cjkcodecs/src/maps/mapdata_ko_KR.c Index: mapdata_ko_KR.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/mapdata_ko_KR.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mapdata_ko_KR.c 17 May 2003 21:56:45 -0000 1.1 +++ mapdata_ko_KR.c 18 May 2003 15:58:09 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: mapdata_ko_KR.c,v 1.1 2003/05/17 21:56:45 perky Exp $ + * $Id: mapdata_ko_KR.c,v 1.2 2003/05/18 15:58:09 perky Exp $ */ #include "Python.h" @@ -35,7 +35,7 @@ #include "map_cp949.h" #include "map_cp949ext.h" -static struct dbcs_map mapdataers[] = { +static struct dbcs_map mapholders[] = { {"ksx1001", NULL, ksx1001_decmap}, {"cp949ext", cp949_encmap, NULL}, {"cp949", NULL, cp949ext_decmap}, @@ -54,7 +54,7 @@ m = Py_InitModule("mapdata_ko_KR", __methods); - for (h = mapdataers; h->charset[0] != '\0'; h++) { + for (h = mapholders; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); 1.2 +3 -3 cjkcodecs/src/maps/mapdata_zh_CN.c Index: mapdata_zh_CN.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/mapdata_zh_CN.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mapdata_zh_CN.c 17 May 2003 21:56:45 -0000 1.1 +++ mapdata_zh_CN.c 18 May 2003 15:58:09 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: mapdata_zh_CN.c,v 1.1 2003/05/17 21:56:45 perky Exp $ + * $Id: mapdata_zh_CN.c,v 1.2 2003/05/18 15:58:09 perky Exp $ */ #include "Python.h" @@ -36,7 +36,7 @@ #include "map_gbcommon.h" #include "map_gb18030ext.h" -static struct dbcs_map mapdataers[] = { +static struct dbcs_map mapholders[] = { {"gb2312", NULL, gb2312_decmap}, {"gbkext", NULL, gbkext_decmap}, {"gbcommon", gbcommon_encmap, NULL}, @@ -56,7 +56,7 @@ m = Py_InitModule("mapdata_zn_CN", __methods); - for (h = mapdataers; h->charset[0] != '\0'; h++) { + for (h = mapholders; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); 1.2 +3 -3 cjkcodecs/src/maps/mapdata_zh_TW.c Index: mapdata_zh_TW.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/mapdata_zh_TW.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mapdata_zh_TW.c 17 May 2003 21:56:45 -0000 1.1 +++ mapdata_zh_TW.c 18 May 2003 15:58:09 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: mapdata_zh_TW.c,v 1.1 2003/05/17 21:56:45 perky Exp $ + * $Id: mapdata_zh_TW.c,v 1.2 2003/05/18 15:58:09 perky Exp $ */ #include "Python.h" @@ -34,7 +34,7 @@ #include "map_big5.h" #include "map_cp950ext.h" -static struct dbcs_map mapdataers[] = { +static struct dbcs_map mapholders[] = { {"big5", big5_encmap, big5_decmap}, {"cp950ext", cp950ext_encmap, cp950ext_decmap}, {"", NULL, NULL}, @@ -52,7 +52,7 @@ m = Py_InitModule("mapdata_zh_TW", __methods); - for (h = mapdataers; h->charset[0] != '\0'; h++) { + for (h = mapholders; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:57:38
|
perky 03/05/17 14:57:37 Removed: src/maps Makefile generic.c.in map_big5.c map_cp932ext.c map_cp949.c map_cp949ext.c map_cp950ext.c map_gb18030ext.c map_gb2312.c map_gbcommon.c map_gbkext.c map_jisx0208.c map_jisx0212.c map_jisxcommon.c map_ksx1001.c Log: Remove old separated holders |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:56:45
|
perky 03/05/17 14:56:45 Added: src/maps mapdata_ja_JP.c mapdata_ko_KR.c mapdata_zh_CN.c mapdata_zh_TW.c Log: Add new map data holders Revision Changes Path 1.1 cjkcodecs/src/maps/mapdata_ja_JP.c Index: mapdata_ja_JP.c =================================================================== /* * mapdata_ja_JP.c: Map Provider for Japanese Encodings * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: mapdata_ja_JP.c,v 1.1 2003/05/17 21:56:45 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_jisx0208.h" #include "map_jisx0212.h" #include "map_jisxcommon.h" #include "map_cp932ext.h" static struct dbcs_map mapdataers[] = { {"jisx0208", NULL, jisx0208_decmap}, {"jisx0212", NULL, jisx0212_decmap}, {"jisxcommon", jisxcommon_encmap, NULL}, {"cp932ext", cp932ext_encmap, cp932ext_decmap}, {"", NULL, NULL}, }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmapdata_ja_JP(void) { struct dbcs_map *h; PyObject *m; m = Py_InitModule("mapdata_ja_JP", __methods); for (h = mapdataers; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); PyModule_AddObject(m, mhname, PyCObject_FromVoidPtr(h, NULL)); } if (PyErr_Occurred()) Py_FatalError("can't initialize the mapdata_ja_JP module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/mapdata_ko_KR.c Index: mapdata_ko_KR.c =================================================================== /* * mapdata_ko_KR.c: Map Provider for Korean Encodings * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: mapdata_ko_KR.c,v 1.1 2003/05/17 21:56:45 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_ksx1001.h" #include "map_cp949.h" #include "map_cp949ext.h" static struct dbcs_map mapdataers[] = { {"ksx1001", NULL, ksx1001_decmap}, {"cp949ext", cp949_encmap, NULL}, {"cp949", NULL, cp949ext_decmap}, {"", NULL, NULL}, }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmapdata_ko_KR(void) { struct dbcs_map *h; PyObject *m; m = Py_InitModule("mapdata_ko_KR", __methods); for (h = mapdataers; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); PyModule_AddObject(m, mhname, PyCObject_FromVoidPtr(h, NULL)); } if (PyErr_Occurred()) Py_FatalError("can't initialize the mapdata_ko_KR module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/mapdata_zh_CN.c Index: mapdata_zh_CN.c =================================================================== /* * mapdata_zh_CN.c: Map Provider for Simplified Chinese Encodings * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: mapdata_zh_CN.c,v 1.1 2003/05/17 21:56:45 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_gb2312.h" #include "map_gbkext.h" #include "map_gbcommon.h" #include "map_gb18030ext.h" static struct dbcs_map mapdataers[] = { {"gb2312", NULL, gb2312_decmap}, {"gbkext", NULL, gbkext_decmap}, {"gbcommon", gbcommon_encmap, NULL}, {"gb18030ext", gb18030ext_encmap, gb18030ext_decmap}, {"", NULL, NULL}, }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmapdata_zh_CN(void) { struct dbcs_map *h; PyObject *m; m = Py_InitModule("mapdata_zn_CN", __methods); for (h = mapdataers; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); PyModule_AddObject(m, mhname, PyCObject_FromVoidPtr(h, NULL)); } if (PyErr_Occurred()) Py_FatalError("can't initialize the mapdata_zh_CN module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/mapdata_zh_TW.c Index: mapdata_zh_TW.c =================================================================== /* * mapdata_zh_TW.c: Map Provider for Traditional Chinese Encodings * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: mapdata_zh_TW.c,v 1.1 2003/05/17 21:56:45 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_big5.h" #include "map_cp950ext.h" static struct dbcs_map mapdataers[] = { {"big5", big5_encmap, big5_decmap}, {"cp950ext", cp950ext_encmap, cp950ext_decmap}, {"", NULL, NULL}, }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmapdata_zh_TW(void) { struct dbcs_map *h; PyObject *m; m = Py_InitModule("mapdata_zh_TW", __methods); for (h = mapdataers; h->charset[0] != '\0'; h++) { char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); PyModule_AddObject(m, mhname, PyCObject_FromVoidPtr(h, NULL)); } if (PyErr_Occurred()) Py_FatalError("can't initialize the mapdata_zh_TW module"); } /* * ex: ts=8 sts=4 et */ |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:56:19
|
perky 03/05/17 14:56:18 Modified: . setup.py Log: Build new map data holders. Revision Changes Path 1.4 +5 -17 cjkcodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/setup.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- setup.py 16 May 2003 12:06:30 -0000 1.3 +++ setup.py 17 May 2003 21:56:17 -0000 1.4 @@ -27,33 +27,21 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: setup.py,v 1.3 2003/05/16 12:06:30 perky Exp $ +# $Id: setup.py,v 1.4 2003/05/17 21:56:17 perky Exp $ # import sys from distutils.core import setup, Extension -charsets = ( -# Simplified Chinese -'gb2312', 'gbk', 'gb18030', - -# Traditional Chinese -#'big5', - -# Japanese -'cp932', 'jisx0208', 'jisx0212', - -# Korean -'cp949', 'ksx1001', -) - setup (name = "cjkcodecs", version = "1.0", author = "Hye-Shik Chang", author_email = "pe...@Fr...", ext_modules = - [Extension("cjkcodecs.map_" + charset, - ["src/map_%s.c" % charset]) for charset in charsets] + [Extension("cjkcodecs.mapdata_ja_JP", ["src/maps/mapdata_ja_JP.c"]), + Extension("cjkcodecs.mapdata_ko_KR", ["src/maps/mapdata_ko_KR.c"]), + Extension("cjkcodecs.mapdata_zh_CN", ["src/maps/mapdata_zh_CN.c"]), + Extension("cjkcodecs.mapdata_zh_TW", ["src/maps/mapdata_zh_TW.c"])], ) # ex: ts=8 sts=4 et |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:17:40
|
perky 03/05/17 14:17:39 Modified: tools genmap_japanese.py genmap_support.py Log: Fix unmatched naming Revision Changes Path 1.5 +3 -3 cjkcodecs/tools/genmap_japanese.py Index: genmap_japanese.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/tools/genmap_japanese.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- genmap_japanese.py 17 May 2003 16:16:57 -0000 1.4 +++ genmap_japanese.py 17 May 2003 21:17:39 -0000 1.5 @@ -26,7 +26,7 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: genmap_japanese.py,v 1.4 2003/05/17 16:16:57 perky Exp $ +# $Id: genmap_japanese.py,v 1.5 2003/05/17 21:17:39 perky Exp $ # from genmap_support import * @@ -111,8 +111,8 @@ printcopyright(omap) print "Generating JIS X 0208 && JIS X 0212 encode map..." codebunch =[] -genmap_encode(codebunch, "jisx0208_0212", jisx0208_0212encmap) -print_encmap(omap, codebunch, "jisx0208_0212", jisx0208_0212encmap) +genmap_encode(codebunch, "jisxcommon", jisx0208_0212encmap) +print_encmap(omap, codebunch, "jisxcommon", jisx0208_0212encmap) omap = open("map_cp932ext.h", "w") printcopyright(omap) 1.5 +5 -5 cjkcodecs/tools/genmap_support.py Index: genmap_support.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/tools/genmap_support.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- genmap_support.py 17 May 2003 16:16:57 -0000 1.4 +++ genmap_support.py 17 May 2003 21:17:39 -0000 1.5 @@ -26,14 +26,14 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: genmap_support.py,v 1.4 2003/05/17 16:16:57 perky Exp $ +# $Id: genmap_support.py,v 1.5 2003/05/17 21:17:39 perky Exp $ # import re COPYRIGHT_HEADER = """\ /* - * $Id: genmap_support.py,v 1.4 2003/05/17 16:16:57 perky Exp $ + * $Id: genmap_support.py,v 1.5 2003/05/17 21:17:39 perky Exp $ */ """ re_UNIMAPDATE = re.compile('Date:\s*([ a-zA-Z0-9/]*)') @@ -61,10 +61,10 @@ if c2map.has_key(v): codebunch.append('0x%04x,' % c2map[v]) else: - codebunch.append('UNIINV,') + codebunch.append('NOCHAR,') def print_encmap(fo, codebunch, fmapprefix, fmap, f2map={}, f2mapprefix=''): - print >> fo, ("static const Py_UNICODE __%s_encmap[%d] = {" % ( + print >> fo, ("static const DBCHAR __%s_encmap[%d] = {" % ( fmapprefix, len(codebunch))) i = 0 while i < len(codebunch): @@ -74,7 +74,7 @@ print >> fo, "};" print >> fo - print >> fo, "static const struct dbcs_index %s_encmap[256] = {" % (fmapprefix) + print >> fo, "static const struct unim_index %s_encmap[256] = {" % (fmapprefix) for i in range(256): if fmap.has_key(i) and fmap[i].has_key(fmapprefix): map = fmap |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:17:25
|
perky 03/05/17 14:17:16 Modified: src/maps map_jisxcommon.h Log: Fix naming Revision Changes Path 1.4 +98 -98 cjkcodecs/src/maps/map_jisxcommon.h Index: map_jisxcommon.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisxcommon.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- map_jisxcommon.h 17 May 2003 20:58:58 -0000 1.3 +++ map_jisxcommon.h 17 May 2003 21:17:16 -0000 1.4 @@ -1,8 +1,8 @@ /* - * $Id: map_jisxcommon.h,v 1.3 2003/05/17 20:58:58 perky Exp $ + * $Id: map_jisxcommon.h,v 1.4 2003/05/17 21:17:16 perky Exp $ */ -static const DBCHAR __jisx0208_0212_encmap[22016] = { +static const DBCHAR __jisxcommon_encmap[22016] = { 0x2140, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, @@ -2757,12 +2757,12 @@ NOCHAR, NOCHAR, NOCHAR, NOCHAR, NOCHAR, 0x2131, NOCHAR, 0x216f, }; -static const struct unim_index jisx0208_0212_encmap[256] = { -/* 0x00 */ {__jisx0208_0212_encmap+0, 0x5c, 0xff}, -/* 0x01 */ {__jisx0208_0212_encmap+164, 0x00, 0xf5}, -/* 0x02 */ {__jisx0208_0212_encmap+410, 0xc7, 0xdd}, -/* 0x03 */ {__jisx0208_0212_encmap+433, 0x84, 0xce}, -/* 0x04 */ {__jisx0208_0212_encmap+508, 0x01, 0x5f}, +static const struct unim_index jisxcommon_encmap[256] = { +/* 0x00 */ {__jisxcommon_encmap+0, 0x5c, 0xff}, +/* 0x01 */ {__jisxcommon_encmap+164, 0x00, 0xf5}, +/* 0x02 */ {__jisxcommon_encmap+410, 0xc7, 0xdd}, +/* 0x03 */ {__jisxcommon_encmap+433, 0x84, 0xce}, +/* 0x04 */ {__jisxcommon_encmap+508, 0x01, 0x5f}, /* 0x05 */ {0, 0, 0}, /* 0x06 */ {0, 0, 0}, /* 0x07 */ {0, 0, 0}, @@ -2790,13 +2790,13 @@ /* 0x1D */ {0, 0, 0}, /* 0x1E */ {0, 0, 0}, /* 0x1F */ {0, 0, 0}, -/* 0x20 */ {__jisx0208_0212_encmap+603, 0x10, 0x3b}, -/* 0x21 */ {__jisx0208_0212_encmap+647, 0x03, 0xd4}, -/* 0x22 */ {__jisx0208_0212_encmap+857, 0x00, 0xa5}, -/* 0x23 */ {__jisx0208_0212_encmap+1023, 0x12, 0x12}, +/* 0x20 */ {__jisxcommon_encmap+603, 0x10, 0x3b}, +/* 0x21 */ {__jisxcommon_encmap+647, 0x03, 0xd4}, +/* 0x22 */ {__jisxcommon_encmap+857, 0x00, 0xa5}, +/* 0x23 */ {__jisxcommon_encmap+1023, 0x12, 0x12}, /* 0x24 */ {0, 0, 0}, -/* 0x25 */ {__jisx0208_0212_encmap+1024, 0x00, 0xef}, -/* 0x26 */ {__jisx0208_0212_encmap+1264, 0x05, 0x6f}, +/* 0x25 */ {__jisxcommon_encmap+1024, 0x00, 0xef}, +/* 0x26 */ {__jisxcommon_encmap+1264, 0x05, 0x6f}, /* 0x27 */ {0, 0, 0}, /* 0x28 */ {0, 0, 0}, /* 0x29 */ {0, 0, 0}, @@ -2806,7 +2806,7 @@ /* 0x2D */ {0, 0, 0}, /* 0x2E */ {0, 0, 0}, /* 0x2F */ {0, 0, 0}, -/* 0x30 */ {__jisx0208_0212_encmap+1371, 0x00, 0xfe}, +/* 0x30 */ {__jisxcommon_encmap+1371, 0x00, 0xfe}, /* 0x31 */ {0, 0, 0}, /* 0x32 */ {0, 0, 0}, /* 0x33 */ {0, 0, 0}, @@ -2836,88 +2836,88 @@ /* 0x4B */ {0, 0, 0}, /* 0x4C */ {0, 0, 0}, /* 0x4D */ {0, 0, 0}, -/* 0x4E */ {__jisx0208_0212_encmap+1626, 0x00, 0xff}, -/* 0x4F */ {__jisx0208_0212_encmap+1882, 0x00, 0xff}, -/* 0x50 */ {__jisx0208_0212_encmap+2138, 0x00, 0xfe}, -/* 0x51 */ {__jisx0208_0212_encmap+2393, 0x00, 0xfe}, -/* 0x52 */ {__jisx0208_0212_encmap+2648, 0x00, 0xff}, -/* 0x53 */ {__jisx0208_0212_encmap+2904, 0x00, 0xfa}, -/* 0x54 */ {__jisx0208_0212_encmap+3155, 0x01, 0xff}, -/* 0x55 */ {__jisx0208_0212_encmap+3410, 0x00, 0xff}, -/* 0x56 */ {__jisx0208_0212_encmap+3666, 0x05, 0xff}, -/* 0x57 */ {__jisx0208_0212_encmap+3917, 0x00, 0xff}, -/* 0x58 */ {__jisx0208_0212_encmap+4173, 0x00, 0xfd}, -/* 0x59 */ {__jisx0208_0212_encmap+4427, 0x02, 0xff}, -/* 0x5A */ {__jisx0208_0212_encmap+4681, 0x00, 0xfd}, -/* 0x5B */ {__jisx0208_0212_encmap+4935, 0x00, 0xff}, -/* 0x5C */ {__jisx0208_0212_encmap+5191, 0x01, 0xfd}, -/* 0x5D */ {__jisx0208_0212_encmap+5444, 0x01, 0xfe}, -/* 0x5E */ {__jisx0208_0212_encmap+5698, 0x00, 0xff}, -/* 0x5F */ {__jisx0208_0212_encmap+5954, 0x01, 0xff}, -/* 0x60 */ {__jisx0208_0212_encmap+6209, 0x07, 0xfd}, -/* 0x61 */ {__jisx0208_0212_encmap+6456, 0x00, 0xff}, -/* 0x62 */ {__jisx0208_0212_encmap+6712, 0x00, 0xff}, -/* 0x63 */ {__jisx0208_0212_encmap+6968, 0x01, 0xfa}, -/* 0x64 */ {__jisx0208_0212_encmap+7218, 0x06, 0xff}, -/* 0x65 */ {__jisx0208_0212_encmap+7468, 0x00, 0xff}, -/* 0x66 */ {__jisx0208_0212_encmap+7724, 0x00, 0xff}, -/* 0x67 */ {__jisx0208_0212_encmap+7980, 0x00, 0xff}, -/* 0x68 */ {__jisx0208_0212_encmap+8236, 0x02, 0xfd}, -/* 0x69 */ {__jisx0208_0212_encmap+8488, 0x00, 0xff}, -/* 0x6A */ {__jisx0208_0212_encmap+8744, 0x00, 0xfd}, -/* 0x6B */ {__jisx0208_0212_encmap+8998, 0x02, 0xff}, -/* 0x6C */ {__jisx0208_0212_encmap+9252, 0x02, 0xf4}, -/* 0x6D */ {__jisx0208_0212_encmap+9495, 0x04, 0xfc}, -/* 0x6E */ {__jisx0208_0212_encmap+9744, 0x00, 0xff}, -/* 0x6F */ {__jisx0208_0212_encmap+10000, 0x01, 0xfe}, -/* 0x70 */ {__jisx0208_0212_encmap+10254, 0x00, 0xfd}, -/* 0x71 */ {__jisx0208_0212_encmap+10508, 0x03, 0xff}, -/* 0x72 */ {__jisx0208_0212_encmap+10761, 0x00, 0xfe}, -/* 0x73 */ {__jisx0208_0212_encmap+11016, 0x02, 0xff}, -/* 0x74 */ {__jisx0208_0212_encmap+11270, 0x00, 0xff}, -/* 0x75 */ {__jisx0208_0212_encmap+11526, 0x03, 0xff}, -/* 0x76 */ {__jisx0208_0212_encmap+11779, 0x00, 0xfe}, -/* 0x77 */ {__jisx0208_0212_encmap+12034, 0x00, 0xfc}, -/* 0x78 */ {__jisx0208_0212_encmap+12287, 0x02, 0xff}, -/* 0x79 */ {__jisx0208_0212_encmap+12541, 0x00, 0xfc}, -/* 0x7A */ {__jisx0208_0212_encmap+12794, 0x00, 0xff}, -/* 0x7B */ {__jisx0208_0212_encmap+13050, 0x02, 0xfe}, -/* 0x7C */ {__jisx0208_0212_encmap+13303, 0x00, 0xfe}, -/* 0x7D */ {__jisx0208_0212_encmap+13558, 0x00, 0xfb}, -/* 0x7E */ {__jisx0208_0212_encmap+13810, 0x00, 0x9e}, -/* 0x7F */ {__jisx0208_0212_encmap+13969, 0x36, 0xff}, -/* 0x80 */ {__jisx0208_0212_encmap+14171, 0x00, 0xfe}, -/* 0x81 */ {__jisx0208_0212_encmap+14426, 0x02, 0xff}, -/* 0x82 */ {__jisx0208_0212_encmap+14680, 0x00, 0xfe}, -/* 0x83 */ {__jisx0208_0212_encmap+14935, 0x00, 0xfd}, -/* 0x84 */ {__jisx0208_0212_encmap+15189, 0x01, 0xff}, -/* 0x85 */ {__jisx0208_0212_encmap+15444, 0x00, 0xff}, -/* 0x86 */ {__jisx0208_0212_encmap+15700, 0x00, 0xfe}, -/* 0x87 */ {__jisx0208_0212_encmap+15955, 0x00, 0xff}, -/* 0x88 */ {__jisx0208_0212_encmap+16211, 0x01, 0xfe}, -/* 0x89 */ {__jisx0208_0212_encmap+16465, 0x01, 0xff}, -/* 0x8A */ {__jisx0208_0212_encmap+16720, 0x00, 0xff}, -/* 0x8B */ {__jisx0208_0212_encmap+16976, 0x00, 0x9f}, -/* 0x8C */ {__jisx0208_0212_encmap+17136, 0x37, 0xff}, -/* 0x8D */ {__jisx0208_0212_encmap+17337, 0x01, 0xff}, -/* 0x8E */ {__jisx0208_0212_encmap+17592, 0x01, 0xfe}, -/* 0x8F */ {__jisx0208_0212_encmap+17846, 0x00, 0xfe}, -/* 0x90 */ {__jisx0208_0212_encmap+18101, 0x00, 0xff}, -/* 0x91 */ {__jisx0208_0212_encmap+18357, 0x00, 0xff}, -/* 0x92 */ {__jisx0208_0212_encmap+18613, 0x00, 0xff}, -/* 0x93 */ {__jisx0208_0212_encmap+18869, 0x00, 0xfd}, -/* 0x94 */ {__jisx0208_0212_encmap+19123, 0x01, 0x84}, -/* 0x95 */ {__jisx0208_0212_encmap+19255, 0x77, 0xe6}, -/* 0x96 */ {__jisx0208_0212_encmap+19367, 0x1c, 0xfb}, -/* 0x97 */ {__jisx0208_0212_encmap+19591, 0x00, 0xff}, -/* 0x98 */ {__jisx0208_0212_encmap+19847, 0x01, 0xfe}, -/* 0x99 */ {__jisx0208_0212_encmap+20101, 0x02, 0xff}, -/* 0x9A */ {__jisx0208_0212_encmap+20355, 0x01, 0xff}, -/* 0x9B */ {__jisx0208_0212_encmap+20610, 0x00, 0xff}, -/* 0x9C */ {__jisx0208_0212_encmap+20866, 0x00, 0xf9}, -/* 0x9D */ {__jisx0208_0212_encmap+21116, 0x02, 0xfe}, -/* 0x9E */ {__jisx0208_0212_encmap+21369, 0x02, 0xff}, -/* 0x9F */ {__jisx0208_0212_encmap+21623, 0x02, 0xa5}, +/* 0x4E */ {__jisxcommon_encmap+1626, 0x00, 0xff}, +/* 0x4F */ {__jisxcommon_encmap+1882, 0x00, 0xff}, +/* 0x50 */ {__jisxcommon_encmap+2138, 0x00, 0xfe}, +/* 0x51 */ {__jisxcommon_encmap+2393, 0x00, 0xfe}, +/* 0x52 */ {__jisxcommon_encmap+2648, 0x00, 0xff}, +/* 0x53 */ {__jisxcommon_encmap+2904, 0x00, 0xfa}, +/* 0x54 */ {__jisxcommon_encmap+3155, 0x01, 0xff}, +/* 0x55 */ {__jisxcommon_encmap+3410, 0x00, 0xff}, +/* 0x56 */ {__jisxcommon_encmap+3666, 0x05, 0xff}, +/* 0x57 */ {__jisxcommon_encmap+3917, 0x00, 0xff}, +/* 0x58 */ {__jisxcommon_encmap+4173, 0x00, 0xfd}, +/* 0x59 */ {__jisxcommon_encmap+4427, 0x02, 0xff}, +/* 0x5A */ {__jisxcommon_encmap+4681, 0x00, 0xfd}, +/* 0x5B */ {__jisxcommon_encmap+4935, 0x00, 0xff}, +/* 0x5C */ {__jisxcommon_encmap+5191, 0x01, 0xfd}, +/* 0x5D */ {__jisxcommon_encmap+5444, 0x01, 0xfe}, +/* 0x5E */ {__jisxcommon_encmap+5698, 0x00, 0xff}, +/* 0x5F */ {__jisxcommon_encmap+5954, 0x01, 0xff}, +/* 0x60 */ {__jisxcommon_encmap+6209, 0x07, 0xfd}, +/* 0x61 */ {__jisxcommon_encmap+6456, 0x00, 0xff}, +/* 0x62 */ {__jisxcommon_encmap+6712, 0x00, 0xff}, +/* 0x63 */ {__jisxcommon_encmap+6968, 0x01, 0xfa}, +/* 0x64 */ {__jisxcommon_encmap+7218, 0x06, 0xff}, +/* 0x65 */ {__jisxcommon_encmap+7468, 0x00, 0xff}, +/* 0x66 */ {__jisxcommon_encmap+7724, 0x00, 0xff}, +/* 0x67 */ {__jisxcommon_encmap+7980, 0x00, 0xff}, +/* 0x68 */ {__jisxcommon_encmap+8236, 0x02, 0xfd}, +/* 0x69 */ {__jisxcommon_encmap+8488, 0x00, 0xff}, +/* 0x6A */ {__jisxcommon_encmap+8744, 0x00, 0xfd}, +/* 0x6B */ {__jisxcommon_encmap+8998, 0x02, 0xff}, +/* 0x6C */ {__jisxcommon_encmap+9252, 0x02, 0xf4}, +/* 0x6D */ {__jisxcommon_encmap+9495, 0x04, 0xfc}, +/* 0x6E */ {__jisxcommon_encmap+9744, 0x00, 0xff}, +/* 0x6F */ {__jisxcommon_encmap+10000, 0x01, 0xfe}, +/* 0x70 */ {__jisxcommon_encmap+10254, 0x00, 0xfd}, +/* 0x71 */ {__jisxcommon_encmap+10508, 0x03, 0xff}, +/* 0x72 */ {__jisxcommon_encmap+10761, 0x00, 0xfe}, +/* 0x73 */ {__jisxcommon_encmap+11016, 0x02, 0xff}, +/* 0x74 */ {__jisxcommon_encmap+11270, 0x00, 0xff}, +/* 0x75 */ {__jisxcommon_encmap+11526, 0x03, 0xff}, +/* 0x76 */ {__jisxcommon_encmap+11779, 0x00, 0xfe}, +/* 0x77 */ {__jisxcommon_encmap+12034, 0x00, 0xfc}, +/* 0x78 */ {__jisxcommon_encmap+12287, 0x02, 0xff}, +/* 0x79 */ {__jisxcommon_encmap+12541, 0x00, 0xfc}, +/* 0x7A */ {__jisxcommon_encmap+12794, 0x00, 0xff}, +/* 0x7B */ {__jisxcommon_encmap+13050, 0x02, 0xfe}, +/* 0x7C */ {__jisxcommon_encmap+13303, 0x00, 0xfe}, +/* 0x7D */ {__jisxcommon_encmap+13558, 0x00, 0xfb}, +/* 0x7E */ {__jisxcommon_encmap+13810, 0x00, 0x9e}, +/* 0x7F */ {__jisxcommon_encmap+13969, 0x36, 0xff}, +/* 0x80 */ {__jisxcommon_encmap+14171, 0x00, 0xfe}, +/* 0x81 */ {__jisxcommon_encmap+14426, 0x02, 0xff}, +/* 0x82 */ {__jisxcommon_encmap+14680, 0x00, 0xfe}, +/* 0x83 */ {__jisxcommon_encmap+14935, 0x00, 0xfd}, +/* 0x84 */ {__jisxcommon_encmap+15189, 0x01, 0xff}, +/* 0x85 */ {__jisxcommon_encmap+15444, 0x00, 0xff}, +/* 0x86 */ {__jisxcommon_encmap+15700, 0x00, 0xfe}, +/* 0x87 */ {__jisxcommon_encmap+15955, 0x00, 0xff}, +/* 0x88 */ {__jisxcommon_encmap+16211, 0x01, 0xfe}, +/* 0x89 */ {__jisxcommon_encmap+16465, 0x01, 0xff}, +/* 0x8A */ {__jisxcommon_encmap+16720, 0x00, 0xff}, +/* 0x8B */ {__jisxcommon_encmap+16976, 0x00, 0x9f}, +/* 0x8C */ {__jisxcommon_encmap+17136, 0x37, 0xff}, +/* 0x8D */ {__jisxcommon_encmap+17337, 0x01, 0xff}, +/* 0x8E */ {__jisxcommon_encmap+17592, 0x01, 0xfe}, +/* 0x8F */ {__jisxcommon_encmap+17846, 0x00, 0xfe}, +/* 0x90 */ {__jisxcommon_encmap+18101, 0x00, 0xff}, +/* 0x91 */ {__jisxcommon_encmap+18357, 0x00, 0xff}, +/* 0x92 */ {__jisxcommon_encmap+18613, 0x00, 0xff}, +/* 0x93 */ {__jisxcommon_encmap+18869, 0x00, 0xfd}, +/* 0x94 */ {__jisxcommon_encmap+19123, 0x01, 0x84}, +/* 0x95 */ {__jisxcommon_encmap+19255, 0x77, 0xe6}, +/* 0x96 */ {__jisxcommon_encmap+19367, 0x1c, 0xfb}, +/* 0x97 */ {__jisxcommon_encmap+19591, 0x00, 0xff}, +/* 0x98 */ {__jisxcommon_encmap+19847, 0x01, 0xfe}, +/* 0x99 */ {__jisxcommon_encmap+20101, 0x02, 0xff}, +/* 0x9A */ {__jisxcommon_encmap+20355, 0x01, 0xff}, +/* 0x9B */ {__jisxcommon_encmap+20610, 0x00, 0xff}, +/* 0x9C */ {__jisxcommon_encmap+20866, 0x00, 0xf9}, +/* 0x9D */ {__jisxcommon_encmap+21116, 0x02, 0xfe}, +/* 0x9E */ {__jisxcommon_encmap+21369, 0x02, 0xff}, +/* 0x9F */ {__jisxcommon_encmap+21623, 0x02, 0xa5}, /* 0xA0 */ {0, 0, 0}, /* 0xA1 */ {0, 0, 0}, /* 0xA2 */ {0, 0, 0}, @@ -3013,6 +3013,6 @@ /* 0xFC */ {0, 0, 0}, /* 0xFD */ {0, 0, 0}, /* 0xFE */ {0, 0, 0}, -/* 0xFF */ {__jisx0208_0212_encmap+21787, 0x01, 0xe5}, +/* 0xFF */ {__jisxcommon_encmap+21787, 0x01, 0xe5}, }; |
perky 03/05/17 14:16:02 Modified: src/maps Makefile map_big5.c map_cp932ext.c map_cp949.c map_cp949ext.c map_cp950ext.c map_gb18030ext.c map_gb2312.c map_gbcommon.c map_gbkext.c map_jisx0208.c map_jisx0212.c map_jisxcommon.c map_ksx1001.c Log: Correct enabling/disabling mails Revision Changes Path 1.3 +3 -3 cjkcodecs/src/maps/Makefile Index: Makefile =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Makefile 17 May 2003 21:13:53 -0000 1.2 +++ Makefile 17 May 2003 21:16:02 -0000 1.3 @@ -25,7 +25,7 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: Makefile,v 1.2 2003/05/17 21:13:53 perky Exp $ +# $Id: Makefile,v 1.3 2003/05/17 21:16:02 perky Exp $ # CHARSETS_BOTH= cp932ext gb18030ext big5 cp950ext @@ -47,11 +47,11 @@ done for cset in ${CHARSETS_ENC}; do \ CSET=`echo $$cset|tr "[:lower:]" "[:upper:]"`; \ - sed -e 's/%%charset%%_encmap/NULL/g' \ + sed -e 's/%%charset%%_decmap/NULL/g' \ ${TEMPLATE_TRS} generic.c.in > map_$$cset.c; \ done for cset in ${CHARSETS_DEC}; do \ CSET=`echo $$cset|tr "[:lower:]" "[:upper:]"`; \ - sed -e 's/%%charset%%_decmap/NULL/g' \ + sed -e 's/%%charset%%_encmap/NULL/g' \ ${TEMPLATE_TRS} generic.c.in > map_$$cset.c; \ done 1.2 +1 -1 cjkcodecs/src/maps/map_big5.c Index: map_big5.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_big5.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_big5.c 17 May 2003 21:00:59 -0000 1.1 +++ map_big5.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_big5.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_big5.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" 1.2 +0 -0 cjkcodecs/src/maps/map_cp932ext.c Index: map_cp932ext.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp932ext.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp932ext.c 17 May 2003 21:13:13 -0000 1.1 +++ map_cp932ext.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_cp932ext.c,v 1.1 2003/05/17 21:13:13 perky Exp $ + * $Id: map_cp932ext.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" 1.2 +3 -3 cjkcodecs/src/maps/map_cp949.c Index: map_cp949.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp949.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp949.c 17 May 2003 21:00:59 -0000 1.1 +++ map_cp949.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_cp949.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_cp949.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "cp949", - NULL, - cp949_decmap + cp949_encmap, + NULL }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_cp949ext.c Index: map_cp949ext.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp949ext.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp949ext.c 17 May 2003 21:00:59 -0000 1.1 +++ map_cp949ext.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_cp949ext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_cp949ext.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "cp949ext", - cp949ext_encmap, - NULL + NULL, + cp949ext_decmap }; static struct PyMethodDef __methods[] = { 1.2 +1 -1 cjkcodecs/src/maps/map_cp950ext.c Index: map_cp950ext.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp950ext.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp950ext.c 17 May 2003 21:00:59 -0000 1.1 +++ map_cp950ext.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_cp950ext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_cp950ext.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" 1.2 +1 -1 cjkcodecs/src/maps/map_gb18030ext.c Index: map_gb18030ext.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gb18030ext.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gb18030ext.c 17 May 2003 21:00:59 -0000 1.1 +++ map_gb18030ext.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_gb18030ext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_gb18030ext.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" 1.2 +3 -3 cjkcodecs/src/maps/map_gb2312.c Index: map_gb2312.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gb2312.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gb2312.c 17 May 2003 21:00:59 -0000 1.1 +++ map_gb2312.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_gb2312.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_gb2312.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "gb2312", - gb2312_encmap, - NULL + NULL, + gb2312_decmap }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_gbcommon.c Index: map_gbcommon.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gbcommon.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gbcommon.c 17 May 2003 21:00:59 -0000 1.1 +++ map_gbcommon.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_gbcommon.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_gbcommon.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "gbcommon", - NULL, - gbcommon_decmap + gbcommon_encmap, + NULL }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_gbkext.c Index: map_gbkext.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gbkext.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gbkext.c 17 May 2003 21:00:59 -0000 1.1 +++ map_gbkext.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_gbkext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_gbkext.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "gbkext", - gbkext_encmap, - NULL + NULL, + gbkext_decmap }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_jisx0208.c Index: map_jisx0208.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisx0208.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_jisx0208.c 17 May 2003 21:00:59 -0000 1.1 +++ map_jisx0208.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_jisx0208.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_jisx0208.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "jisx0208", - jisx0208_encmap, - NULL + NULL, + jisx0208_decmap }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_jisx0212.c Index: map_jisx0212.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisx0212.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_jisx0212.c 17 May 2003 21:00:59 -0000 1.1 +++ map_jisx0212.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_jisx0212.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_jisx0212.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "jisx0212", - jisx0212_encmap, - NULL + NULL, + jisx0212_decmap }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_jisxcommon.c Index: map_jisxcommon.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisxcommon.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_jisxcommon.c 17 May 2003 21:00:59 -0000 1.1 +++ map_jisxcommon.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_jisxcommon.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_jisxcommon.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "jisxcommon", - NULL, - jisxcommon_decmap + jisxcommon_encmap, + NULL }; static struct PyMethodDef __methods[] = { 1.2 +3 -3 cjkcodecs/src/maps/map_ksx1001.c Index: map_ksx1001.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_ksx1001.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_ksx1001.c 17 May 2003 21:00:59 -0000 1.1 +++ map_ksx1001.c 17 May 2003 21:16:02 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_ksx1001.c,v 1.1 2003/05/17 21:00:59 perky Exp $ + * $Id: map_ksx1001.c,v 1.2 2003/05/17 21:16:02 perky Exp $ */ #include "Python.h" @@ -37,8 +37,8 @@ static struct dbcs_map __map_entry = { "ksx1001", - ksx1001_encmap, - NULL + NULL, + ksx1001_decmap }; static struct PyMethodDef __methods[] = { |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:13:54
|
perky 03/05/17 14:13:53 Modified: src/maps Makefile Log: cp932ext not cp932 Revision Changes Path 1.2 +2 -2 cjkcodecs/src/maps/Makefile Index: Makefile =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Makefile 17 May 2003 21:00:59 -0000 1.1 +++ Makefile 17 May 2003 21:13:53 -0000 1.2 @@ -25,10 +25,10 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: Makefile,v 1.1 2003/05/17 21:00:59 perky Exp $ +# $Id: Makefile,v 1.2 2003/05/17 21:13:53 perky Exp $ # -CHARSETS_BOTH= cp932 gb18030ext big5 cp950ext +CHARSETS_BOTH= cp932ext gb18030ext big5 cp950ext CHARSETS_ENC= jisxcommon gbcommon cp949 CHARSETS_DEC= jisx0212 jisx0208 gbkext gb2312 cp949ext \ ksx1001 |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:13:18
|
perky 03/05/17 14:13:13 Added: src/maps map_cp932ext.c Removed: src/maps map_cp932.c Log: Rename cp932 -> cp932ext Revision Changes Path 1.1 cjkcodecs/src/maps/map_cp932ext.c Index: map_cp932ext.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_cp932ext.c: CP932EXT Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_cp932ext.c,v 1.1 2003/05/17 21:13:13 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_cp932ext.h" static struct dbcs_map __map_entry = { "cp932ext", cp932ext_encmap, cp932ext_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_cp932ext(void) { PyObject *m; m = Py_InitModule("map_cp932ext", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_cp932ext module"); } /* * ex: ts=8 sts=4 et */ |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 21:01:48
|
perky 03/05/17 14:01:48 Modified: src cjkcommon.h Removed: src Makefile map_cp932.c map_cp949.c map_gb18030.c map_gb2312.c map_gbk.c map_jisx0208.c map_jisx0212.c map_ksx1001.c Log: Remove map holders and Add unim_index for new holders Revision Changes Path 1.6 +7 -2 cjkcodecs/src/cjkcommon.h Index: cjkcommon.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/cjkcommon.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- cjkcommon.h 16 May 2003 12:06:31 -0000 1.5 +++ cjkcommon.h 17 May 2003 21:01:48 -0000 1.6 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: cjkcommon.h,v 1.5 2003/05/16 12:06:31 perky Exp $ + * $Id: cjkcommon.h,v 1.6 2003/05/17 21:01:48 perky Exp $ */ #ifndef _CJKCOMMON_H_ @@ -42,9 +42,14 @@ unsigned char bottom, top; }; +struct unim_index { + const DBCHAR *map; + unsigned char bottom, top; +}; + struct dbcs_map { const char *charset; - DBCHAR **encmap; + const struct unim_index *encmap; const struct dbcs_index *decmap; }; |
perky 03/05/17 14:01:00 Added: src/maps Makefile generic.c.in map_big5.c map_cp932.c map_cp949.c map_cp949ext.c map_cp950ext.c map_gb18030ext.c map_gb2312.c map_gbcommon.c map_gbkext.c map_jisx0208.c map_jisx0212.c map_jisxcommon.c map_ksx1001.c Log: Add map holders Revision Changes Path 1.1 cjkcodecs/src/maps/Makefile Index: Makefile =================================================================== # Makefile: maintenance tool set # # Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # $Id: Makefile,v 1.1 2003/05/17 21:00:59 perky Exp $ # CHARSETS_BOTH= cp932 gb18030ext big5 cp950ext CHARSETS_ENC= jisxcommon gbcommon cp949 CHARSETS_DEC= jisx0212 jisx0208 gbkext gb2312 cp949ext \ ksx1001 TEMPLATE_TRS= -e "s/%%CHARSET%%/$$CSET/g" \ -e "s/%%charset%%/$$cset/g" \ -e "s/%%__%%/ACHTUNG: This is generated file automatically.\ Please do not edit./g" all: maps: for cset in ${CHARSETS_BOTH}; do \ CSET=`echo $$cset|tr "[:lower:]" "[:upper:]"`; \ sed ${TEMPLATE_TRS} generic.c.in > map_$$cset.c; \ done for cset in ${CHARSETS_ENC}; do \ CSET=`echo $$cset|tr "[:lower:]" "[:upper:]"`; \ sed -e 's/%%charset%%_encmap/NULL/g' \ ${TEMPLATE_TRS} generic.c.in > map_$$cset.c; \ done for cset in ${CHARSETS_DEC}; do \ CSET=`echo $$cset|tr "[:lower:]" "[:upper:]"`; \ sed -e 's/%%charset%%_decmap/NULL/g' \ ${TEMPLATE_TRS} generic.c.in > map_$$cset.c; \ done 1.1 cjkcodecs/src/maps/generic.c.in Index: generic.c.in =================================================================== /* * %%__%% * * map_%%charset%%.c: %%CHARSET%% Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: generic.c.in,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_%%charset%%.h" static struct dbcs_map __map_entry = { "%%charset%%", %%charset%%_encmap, %%charset%%_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_%%charset%%(void) { PyObject *m; m = Py_InitModule("map_%%charset%%", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_%%charset%% module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_big5.c Index: map_big5.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_big5.c: BIG5 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_big5.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_big5.h" static struct dbcs_map __map_entry = { "big5", big5_encmap, big5_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_big5(void) { PyObject *m; m = Py_InitModule("map_big5", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_big5 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_cp932.c Index: map_cp932.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_cp932.c: CP932 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_cp932.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_cp932.h" static struct dbcs_map __map_entry = { "cp932", cp932_encmap, cp932_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_cp932(void) { PyObject *m; m = Py_InitModule("map_cp932", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_cp932 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_cp949.c Index: map_cp949.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_cp949.c: CP949 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_cp949.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_cp949.h" static struct dbcs_map __map_entry = { "cp949", NULL, cp949_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_cp949(void) { PyObject *m; m = Py_InitModule("map_cp949", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_cp949 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_cp949ext.c Index: map_cp949ext.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_cp949ext.c: CP949EXT Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_cp949ext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_cp949ext.h" static struct dbcs_map __map_entry = { "cp949ext", cp949ext_encmap, NULL }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_cp949ext(void) { PyObject *m; m = Py_InitModule("map_cp949ext", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_cp949ext module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_cp950ext.c Index: map_cp950ext.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_cp950ext.c: CP950EXT Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_cp950ext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_cp950ext.h" static struct dbcs_map __map_entry = { "cp950ext", cp950ext_encmap, cp950ext_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_cp950ext(void) { PyObject *m; m = Py_InitModule("map_cp950ext", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_cp950ext module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_gb18030ext.c Index: map_gb18030ext.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_gb18030ext.c: GB18030EXT Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_gb18030ext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_gb18030ext.h" static struct dbcs_map __map_entry = { "gb18030ext", gb18030ext_encmap, gb18030ext_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_gb18030ext(void) { PyObject *m; m = Py_InitModule("map_gb18030ext", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_gb18030ext module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_gb2312.c Index: map_gb2312.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_gb2312.c: GB2312 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_gb2312.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_gb2312.h" static struct dbcs_map __map_entry = { "gb2312", gb2312_encmap, NULL }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_gb2312(void) { PyObject *m; m = Py_InitModule("map_gb2312", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_gb2312 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_gbcommon.c Index: map_gbcommon.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_gbcommon.c: GBCOMMON Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_gbcommon.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_gbcommon.h" static struct dbcs_map __map_entry = { "gbcommon", NULL, gbcommon_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_gbcommon(void) { PyObject *m; m = Py_InitModule("map_gbcommon", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_gbcommon module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_gbkext.c Index: map_gbkext.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_gbkext.c: GBKEXT Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_gbkext.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_gbkext.h" static struct dbcs_map __map_entry = { "gbkext", gbkext_encmap, NULL }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_gbkext(void) { PyObject *m; m = Py_InitModule("map_gbkext", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_gbkext module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_jisx0208.c Index: map_jisx0208.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_jisx0208.c: JISX0208 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_jisx0208.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_jisx0208.h" static struct dbcs_map __map_entry = { "jisx0208", jisx0208_encmap, NULL }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_jisx0208(void) { PyObject *m; m = Py_InitModule("map_jisx0208", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_jisx0208 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_jisx0212.c Index: map_jisx0212.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_jisx0212.c: JISX0212 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_jisx0212.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_jisx0212.h" static struct dbcs_map __map_entry = { "jisx0212", jisx0212_encmap, NULL }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_jisx0212(void) { PyObject *m; m = Py_InitModule("map_jisx0212", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_jisx0212 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_jisxcommon.c Index: map_jisxcommon.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_jisxcommon.c: JISXCOMMON Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_jisxcommon.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_jisxcommon.h" static struct dbcs_map __map_entry = { "jisxcommon", NULL, jisxcommon_decmap }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_jisxcommon(void) { PyObject *m; m = Py_InitModule("map_jisxcommon", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_jisxcommon module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/maps/map_ksx1001.c Index: map_ksx1001.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_ksx1001.c: KSX1001 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_ksx1001.c,v 1.1 2003/05/17 21:00:59 perky Exp $ */ #include "Python.h" #include "../cjkcommon.h" #include "map_ksx1001.h" static struct dbcs_map __map_entry = { "ksx1001", ksx1001_encmap, NULL }; static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_ksx1001(void) { PyObject *m; m = Py_InitModule("map_ksx1001", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred()) Py_FatalError("can't initialize the map_ksx1001 module"); } /* * ex: ts=8 sts=4 et */ |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 20:36:15
|
perky 03/05/17 13:36:12 Modified: src/maps map_cp932ext.h map_cp949.h map_cp949ext.h map_gb18030ext.h map_gb18030uni.h map_gb2312.h map_gbcommon.h map_gbkext.h map_jisx0208.h map_jisx0212.h map_jisxcommon.h map_ksx1001.h Added: src/maps map_big5.h map_cp950ext.h tweak_gbk.h Log: Add Simplified Chinese maps and Fix gbk errors. Revision Changes Path 1.2 +0 -0 cjkcodecs/src/maps/map_cp932ext.h Index: map_cp932ext.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp932ext.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp932ext.h 17 May 2003 20:02:49 -0000 1.1 +++ map_cp932ext.h 17 May 2003 20:36:10 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_cp932ext.h,v 1.1 2003/05/17 20:02:49 perky Exp $ + * $Id: map_cp932ext.h,v 1.2 2003/05/17 20:36:10 perky Exp $ */ static const Py_UNICODE __cp932ext_decmap[969] = { 1.2 +0 -0 cjkcodecs/src/maps/map_cp949.h Index: map_cp949.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp949.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp949.h 17 May 2003 20:02:49 -0000 1.1 +++ map_cp949.h 17 May 2003 20:36:10 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_cp949.h,v 1.1 2003/05/17 20:02:49 perky Exp $ + * $Id: map_cp949.h,v 1.2 2003/05/17 20:36:10 perky Exp $ */ static const Py_UNICODE __cp949_encmap[33133] = { 1.2 +0 -0 cjkcodecs/src/maps/map_cp949ext.h Index: map_cp949ext.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_cp949ext.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp949ext.h 17 May 2003 20:02:50 -0000 1.1 +++ map_cp949ext.h 17 May 2003 20:36:10 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_cp949ext.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_cp949ext.h,v 1.2 2003/05/17 20:36:10 perky Exp $ */ static const Py_UNICODE __cp949ext_decmap[9650] = { 1.2 +57 -57 cjkcodecs/src/maps/map_gb18030ext.h Index: map_gb18030ext.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gb18030ext.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gb18030ext.h 17 May 2003 20:02:50 -0000 1.1 +++ map_gb18030ext.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,8 +1,8 @@ /* - * $Id: map_gb18030ext.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_gb18030ext.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ -static const Py_UNICODE __gb18030_decmap[2729] = { +static const Py_UNICODE __gb18030ext_decmap[2729] = { 0xe4c6, 0xe4c7, 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf, 0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7, 0xe4d8, 0xe4d9, 0xe4da, 0xe4db, 0xe4dc, 0xe4dd, @@ -347,7 +347,7 @@ 0xe4c5, }; -static const struct dbcs_index gb18030_decmap[256] = { +static const struct dbcs_index gb18030ext_decmap[256] = { /* 0x00 */ {0, 0, 0}, /* 0x01 */ {0, 0, 0}, /* 0x02 */ {0, 0, 0}, @@ -509,21 +509,21 @@ /* 0x9E */ {0, 0, 0}, /* 0x9F */ {0, 0, 0}, /* 0xA0 */ {0, 0, 0}, -/* 0xA1 */ {__gb18030_decmap+0, 0x40, 0xa0}, -/* 0xA2 */ {__gb18030_decmap+97, 0x40, 0xfe}, -/* 0xA3 */ {__gb18030_decmap+288, 0x40, 0xa0}, -/* 0xA4 */ {__gb18030_decmap+385, 0x40, 0xfe}, -/* 0xA5 */ {__gb18030_decmap+576, 0x40, 0xfe}, -/* 0xA6 */ {__gb18030_decmap+767, 0x40, 0xfe}, -/* 0xA7 */ {__gb18030_decmap+958, 0x40, 0xfe}, -/* 0xA8 */ {__gb18030_decmap+1149, 0x96, 0xfe}, -/* 0xA9 */ {__gb18030_decmap+1254, 0x58, 0xfe}, -/* 0xAA */ {__gb18030_decmap+1421, 0xa1, 0xfe}, -/* 0xAB */ {__gb18030_decmap+1515, 0xa1, 0xfe}, -/* 0xAC */ {__gb18030_decmap+1609, 0xa1, 0xfe}, -/* 0xAD */ {__gb18030_decmap+1703, 0xa1, 0xfe}, -/* 0xAE */ {__gb18030_decmap+1797, 0xa1, 0xfe}, -/* 0xAF */ {__gb18030_decmap+1891, 0xa1, 0xfe}, +/* 0xA1 */ {__gb18030ext_decmap+0, 0x40, 0xa0}, +/* 0xA2 */ {__gb18030ext_decmap+97, 0x40, 0xfe}, +/* 0xA3 */ {__gb18030ext_decmap+288, 0x40, 0xa0}, +/* 0xA4 */ {__gb18030ext_decmap+385, 0x40, 0xfe}, +/* 0xA5 */ {__gb18030ext_decmap+576, 0x40, 0xfe}, +/* 0xA6 */ {__gb18030ext_decmap+767, 0x40, 0xfe}, +/* 0xA7 */ {__gb18030ext_decmap+958, 0x40, 0xfe}, +/* 0xA8 */ {__gb18030ext_decmap+1149, 0x96, 0xfe}, +/* 0xA9 */ {__gb18030ext_decmap+1254, 0x58, 0xfe}, +/* 0xAA */ {__gb18030ext_decmap+1421, 0xa1, 0xfe}, +/* 0xAB */ {__gb18030ext_decmap+1515, 0xa1, 0xfe}, +/* 0xAC */ {__gb18030ext_decmap+1609, 0xa1, 0xfe}, +/* 0xAD */ {__gb18030ext_decmap+1703, 0xa1, 0xfe}, +/* 0xAE */ {__gb18030ext_decmap+1797, 0xa1, 0xfe}, +/* 0xAF */ {__gb18030ext_decmap+1891, 0xa1, 0xfe}, /* 0xB0 */ {0, 0, 0}, /* 0xB1 */ {0, 0, 0}, /* 0xB2 */ {0, 0, 0}, @@ -563,7 +563,7 @@ /* 0xD4 */ {0, 0, 0}, /* 0xD5 */ {0, 0, 0}, /* 0xD6 */ {0, 0, 0}, -/* 0xD7 */ {__gb18030_decmap+1985, 0xfa, 0xfe}, +/* 0xD7 */ {__gb18030ext_decmap+1985, 0xfa, 0xfe}, /* 0xD8 */ {0, 0, 0}, /* 0xD9 */ {0, 0, 0}, /* 0xDA */ {0, 0, 0}, @@ -596,17 +596,17 @@ /* 0xF5 */ {0, 0, 0}, /* 0xF6 */ {0, 0, 0}, /* 0xF7 */ {0, 0, 0}, -/* 0xF8 */ {__gb18030_decmap+1990, 0xa1, 0xfe}, -/* 0xF9 */ {__gb18030_decmap+2084, 0xa1, 0xfe}, -/* 0xFA */ {__gb18030_decmap+2178, 0xa1, 0xfe}, -/* 0xFB */ {__gb18030_decmap+2272, 0xa1, 0xfe}, -/* 0xFC */ {__gb18030_decmap+2366, 0xa1, 0xfe}, -/* 0xFD */ {__gb18030_decmap+2460, 0xa1, 0xfe}, -/* 0xFE */ {__gb18030_decmap+2554, 0x50, 0xfe}, +/* 0xF8 */ {__gb18030ext_decmap+1990, 0xa1, 0xfe}, +/* 0xF9 */ {__gb18030ext_decmap+2084, 0xa1, 0xfe}, +/* 0xFA */ {__gb18030ext_decmap+2178, 0xa1, 0xfe}, +/* 0xFB */ {__gb18030ext_decmap+2272, 0xa1, 0xfe}, +/* 0xFC */ {__gb18030ext_decmap+2366, 0xa1, 0xfe}, +/* 0xFD */ {__gb18030ext_decmap+2460, 0xa1, 0xfe}, +/* 0xFE */ {__gb18030ext_decmap+2554, 0x50, 0xfe}, /* 0xFF */ {0, 0, 0}, }; -static const Py_UNICODE __gb18030_encmap[3227] = { +static const Py_UNICODE __gb18030ext_encmap[3227] = { 0xa8bf, 0xa2e3, 0xfe50, UNIINV, UNIINV, 0xfe54, UNIINV, UNIINV, UNIINV, 0xfe57, UNIINV, UNIINV, 0xfe58, 0xfe5d, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, @@ -1013,9 +1013,9 @@ UNIINV, UNIINV, 0xfea0, }; -static const struct dbcs_index gb18030_encmap[256] = { +static const struct dbcs_index gb18030ext_encmap[256] = { /* 0x00 */ {0, 0, 0}, -/* 0x01 */ {__gb18030_encmap+0, 0xf9, 0xf9}, +/* 0x01 */ {__gb18030ext_encmap+0, 0xf9, 0xf9}, /* 0x02 */ {0, 0, 0}, /* 0x03 */ {0, 0, 0}, /* 0x04 */ {0, 0, 0}, @@ -1046,7 +1046,7 @@ /* 0x1D */ {0, 0, 0}, /* 0x1E */ {0, 0, 0}, /* 0x1F */ {0, 0, 0}, -/* 0x20 */ {__gb18030_encmap+1, 0xac, 0xac}, +/* 0x20 */ {__gb18030ext_encmap+1, 0xac, 0xac}, /* 0x21 */ {0, 0, 0}, /* 0x22 */ {0, 0, 0}, /* 0x23 */ {0, 0, 0}, @@ -1060,38 +1060,38 @@ /* 0x2B */ {0, 0, 0}, /* 0x2C */ {0, 0, 0}, /* 0x2D */ {0, 0, 0}, -/* 0x2E */ {__gb18030_encmap+2, 0x81, 0xca}, -/* 0x2F */ {__gb18030_encmap+76, 0xf0, 0xfb}, -/* 0x30 */ {__gb18030_encmap+88, 0x3e, 0x3e}, +/* 0x2E */ {__gb18030ext_encmap+2, 0x81, 0xca}, +/* 0x2F */ {__gb18030ext_encmap+76, 0xf0, 0xfb}, +/* 0x30 */ {__gb18030ext_encmap+88, 0x3e, 0x3e}, /* 0x31 */ {0, 0, 0}, /* 0x32 */ {0, 0, 0}, /* 0x33 */ {0, 0, 0}, -/* 0x34 */ {__gb18030_encmap+89, 0x47, 0x73}, -/* 0x35 */ {__gb18030_encmap+134, 0x9e, 0x9e}, -/* 0x36 */ {__gb18030_encmap+135, 0x0e, 0x1a}, +/* 0x34 */ {__gb18030ext_encmap+89, 0x47, 0x73}, +/* 0x35 */ {__gb18030ext_encmap+134, 0x9e, 0x9e}, +/* 0x36 */ {__gb18030ext_encmap+135, 0x0e, 0x1a}, /* 0x37 */ {0, 0, 0}, /* 0x38 */ {0, 0, 0}, -/* 0x39 */ {__gb18030_encmap+148, 0x18, 0xdf}, -/* 0x3A */ {__gb18030_encmap+348, 0x73, 0x73}, -/* 0x3B */ {__gb18030_encmap+349, 0x4e, 0x4e}, -/* 0x3C */ {__gb18030_encmap+350, 0x6e, 0xe0}, +/* 0x39 */ {__gb18030ext_encmap+148, 0x18, 0xdf}, +/* 0x3A */ {__gb18030ext_encmap+348, 0x73, 0x73}, +/* 0x3B */ {__gb18030ext_encmap+349, 0x4e, 0x4e}, +/* 0x3C */ {__gb18030ext_encmap+350, 0x6e, 0xe0}, /* 0x3D */ {0, 0, 0}, /* 0x3E */ {0, 0, 0}, /* 0x3F */ {0, 0, 0}, -/* 0x40 */ {__gb18030_encmap+465, 0x56, 0x56}, -/* 0x41 */ {__gb18030_encmap+466, 0x5f, 0x5f}, +/* 0x40 */ {__gb18030ext_encmap+465, 0x56, 0x56}, +/* 0x41 */ {__gb18030ext_encmap+466, 0x5f, 0x5f}, /* 0x42 */ {0, 0, 0}, -/* 0x43 */ {__gb18030_encmap+467, 0x37, 0xdd}, -/* 0x44 */ {__gb18030_encmap+634, 0xd6, 0xd6}, +/* 0x43 */ {__gb18030ext_encmap+467, 0x37, 0xdd}, +/* 0x44 */ {__gb18030ext_encmap+634, 0xd6, 0xd6}, /* 0x45 */ {0, 0, 0}, -/* 0x46 */ {__gb18030_encmap+635, 0x4c, 0x61}, -/* 0x47 */ {__gb18030_encmap+657, 0x23, 0x8d}, +/* 0x46 */ {__gb18030ext_encmap+635, 0x4c, 0x61}, +/* 0x47 */ {__gb18030ext_encmap+657, 0x23, 0x8d}, /* 0x48 */ {0, 0, 0}, -/* 0x49 */ {__gb18030_encmap+764, 0x47, 0xb7}, +/* 0x49 */ {__gb18030ext_encmap+764, 0x47, 0xb7}, /* 0x4A */ {0, 0, 0}, /* 0x4B */ {0, 0, 0}, -/* 0x4C */ {__gb18030_encmap+877, 0x77, 0xa3}, -/* 0x4D */ {__gb18030_encmap+922, 0x13, 0xae}, +/* 0x4C */ {__gb18030ext_encmap+877, 0x77, 0xa3}, +/* 0x4D */ {__gb18030ext_encmap+922, 0x13, 0xae}, /* 0x4E */ {0, 0, 0}, /* 0x4F */ {0, 0, 0}, /* 0x50 */ {0, 0, 0}, @@ -1238,15 +1238,15 @@ /* 0xDD */ {0, 0, 0}, /* 0xDE */ {0, 0, 0}, /* 0xDF */ {0, 0, 0}, -/* 0xE0 */ {__gb18030_encmap+1078, 0x00, 0xff}, -/* 0xE1 */ {__gb18030_encmap+1334, 0x00, 0xff}, -/* 0xE2 */ {__gb18030_encmap+1590, 0x00, 0xff}, -/* 0xE3 */ {__gb18030_encmap+1846, 0x00, 0xff}, -/* 0xE4 */ {__gb18030_encmap+2102, 0x00, 0xff}, -/* 0xE5 */ {__gb18030_encmap+2358, 0x00, 0xff}, -/* 0xE6 */ {__gb18030_encmap+2614, 0x00, 0xff}, -/* 0xE7 */ {__gb18030_encmap+2870, 0x00, 0xff}, -/* 0xE8 */ {__gb18030_encmap+3126, 0x00, 0x64}, +/* 0xE0 */ {__gb18030ext_encmap+1078, 0x00, 0xff}, +/* 0xE1 */ {__gb18030ext_encmap+1334, 0x00, 0xff}, +/* 0xE2 */ {__gb18030ext_encmap+1590, 0x00, 0xff}, +/* 0xE3 */ {__gb18030ext_encmap+1846, 0x00, 0xff}, +/* 0xE4 */ {__gb18030ext_encmap+2102, 0x00, 0xff}, +/* 0xE5 */ {__gb18030ext_encmap+2358, 0x00, 0xff}, +/* 0xE6 */ {__gb18030ext_encmap+2614, 0x00, 0xff}, +/* 0xE7 */ {__gb18030ext_encmap+2870, 0x00, 0xff}, +/* 0xE8 */ {__gb18030ext_encmap+3126, 0x00, 0x64}, /* 0xE9 */ {0, 0, 0}, /* 0xEA */ {0, 0, 0}, /* 0xEB */ {0, 0, 0}, 1.2 +0 -0 cjkcodecs/src/maps/map_gb18030uni.h Index: map_gb18030uni.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gb18030uni.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gb18030uni.h 17 May 2003 20:02:50 -0000 1.1 +++ map_gb18030uni.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_gb18030uni.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_gb18030uni.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ 1.2 +0 -0 cjkcodecs/src/maps/map_gb2312.h Index: map_gb2312.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gb2312.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gb2312.h 17 May 2003 20:02:50 -0000 1.1 +++ map_gb2312.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_gb2312.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_gb2312.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ static const Py_UNICODE __gb2312_decmap[7482] = { 1.2 +1 -1 cjkcodecs/src/maps/map_gbcommon.h Index: map_gbcommon.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gbcommon.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gbcommon.h 17 May 2003 20:02:50 -0000 1.1 +++ map_gbcommon.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_gbcommon.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_gbcommon.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ static const Py_UNICODE __gbcommon_encmap[23231] = { @@ -76,7 +76,7 @@ 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, UNIINV, 0x2757, - 0xa95c, UNIINV, UNIINV, 0xa843, 0xa1aa, 0xa844, 0x212c, UNIINV, + 0xa95c, UNIINV, UNIINV, 0xa843, 0xa1aa, 0x212a, 0x212c, UNIINV, 0x212e, 0x212f, UNIINV, UNIINV, 0x2130, 0x2131, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xa845, 0x212d, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 1.2 +124 -124 cjkcodecs/src/maps/map_gbkext.h Index: map_gbkext.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_gbkext.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_gbkext.h 17 May 2003 20:02:50 -0000 1.1 +++ map_gbkext.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,8 +1,8 @@ /* - * $Id: map_gbkext.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_gbkext.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ -static const Py_UNICODE __gbk_decmap[14531] = { +static const Py_UNICODE __gbkext_decmap[14531] = { 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f, 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31, 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44, @@ -1822,7 +1822,7 @@ 0xfa27, 0xfa28, 0xfa29, }; -static const struct dbcs_index gbk_decmap[256] = { +static const struct dbcs_index gbkext_decmap[256] = { /* 0x00 */ {0, 0, 0}, /* 0x01 */ {0, 0, 0}, /* 0x02 */ {0, 0, 0}, @@ -1952,132 +1952,132 @@ /* 0x7E */ {0, 0, 0}, /* 0x7F */ {0, 0, 0}, /* 0x80 */ {0, 0, 0}, -/* 0x81 */ {__gbk_decmap+0, 0x40, 0xfe}, -/* 0x82 */ {__gbk_decmap+191, 0x40, 0xfe}, -/* 0x83 */ {__gbk_decmap+382, 0x40, 0xfe}, -/* 0x84 */ {__gbk_decmap+573, 0x40, 0xfe}, -/* 0x85 */ {__gbk_decmap+764, 0x40, 0xfe}, -/* 0x86 */ {__gbk_decmap+955, 0x40, 0xfe}, -/* 0x87 */ {__gbk_decmap+1146, 0x40, 0xfe}, -/* 0x88 */ {__gbk_decmap+1337, 0x40, 0xfe}, -/* 0x89 */ {__gbk_decmap+1528, 0x40, 0xfe}, -/* 0x8A */ {__gbk_decmap+1719, 0x40, 0xfe}, -/* 0x8B */ {__gbk_decmap+1910, 0x40, 0xfe}, -/* 0x8C */ {__gbk_decmap+2101, 0x40, 0xfe}, -/* 0x8D */ {__gbk_decmap+2292, 0x40, 0xfe}, -/* 0x8E */ {__gbk_decmap+2483, 0x40, 0xfe}, -/* 0x8F */ {__gbk_decmap+2674, 0x40, 0xfe}, -/* 0x90 */ {__gbk_decmap+2865, 0x40, 0xfe}, -/* 0x91 */ {__gbk_decmap+3056, 0x40, 0xfe}, -/* 0x92 */ {__gbk_decmap+3247, 0x40, 0xfe}, -/* 0x93 */ {__gbk_decmap+3438, 0x40, 0xfe}, -/* 0x94 */ {__gbk_decmap+3629, 0x40, 0xfe}, -/* 0x95 */ {__gbk_decmap+3820, 0x40, 0xfe}, -/* 0x96 */ {__gbk_decmap+4011, 0x40, 0xfe}, -/* 0x97 */ {__gbk_decmap+4202, 0x40, 0xfe}, -/* 0x98 */ {__gbk_decmap+4393, 0x40, 0xfe}, -/* 0x99 */ {__gbk_decmap+4584, 0x40, 0xfe}, -/* 0x9A */ {__gbk_decmap+4775, 0x40, 0xfe}, -/* 0x9B */ {__gbk_decmap+4966, 0x40, 0xfe}, -/* 0x9C */ {__gbk_decmap+5157, 0x40, 0xfe}, -/* 0x9D */ {__gbk_decmap+5348, 0x40, 0xfe}, -/* 0x9E */ {__gbk_decmap+5539, 0x40, 0xfe}, -/* 0x9F */ {__gbk_decmap+5730, 0x40, 0xfe}, -/* 0xA0 */ {__gbk_decmap+5921, 0x40, 0xfe}, -/* 0xA1 */ {__gbk_decmap+6112, 0xa4, 0xaa}, -/* 0xA2 */ {__gbk_decmap+6119, 0xa1, 0xaa}, +/* 0x81 */ {__gbkext_decmap+0, 0x40, 0xfe}, +/* 0x82 */ {__gbkext_decmap+191, 0x40, 0xfe}, +/* 0x83 */ {__gbkext_decmap+382, 0x40, 0xfe}, +/* 0x84 */ {__gbkext_decmap+573, 0x40, 0xfe}, +/* 0x85 */ {__gbkext_decmap+764, 0x40, 0xfe}, +/* 0x86 */ {__gbkext_decmap+955, 0x40, 0xfe}, +/* 0x87 */ {__gbkext_decmap+1146, 0x40, 0xfe}, +/* 0x88 */ {__gbkext_decmap+1337, 0x40, 0xfe}, +/* 0x89 */ {__gbkext_decmap+1528, 0x40, 0xfe}, +/* 0x8A */ {__gbkext_decmap+1719, 0x40, 0xfe}, +/* 0x8B */ {__gbkext_decmap+1910, 0x40, 0xfe}, +/* 0x8C */ {__gbkext_decmap+2101, 0x40, 0xfe}, +/* 0x8D */ {__gbkext_decmap+2292, 0x40, 0xfe}, +/* 0x8E */ {__gbkext_decmap+2483, 0x40, 0xfe}, +/* 0x8F */ {__gbkext_decmap+2674, 0x40, 0xfe}, +/* 0x90 */ {__gbkext_decmap+2865, 0x40, 0xfe}, +/* 0x91 */ {__gbkext_decmap+3056, 0x40, 0xfe}, +/* 0x92 */ {__gbkext_decmap+3247, 0x40, 0xfe}, +/* 0x93 */ {__gbkext_decmap+3438, 0x40, 0xfe}, +/* 0x94 */ {__gbkext_decmap+3629, 0x40, 0xfe}, +/* 0x95 */ {__gbkext_decmap+3820, 0x40, 0xfe}, +/* 0x96 */ {__gbkext_decmap+4011, 0x40, 0xfe}, +/* 0x97 */ {__gbkext_decmap+4202, 0x40, 0xfe}, +/* 0x98 */ {__gbkext_decmap+4393, 0x40, 0xfe}, +/* 0x99 */ {__gbkext_decmap+4584, 0x40, 0xfe}, +/* 0x9A */ {__gbkext_decmap+4775, 0x40, 0xfe}, +/* 0x9B */ {__gbkext_decmap+4966, 0x40, 0xfe}, +/* 0x9C */ {__gbkext_decmap+5157, 0x40, 0xfe}, +/* 0x9D */ {__gbkext_decmap+5348, 0x40, 0xfe}, +/* 0x9E */ {__gbkext_decmap+5539, 0x40, 0xfe}, +/* 0x9F */ {__gbkext_decmap+5730, 0x40, 0xfe}, +/* 0xA0 */ {__gbkext_decmap+5921, 0x40, 0xfe}, +/* 0xA1 */ {__gbkext_decmap+6112, 0xa4, 0xaa}, +/* 0xA2 */ {__gbkext_decmap+6119, 0xa1, 0xaa}, /* 0xA3 */ {0, 0, 0}, /* 0xA4 */ {0, 0, 0}, /* 0xA5 */ {0, 0, 0}, -/* 0xA6 */ {__gbk_decmap+6129, 0xe0, 0xf5}, +/* 0xA6 */ {__gbkext_decmap+6129, 0xe0, 0xf5}, /* 0xA7 */ {0, 0, 0}, -/* 0xA8 */ {__gbk_decmap+6151, 0x40, 0xc0}, -/* 0xA9 */ {__gbk_decmap+6280, 0x40, 0x96}, -/* 0xAA */ {__gbk_decmap+6367, 0x40, 0xa0}, -/* 0xAB */ {__gbk_decmap+6464, 0x40, 0xa0}, -/* 0xAC */ {__gbk_decmap+6561, 0x40, 0xa0}, -/* 0xAD */ {__gbk_decmap+6658, 0x40, 0xa0}, -/* 0xAE */ {__gbk_decmap+6755, 0x40, 0xa0}, -/* 0xAF */ {__gbk_decmap+6852, 0x40, 0xa0}, -/* 0xB0 */ {__gbk_decmap+6949, 0x40, 0xa0}, -/* 0xB1 */ {__gbk_decmap+7046, 0x40, 0xa0}, -/* 0xB2 */ {__gbk_decmap+7143, 0x40, 0xa0}, -/* 0xB3 */ {__gbk_decmap+7240, 0x40, 0xa0}, -/* 0xB4 */ {__gbk_decmap+7337, 0x40, 0xa0}, -/* 0xB5 */ {__gbk_decmap+7434, 0x40, 0xa0}, -/* 0xB6 */ {__gbk_decmap+7531, 0x40, 0xa0}, -/* 0xB7 */ {__gbk_decmap+7628, 0x40, 0xa0}, -/* 0xB8 */ {__gbk_decmap+7725, 0x40, 0xa0}, -/* 0xB9 */ {__gbk_decmap+7822, 0x40, 0xa0}, -/* 0xBA */ {__gbk_decmap+7919, 0x40, 0xa0}, -/* 0xBB */ {__gbk_decmap+8016, 0x40, 0xa0}, -/* 0xBC */ {__gbk_decmap+8113, 0x40, 0xa0}, -/* 0xBD */ {__gbk_decmap+8210, 0x40, 0xa0}, -/* 0xBE */ {__gbk_decmap+8307, 0x40, 0xa0}, -/* 0xBF */ {__gbk_decmap+8404, 0x40, 0xa0}, -/* 0xC0 */ {__gbk_decmap+8501, 0x40, 0xa0}, -/* 0xC1 */ {__gbk_decmap+8598, 0x40, 0xa0}, -/* 0xC2 */ {__gbk_decmap+8695, 0x40, 0xa0}, -/* 0xC3 */ {__gbk_decmap+8792, 0x40, 0xa0}, -/* 0xC4 */ {__gbk_decmap+8889, 0x40, 0xa0}, -/* 0xC5 */ {__gbk_decmap+8986, 0x40, 0xa0}, -/* 0xC6 */ {__gbk_decmap+9083, 0x40, 0xa0}, -/* 0xC7 */ {__gbk_decmap+9180, 0x40, 0xa0}, -/* 0xC8 */ {__gbk_decmap+9277, 0x40, 0xa0}, -/* 0xC9 */ {__gbk_decmap+9374, 0x40, 0xa0}, -/* 0xCA */ {__gbk_decmap+9471, 0x40, 0xa0}, -/* 0xCB */ {__gbk_decmap+9568, 0x40, 0xa0}, -/* 0xCC */ {__gbk_decmap+9665, 0x40, 0xa0}, -/* 0xCD */ {__gbk_decmap+9762, 0x40, 0xa0}, -/* 0xCE */ {__gbk_decmap+9859, 0x40, 0xa0}, -/* 0xCF */ {__gbk_decmap+9956, 0x40, 0xa0}, -/* 0xD0 */ {__gbk_decmap+10053, 0x40, 0xa0}, -/* 0xD1 */ {__gbk_decmap+10150, 0x40, 0xa0}, -/* 0xD2 */ {__gbk_decmap+10247, 0x40, 0xa0}, -/* 0xD3 */ {__gbk_decmap+10344, 0x40, 0xa0}, -/* 0xD4 */ {__gbk_decmap+10441, 0x40, 0xa0}, -/* 0xD5 */ {__gbk_decmap+10538, 0x40, 0xa0}, -/* 0xD6 */ {__gbk_decmap+10635, 0x40, 0xa0}, -/* 0xD7 */ {__gbk_decmap+10732, 0x40, 0xa0}, -/* 0xD8 */ {__gbk_decmap+10829, 0x40, 0xa0}, -/* 0xD9 */ {__gbk_decmap+10926, 0x40, 0xa0}, -/* 0xDA */ {__gbk_decmap+11023, 0x40, 0xa0}, -/* 0xDB */ {__gbk_decmap+11120, 0x40, 0xa0}, -/* 0xDC */ {__gbk_decmap+11217, 0x40, 0xa0}, -/* 0xDD */ {__gbk_decmap+11314, 0x40, 0xa0}, -/* 0xDE */ {__gbk_decmap+11411, 0x40, 0xa0}, -/* 0xDF */ {__gbk_decmap+11508, 0x40, 0xa0}, -/* 0xE0 */ {__gbk_decmap+11605, 0x40, 0xa0}, -/* 0xE1 */ {__gbk_decmap+11702, 0x40, 0xa0}, -/* 0xE2 */ {__gbk_decmap+11799, 0x40, 0xa0}, -/* 0xE3 */ {__gbk_decmap+11896, 0x40, 0xa0}, -/* 0xE4 */ {__gbk_decmap+11993, 0x40, 0xa0}, -/* 0xE5 */ {__gbk_decmap+12090, 0x40, 0xa0}, -/* 0xE6 */ {__gbk_decmap+12187, 0x40, 0xa0}, -/* 0xE7 */ {__gbk_decmap+12284, 0x40, 0xa0}, -/* 0xE8 */ {__gbk_decmap+12381, 0x40, 0xa0}, -/* 0xE9 */ {__gbk_decmap+12478, 0x40, 0xa0}, -/* 0xEA */ {__gbk_decmap+12575, 0x40, 0xa0}, -/* 0xEB */ {__gbk_decmap+12672, 0x40, 0xa0}, -/* 0xEC */ {__gbk_decmap+12769, 0x40, 0xa0}, -/* 0xED */ {__gbk_decmap+12866, 0x40, 0xa0}, -/* 0xEE */ {__gbk_decmap+12963, 0x40, 0xa0}, -/* 0xEF */ {__gbk_decmap+13060, 0x40, 0xa0}, -/* 0xF0 */ {__gbk_decmap+13157, 0x40, 0xa0}, -/* 0xF1 */ {__gbk_decmap+13254, 0x40, 0xa0}, -/* 0xF2 */ {__gbk_decmap+13351, 0x40, 0xa0}, -/* 0xF3 */ {__gbk_decmap+13448, 0x40, 0xa0}, -/* 0xF4 */ {__gbk_decmap+13545, 0x40, 0xa0}, -/* 0xF5 */ {__gbk_decmap+13642, 0x40, 0xa0}, -/* 0xF6 */ {__gbk_decmap+13739, 0x40, 0xa0}, -/* 0xF7 */ {__gbk_decmap+13836, 0x40, 0xa0}, -/* 0xF8 */ {__gbk_decmap+13933, 0x40, 0xa0}, -/* 0xF9 */ {__gbk_decmap+14030, 0x40, 0xa0}, -/* 0xFA */ {__gbk_decmap+14127, 0x40, 0xa0}, -/* 0xFB */ {__gbk_decmap+14224, 0x40, 0xa0}, -/* 0xFC */ {__gbk_decmap+14321, 0x40, 0xa0}, -/* 0xFD */ {__gbk_decmap+14418, 0x40, 0xa0}, -/* 0xFE */ {__gbk_decmap+14515, 0x40, 0x4f}, +/* 0xA8 */ {__gbkext_decmap+6151, 0x40, 0xc0}, +/* 0xA9 */ {__gbkext_decmap+6280, 0x40, 0x96}, +/* 0xAA */ {__gbkext_decmap+6367, 0x40, 0xa0}, +/* 0xAB */ {__gbkext_decmap+6464, 0x40, 0xa0}, +/* 0xAC */ {__gbkext_decmap+6561, 0x40, 0xa0}, +/* 0xAD */ {__gbkext_decmap+6658, 0x40, 0xa0}, +/* 0xAE */ {__gbkext_decmap+6755, 0x40, 0xa0}, +/* 0xAF */ {__gbkext_decmap+6852, 0x40, 0xa0}, +/* 0xB0 */ {__gbkext_decmap+6949, 0x40, 0xa0}, +/* 0xB1 */ {__gbkext_decmap+7046, 0x40, 0xa0}, +/* 0xB2 */ {__gbkext_decmap+7143, 0x40, 0xa0}, +/* 0xB3 */ {__gbkext_decmap+7240, 0x40, 0xa0}, +/* 0xB4 */ {__gbkext_decmap+7337, 0x40, 0xa0}, +/* 0xB5 */ {__gbkext_decmap+7434, 0x40, 0xa0}, +/* 0xB6 */ {__gbkext_decmap+7531, 0x40, 0xa0}, +/* 0xB7 */ {__gbkext_decmap+7628, 0x40, 0xa0}, +/* 0xB8 */ {__gbkext_decmap+7725, 0x40, 0xa0}, +/* 0xB9 */ {__gbkext_decmap+7822, 0x40, 0xa0}, +/* 0xBA */ {__gbkext_decmap+7919, 0x40, 0xa0}, +/* 0xBB */ {__gbkext_decmap+8016, 0x40, 0xa0}, +/* 0xBC */ {__gbkext_decmap+8113, 0x40, 0xa0}, +/* 0xBD */ {__gbkext_decmap+8210, 0x40, 0xa0}, +/* 0xBE */ {__gbkext_decmap+8307, 0x40, 0xa0}, +/* 0xBF */ {__gbkext_decmap+8404, 0x40, 0xa0}, +/* 0xC0 */ {__gbkext_decmap+8501, 0x40, 0xa0}, +/* 0xC1 */ {__gbkext_decmap+8598, 0x40, 0xa0}, +/* 0xC2 */ {__gbkext_decmap+8695, 0x40, 0xa0}, +/* 0xC3 */ {__gbkext_decmap+8792, 0x40, 0xa0}, +/* 0xC4 */ {__gbkext_decmap+8889, 0x40, 0xa0}, +/* 0xC5 */ {__gbkext_decmap+8986, 0x40, 0xa0}, +/* 0xC6 */ {__gbkext_decmap+9083, 0x40, 0xa0}, +/* 0xC7 */ {__gbkext_decmap+9180, 0x40, 0xa0}, +/* 0xC8 */ {__gbkext_decmap+9277, 0x40, 0xa0}, +/* 0xC9 */ {__gbkext_decmap+9374, 0x40, 0xa0}, +/* 0xCA */ {__gbkext_decmap+9471, 0x40, 0xa0}, +/* 0xCB */ {__gbkext_decmap+9568, 0x40, 0xa0}, +/* 0xCC */ {__gbkext_decmap+9665, 0x40, 0xa0}, +/* 0xCD */ {__gbkext_decmap+9762, 0x40, 0xa0}, +/* 0xCE */ {__gbkext_decmap+9859, 0x40, 0xa0}, +/* 0xCF */ {__gbkext_decmap+9956, 0x40, 0xa0}, +/* 0xD0 */ {__gbkext_decmap+10053, 0x40, 0xa0}, +/* 0xD1 */ {__gbkext_decmap+10150, 0x40, 0xa0}, +/* 0xD2 */ {__gbkext_decmap+10247, 0x40, 0xa0}, +/* 0xD3 */ {__gbkext_decmap+10344, 0x40, 0xa0}, +/* 0xD4 */ {__gbkext_decmap+10441, 0x40, 0xa0}, +/* 0xD5 */ {__gbkext_decmap+10538, 0x40, 0xa0}, +/* 0xD6 */ {__gbkext_decmap+10635, 0x40, 0xa0}, +/* 0xD7 */ {__gbkext_decmap+10732, 0x40, 0xa0}, +/* 0xD8 */ {__gbkext_decmap+10829, 0x40, 0xa0}, +/* 0xD9 */ {__gbkext_decmap+10926, 0x40, 0xa0}, +/* 0xDA */ {__gbkext_decmap+11023, 0x40, 0xa0}, +/* 0xDB */ {__gbkext_decmap+11120, 0x40, 0xa0}, +/* 0xDC */ {__gbkext_decmap+11217, 0x40, 0xa0}, +/* 0xDD */ {__gbkext_decmap+11314, 0x40, 0xa0}, +/* 0xDE */ {__gbkext_decmap+11411, 0x40, 0xa0}, +/* 0xDF */ {__gbkext_decmap+11508, 0x40, 0xa0}, +/* 0xE0 */ {__gbkext_decmap+11605, 0x40, 0xa0}, +/* 0xE1 */ {__gbkext_decmap+11702, 0x40, 0xa0}, +/* 0xE2 */ {__gbkext_decmap+11799, 0x40, 0xa0}, +/* 0xE3 */ {__gbkext_decmap+11896, 0x40, 0xa0}, +/* 0xE4 */ {__gbkext_decmap+11993, 0x40, 0xa0}, +/* 0xE5 */ {__gbkext_decmap+12090, 0x40, 0xa0}, +/* 0xE6 */ {__gbkext_decmap+12187, 0x40, 0xa0}, +/* 0xE7 */ {__gbkext_decmap+12284, 0x40, 0xa0}, +/* 0xE8 */ {__gbkext_decmap+12381, 0x40, 0xa0}, +/* 0xE9 */ {__gbkext_decmap+12478, 0x40, 0xa0}, +/* 0xEA */ {__gbkext_decmap+12575, 0x40, 0xa0}, +/* 0xEB */ {__gbkext_decmap+12672, 0x40, 0xa0}, +/* 0xEC */ {__gbkext_decmap+12769, 0x40, 0xa0}, +/* 0xED */ {__gbkext_decmap+12866, 0x40, 0xa0}, +/* 0xEE */ {__gbkext_decmap+12963, 0x40, 0xa0}, +/* 0xEF */ {__gbkext_decmap+13060, 0x40, 0xa0}, +/* 0xF0 */ {__gbkext_decmap+13157, 0x40, 0xa0}, +/* 0xF1 */ {__gbkext_decmap+13254, 0x40, 0xa0}, +/* 0xF2 */ {__gbkext_decmap+13351, 0x40, 0xa0}, +/* 0xF3 */ {__gbkext_decmap+13448, 0x40, 0xa0}, +/* 0xF4 */ {__gbkext_decmap+13545, 0x40, 0xa0}, +/* 0xF5 */ {__gbkext_decmap+13642, 0x40, 0xa0}, +/* 0xF6 */ {__gbkext_decmap+13739, 0x40, 0xa0}, +/* 0xF7 */ {__gbkext_decmap+13836, 0x40, 0xa0}, +/* 0xF8 */ {__gbkext_decmap+13933, 0x40, 0xa0}, +/* 0xF9 */ {__gbkext_decmap+14030, 0x40, 0xa0}, +/* 0xFA */ {__gbkext_decmap+14127, 0x40, 0xa0}, +/* 0xFB */ {__gbkext_decmap+14224, 0x40, 0xa0}, +/* 0xFC */ {__gbkext_decmap+14321, 0x40, 0xa0}, +/* 0xFD */ {__gbkext_decmap+14418, 0x40, 0xa0}, +/* 0xFE */ {__gbkext_decmap+14515, 0x40, 0x4f}, /* 0xFF */ {0, 0, 0}, }; 1.2 +0 -0 cjkcodecs/src/maps/map_jisx0208.h Index: map_jisx0208.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisx0208.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_jisx0208.h 17 May 2003 20:02:50 -0000 1.1 +++ map_jisx0208.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_jisx0208.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_jisx0208.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ static const Py_UNICODE __jisx0208_decmap[6956] = { 1.2 +0 -0 cjkcodecs/src/maps/map_jisx0212.h Index: map_jisx0212.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisx0212.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_jisx0212.h 17 May 2003 20:02:50 -0000 1.1 +++ map_jisx0212.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_jisx0212.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_jisx0212.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ static const Py_UNICODE __jisx0212_decmap[6179] = { 1.2 +0 -0 cjkcodecs/src/maps/map_jisxcommon.h Index: map_jisxcommon.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_jisxcommon.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_jisxcommon.h 17 May 2003 20:02:50 -0000 1.1 +++ map_jisxcommon.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_jisxcommon.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_jisxcommon.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ static const Py_UNICODE __jisx0208_0212_encmap[22016] = { 1.2 +0 -0 cjkcodecs/src/maps/map_ksx1001.h Index: map_ksx1001.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/maps/map_ksx1001.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_ksx1001.h 17 May 2003 20:02:50 -0000 1.1 +++ map_ksx1001.h 17 May 2003 20:36:11 -0000 1.2 @@ -1,5 +1,5 @@ /* - * $Id: map_ksx1001.h,v 1.1 2003/05/17 20:02:50 perky Exp $ + * $Id: map_ksx1001.h,v 1.2 2003/05/17 20:36:11 perky Exp $ */ static const Py_UNICODE __ksx1001_decmap[8264] = { 1.1 cjkcodecs/src/maps/map_big5.h Index: map_big5.h =================================================================== /* * $Id: map_big5.h,v 1.1 2003/05/17 20:36:10 perky Exp $ */ static const Py_UNICODE __big5_decmap[16702] = { 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a, 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52, 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31, 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35, 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39, 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d, 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41, 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105, 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642, 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd, 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3, 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5, 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4, 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7, 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c, 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b, 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a, 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e, 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f, 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8, 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2, 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e, 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4, 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9, 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317, 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e, 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8, 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1, 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216, 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f, 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d, 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd, 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919, 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979, 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89, 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48, 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225, 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac, 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426, 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b, 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436, 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea, 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81, 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70, 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e, 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076, 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2, 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3, 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093, 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492, 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462, 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a, 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae, 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af, 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a, 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c, 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f, 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a, 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3, 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe, 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9, 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1, 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae, 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd, 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0, 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192, 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b, 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b, 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8, 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545, 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f, 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1, 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef, 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de, 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83, 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32, 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3, 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd, 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6, 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301, 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306, 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4, 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4, 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2, 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a, 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20, 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0, 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04, 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8, 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab, 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a, 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9, 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8, 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de, 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7, 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b, 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728, 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3, 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18, 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16, 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77, 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7, 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095, 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd, 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5, 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60, 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22, 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2, 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5, 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97, 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3, 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2, 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb, 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5, 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea, 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf, 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d, 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4, 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e, 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f, 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b, 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa, 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019, 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015, 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71, 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c, 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43, 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9, 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c, 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1, 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3, 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0... [truncated message content] |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 20:33:07
|
perky 03/05/17 13:33:06 Added: tools genmap_schinese.py genmap_tchinese.py Removed: tools genmap_zh_TW_codecs.py Log: Add map generators for chinese. Revision Changes Path 1.1 cjkcodecs/tools/genmap_schinese.py Index: genmap_schinese.py =================================================================== # # genmap_schinese.py: Simplified Chinese Codecs Map Generator # # Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # $Id: genmap_schinese.py,v 1.1 2003/05/17 20:33:06 perky Exp $ # from genmap_support import * GB2312_C1 = (0x21, 0x7e) GB2312_C2 = (0x21, 0x7e) GBKL1_C1 = (0x81, 0xa8) GBKL1_C2 = (0x40, 0xfe) GBKL2_C1 = (0xa9, 0xfe) GBKL2_C2 = (0x40, 0xa0) GB18030EXTP1_C1 = (0xa1, 0xa9) GB18030EXTP1_C2 = (0x40, 0xfe) GB18030EXTP2_C1 = (0xaa, 0xaf) GB18030EXTP2_C2 = (0xa1, 0xfe) GB18030EXTP3_C1 = (0xd7, 0xd7) GB18030EXTP3_C2 = (0xfa, 0xfe) GB18030EXTP4_C1 = (0xf8, 0xfd) GB18030EXTP4_C2 = (0xa1, 0xfe) GB18030EXTP5_C1 = (0xfe, 0xfe) GB18030EXTP5_C2 = (0x50, 0xfe) try: gb2312map = open('GB2312.TXT') except IOError: print "=>> Please download mapping table from http://www.unicode." \ "org/Public/MAPPINGS/OBSOLETE/EASTASIA/GB/GB2312.TXT" raise SystemExit try: cp936map = open('CP936.TXT') except IOError: print "=>> Please download mapping table from http://www.unicode." \ "org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT" raise SystemExit try: gb18030map = open('gb-18030-2000.xml') except IOError: print "=>> Please download mapping table from http://oss.software" \ ".ibm.com/cvs/icu/~checkout~/charset/data/xml/gb-18030-2000.xml" raise SystemExit re_gb18030ass = re.compile('<a u="([A-F0-9]{4})" b="([0-9A-F ]+)"/>') def parse_gb18030map(fo): m, gbuni = {}, {} for i in range(65536): if i < 0xd800 or i > 0xdfff: # exclude unicode surrogate area gbuni[i] = None for uni, native in re_gb18030ass.findall(fo.read()): uni = eval('0x'+uni) native = [eval('0x'+u) for u in native.split()] if len(native) <= 2: del gbuni[uni] if len(native) == 2: # we can decode algorithmically for 1 or 4 bytes m.setdefault(native[0], {}) m[native[0]][native[1]] = uni gbuni = gbuni.keys() gbuni.sort() return m, gbuni print "Loading Mapping File..." gb18030decmap, gb18030unilinear = parse_gb18030map(gb18030map) datever, gbkdecmap = loadmap(cp936map) gb2312_datever, gb2312decmap = loadmap(gb2312map) difmap = {} for c1, m in gbkdecmap.items(): for c2, code in m.items(): del gb18030decmap[c1][c2] if not gb18030decmap[c1]: del gb18030decmap[c1] for c1, m in gb2312decmap.items(): for c2, code in m.items(): gbkc1, gbkc2 = c1 | 0x80, c2 | 0x80 if gbkdecmap[gbkc1][gbkc2] == code: del gbkdecmap[gbkc1][gbkc2] if not gbkdecmap[gbkc1]: del gbkdecmap[gbkc1] gb2312_gbkencmap, gb18030encmap = {}, {} for c1, m in gbkdecmap.iteritems(): for c2, code in m.iteritems(): gb2312_gbkencmap.setdefault(code >> 8, {}) gb2312_gbkencmap[code >> 8][code & 0xff] = c1 << 8 | c2 # MSB set for c1, m in gb2312decmap.iteritems(): for c2, code in m.iteritems(): gb2312_gbkencmap.setdefault(code >> 8, {}) gb2312_gbkencmap[code >> 8][code & 0xff] = c1 << 8 | c2 # MSB unset for c1, m in gb18030decmap.iteritems(): for c2, code in m.iteritems(): gb18030encmap.setdefault(code >> 8, {}) gb18030encmap[code >> 8][code & 0xff] = c1 << 8 | c2 omap = open('map_gb2312.h', 'w') printcopyright(omap) print "Generating GB2312 decode map..." codebunch = [] genmap_decode(codebunch, "gb2312", GB2312_C1, GB2312_C2, gb2312decmap) print_decmap(omap, codebunch, "gb2312", gb2312decmap) omap = open('map_gbkext.h', 'w') printcopyright(omap) print "Generating GBK decode map..." codebunch = [] genmap_decode(codebunch, "gbkext", GBKL1_C1, GBKL1_C2, gbkdecmap) genmap_decode(codebunch, "gbkext", GBKL2_C1, GBKL2_C2, gbkdecmap) print_decmap(omap, codebunch, "gbkext", gbkdecmap) omap = open('map_gbcommon.h', 'w') printcopyright(omap) print "Generating GB2312 && GBK encode map..." codebunch =[] genmap_encode(codebunch, "gbcommon", gb2312_gbkencmap) print_encmap(omap, codebunch, "gbcommon", gb2312_gbkencmap) omap = open('map_gb18030ext.h', 'w') printcopyright(omap) print "Generating GB18030 extension decode map..." codebunch = [] for i in range(1, 6): genmap_decode(codebunch, "gb18030ext", eval("GB18030EXTP%d_C1" % i), eval("GB18030EXTP%d_C2" % i), gb18030decmap) print_decmap(omap, codebunch, "gb18030ext", gb18030decmap) print "Generating GB18030 extension encode map..." codebunch =[] genmap_encode(codebunch, "gb18030ext", gb18030encmap) print_encmap(omap, codebunch, "gb18030ext", gb18030encmap) omap = open('map_gb18030uni.h', 'w') printcopyright(omap) print "Generating GB18030 Unicode BMP Mapping Ranges..." ranges = [[-1, -1, -1]] gblinnum = 0 print >> omap, """ static const struct _gb18030_to_unibmp_ranges { Py_UNICODE first, last; DBCHAR base; } gb18030_to_unibmp_ranges[] = {""" for uni in gb18030unilinear: if uni == ranges[-1][1] + 1: ranges[-1][1] = uni else: ranges.append([uni, uni, gblinnum]) gblinnum += 1 for first, last, base in ranges[1:]: print >> omap, " { 0x%04x, 0x%04x, 0x%04x }," % (first, last, base) print >> omap, """\ { 0x0000, 0x0000, 0x%04x }, };""" % (ranges[-1][2] + ranges[-1][1] - ranges[-1][0] + 1) print "\nDone!" # ex: ts=8 sts=4 et 1.1 cjkcodecs/tools/genmap_tchinese.py Index: genmap_tchinese.py =================================================================== # # genmap_tchinese.py: Traditional Chinese Codecs Map Generator # # Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # $Id: genmap_tchinese.py,v 1.1 2003/05/17 20:33:06 perky Exp $ # from genmap_support import * BIG5_C1 = (0xa1, 0xfe) BIG5_C2 = (0x40, 0xfe) # big5 map doesn't have 0xA3E1 (EURO SIGN), but we ignore # that for forward compatiblilty. "Hey! we have the euro-big5!" :) CP950_C1 = BIG5_C1 CP950_C2 = BIG5_C2 try: big5map = open('BIG5.TXT') except IOError: print "=>> Please download mapping table from http://www.unicode." \ "org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT" raise SystemExit try: cp950map = open('CP950.TXT') except IOError: print "=>> Please download mapping table from http://www.unicode." \ "org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT" raise SystemExit print "Loading Mapping File..." datever, cp950decmap = loadmap(cp950map) big5_datever, big5decmap = loadmap(big5map) big5encmap, cp950encmap = {}, {} for c1, m in cp950decmap.items(): for c2, code in m.items(): if not (not big5decmap.has_key(c1) or not big5decmap[c1].has_key(c2) or big5decmap[c1][c2] != code): del cp950decmap[c1][c2] else: cp950encmap.setdefault(code >> 8, {}) cp950encmap[code >> 8][code & 0xff] = c1 << 8 | c2 for c1, m in big5decmap.items(): for c2, code in m.items(): big5encmap.setdefault(code >> 8, {}) big5encmap[code >> 8][code & 0xff] = c1 << 8 | c2 omap = open('map_big5.h', 'w') printcopyright(omap) print "Generating BIG5 decode map..." codebunch = [] genmap_decode(codebunch, "big5", BIG5_C1, BIG5_C2, big5decmap) print_decmap(omap, codebunch, "big5", big5decmap) print "Generating BIG5 encode map..." codebunch = [] genmap_encode(codebunch, "big5", big5encmap) print_encmap(omap, codebunch, "big5", big5encmap) omap = open('map_cp950ext.h', 'w') printcopyright(omap) print "Generating CP950 extension decode map..." codebunch = [] genmap_decode(codebunch, "cp950ext", BIG5_C1, BIG5_C2, cp950decmap) print_decmap(omap, codebunch, "cp950ext", cp950decmap) print "Generating CP950 extension encode map..." codebunch = [] genmap_encode(codebunch, "cp950ext", cp950encmap) print_encmap(omap, codebunch, "cp950ext", cp950encmap) print "\nDone!" # ex: ts=8 sts=4 et |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 20:00:13
|
perky 03/05/17 13:00:10 cjkcodecs/src/maps - New directory |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 19:59:57
|
perky 03/05/17 12:59:56 Removed: src map_cp932.h map_cp949.h map_gb18030.h map_gb2312.h map_gbk.h map_jisx0208.h map_jisx0212.h map_ksx1001.h Log: Remove old style maps |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 17:50:37
|
perky 03/05/17 10:50:36 Modified: tools genmap_korean.py Log: Correct 'MSB' Revision Changes Path 1.4 +2 -2 cjkcodecs/tools/genmap_korean.py Index: genmap_korean.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/tools/genmap_korean.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- genmap_korean.py 17 May 2003 16:16:57 -0000 1.3 +++ genmap_korean.py 17 May 2003 17:50:36 -0000 1.4 @@ -26,7 +26,7 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: genmap_korean.py,v 1.3 2003/05/17 16:16:57 perky Exp $ +# $Id: genmap_korean.py,v 1.4 2003/05/17 17:50:36 perky Exp $ # from genmap_support import * @@ -60,7 +60,7 @@ uhcdecmap.setdefault(c1, {}) uhcdecmap[c1][c2] = c2map[c2] cp949encmap.setdefault(code >> 8, {}) # MSB set - cp949encmap[code >> 8][code & 0xFF] = 0x1000 | (c1<<8 | c2) & 0x7f7f + cp949encmap[code >> 8][code & 0xFF] = 0x8000 | (c1<<8 | c2) & 0x7f7f omap = open('map_ksx1001.h', 'w') printcopyright(omap) |
From: Hye-Shik C. <pe...@us...> - 2003-05-17 16:16:59
|
perky 03/05/17 09:16:57 Modified: tools genmap_japanese.py genmap_korean.py genmap_support.py Log: Generate encode map yeah! Revision Changes Path 1.4 +45 -47 cjkcodecs/tools/genmap_japanese.py Index: genmap_japanese.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/tools/genmap_japanese.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- genmap_japanese.py 14 May 2003 08:15:22 -0000 1.3 +++ genmap_japanese.py 17 May 2003 16:16:57 -0000 1.4 @@ -26,7 +26,7 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: genmap_japanese.py,v 1.3 2003/05/14 08:15:22 perky Exp $ +# $Id: genmap_japanese.py,v 1.4 2003/05/17 16:16:57 perky Exp $ # from genmap_support import * @@ -68,67 +68,65 @@ cp932datever, cp932decmap = loadmap(cp932file) sjisencmap, cp932encmap = {}, {} -cp932diff = {} +jisx0208_0212encmap = {} +for c1, m in sjisdecmap.items(): + for c2, code in m.items(): + sjisencmap.setdefault(code >> 8, {}) + sjisencmap[code >> 8][code & 0xff] = c1 << 8 | c2 for c1, m in cp932decmap.items(): for c2, code in m.items(): - cp932encmap[code] = (c1, c2) - if sjisdecmap.has_key(c1) and sjisdecmap[c1].has_key(c2): - sjisencmap[sjisdecmap[c1][c2]] = (c1, c2) - if sjisdecmap[c1][c2] != code: - cp932diff[(c1, c2)] = (sjisdecmap[c1][c2], code) - else: - del cp932decmap[c1][c2] - if not cp932decmap[c1]: - del cp932decmap[c1] -difmap = [] -for uni, (c1, c2) in cp932encmap.iteritems(): - if sjisencmap.has_key(uni): - s1, s2 = sjisencmap[uni] - if (s1, s2) != (c1, c2): - difmap.append(uni) + if sjisencmap.has_key(c1) and sjisencmap[c1].has_key(c2) and \ + sjisencmap[c1][c2] != code: + cp932encmap.setdefault(code >> 8, {}) + cp932encmap[code >> 8][code & 0xff] = c1 << 8 | c2 +# Twinmap for both of JIS X 0208 (MSB unset) and JIS X 0212 (MSB set) +for c1, m in jisx0208decmap.items(): + for c2, code in m.items(): + jisx0208_0212encmap.setdefault(code >> 8, {}) + jisx0208_0212encmap[code >> 8][code & 0xff] = c1 << 8 | c2 +for c1, m in jisx0212decmap.items(): + for c2, code in m.items(): + jisx0208_0212encmap.setdefault(code >> 8, {}) + if jisx0208_0212encmap[code >> 8].has_key(code & 0xff): + print "OOPS!!!", (code) + jisx0208_0212encmap[code >> 8][code & 0xff] = 0x8000 | c1 << 8 | c2 omap = open("map_jisx0208.h", "w") printcopyright(omap) print "Generating JIS X 0208 decode map..." -genmap_decode(omap, "jisx0208", JISX0208_C1, JISX0208_C2, jisx0208decmap) - -print "Generating JIS X 0208 decode map index..." -print_decmapindex(omap, "jisx0208", jisx0208decmap, rng=(0, 128)) +codebunch = [] +genmap_decode(codebunch, "jisx0208", JISX0208_C1, JISX0208_C2, jisx0208decmap) +print_decmap(omap, codebunch, "jisx0208", jisx0208decmap) omap = open("map_jisx0212.h", "w") printcopyright(omap) print "Generating JIS X 0212 decode map..." -genmap_decode(omap, "jisx0212", JISX0212_C1, JISX0212_C2, jisx0212decmap) +codebunch = [] +genmap_decode(codebunch, "jisx0212", JISX0212_C1, JISX0212_C2, jisx0212decmap) +print_decmap(omap, codebunch, "jisx0212", jisx0212decmap) -print "Generating JIS X 0212 decode map index..." -print_decmapindex(omap, "jisx0212", jisx0212decmap, rng=(0, 128)) +omap = open("map_jisxcommon.h", "w") +printcopyright(omap) +print "Generating JIS X 0208 && JIS X 0212 encode map..." +codebunch =[] +genmap_encode(codebunch, "jisx0208_0212", jisx0208_0212encmap) +print_encmap(omap, codebunch, "jisx0208_0212", jisx0208_0212encmap) -omap = open("map_cp932.h", "w") +omap = open("map_cp932ext.h", "w") printcopyright(omap) -print "Generating CP932 decode map..." -genmap_decode(omap, "cp932", CP932P0_C1, CP932P0_C2, cp932decmap) -genmap_decode(omap, "cp932", CP932P1_C1, CP932P1_C2, cp932decmap) -genmap_decode(omap, "cp932", CP932P2_C1, CP932P2_C2, cp932decmap) - -print "Generating CP932 decode map index..." -print_decmapindex(omap, "cp932", cp932decmap) - -print "Generating CP932 Tweaks..." -if difmap: - print >> omap, "#define CP932_TWEAKUNIMAP(umap)", - checked = {} - for uni in difmap: - if not checked.has_key(uni >> 8): - print >> omap, "\\\n\tif ((umap)[0x%02x] == NULL) " \ - "(umap)[0x%02x] = PyMem_Malloc(sizeof(DBCHAR) * 256);" % ( - uni >> 8, uni >> 8), - checked[uni >> 8] = True - print >> omap, "\\\n\t(umap)[0x%02x][0x%02x] = DBCINV;" % ( - uni >> 8, uni & 0xFF), - print >> omap +print "Generating CP932 Extension decode map..." +codebunch = [] +genmap_decode(codebunch, "cp932ext", CP932P0_C1, CP932P0_C2, cp932decmap) +genmap_decode(codebunch, "cp932ext", CP932P1_C1, CP932P1_C2, cp932decmap) +genmap_decode(codebunch, "cp932ext", CP932P2_C1, CP932P2_C2, cp932decmap) +print_decmap(omap, codebunch, "cp932ext", cp932decmap) + +print "Generating CP932 Extension encode map..." +codebunch =[] +genmap_encode(codebunch, "cp932ext", cp932encmap) +print_encmap(omap, codebunch, "cp932ext", cp932encmap) print "\nDone!" - # ex: ts=8 sts=4 et 1.3 +22 -14 cjkcodecs/tools/genmap_korean.py Index: genmap_korean.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/tools/genmap_korean.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- genmap_korean.py 14 May 2003 06:58:05 -0000 1.2 +++ genmap_korean.py 17 May 2003 16:16:57 -0000 1.3 @@ -26,7 +26,7 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: genmap_korean.py,v 1.2 2003/05/14 06:58:05 perky Exp $ +# $Id: genmap_korean.py,v 1.3 2003/05/17 16:16:57 perky Exp $ # from genmap_support import * @@ -48,36 +48,44 @@ print "Loading Mapping File..." datever, decmap = loadmap(mapfile) uhcdecmap, ksx1001decmap = {}, {} +cp949encmap = {} for c1, c2map in decmap.iteritems(): - for c2 in c2map.iterkeys(): + for c2, code in c2map.iteritems(): if c1 >= 0xa1 and c2 >= 0xa1: ksx1001decmap.setdefault(c1&0x7f, {}) ksx1001decmap[c1&0x7f][c2&0x7f] = c2map[c2] + cp949encmap.setdefault(code >> 8, {}) + cp949encmap[code >> 8][code & 0xFF] = (c1<<8 | c2) & 0x7f7f else: # uhc uhcdecmap.setdefault(c1, {}) uhcdecmap[c1][c2] = c2map[c2] + cp949encmap.setdefault(code >> 8, {}) # MSB set + cp949encmap[code >> 8][code & 0xFF] = 0x1000 | (c1<<8 | c2) & 0x7f7f omap = open('map_ksx1001.h', 'w') printcopyright(omap) print "Generating KS X 1001 decode map..." -genmap_decode(omap, "ksx1001", KSX1001_C1, KSX1001_C2, ksx1001decmap) +codebunch = [] +genmap_decode(codebunch, "ksx1001", KSX1001_C1, KSX1001_C2, ksx1001decmap) +print_decmap(omap, codebunch, "ksx1001", ksx1001decmap) -print "Generating KS X 1001 decode map index..." -print_decmapindex(omap, "ksx1001", ksx1001decmap, rng=(0, 127)) - -omap = open('map_cp949.h', 'w') +omap = open('map_cp949ext.h', 'w') printcopyright(omap) -print "Generating UHC Level 1 decode map..." -genmap_decode(omap, "cp949", UHCL1_C1, UHCL1_C2, uhcdecmap) +print "Generating UHC decode map..." +codebunch = [] +genmap_decode(codebunch, "cp949ext", UHCL1_C1, UHCL1_C2, uhcdecmap) +genmap_decode(codebunch, "cp949ext", UHCL2_C1, UHCL2_C2, uhcdecmap) +print_decmap(omap, codebunch, "cp949ext", uhcdecmap) -print "Generating UHC Level 2 decode map..." -genmap_decode(omap, "cp949", UHCL2_C1, UHCL2_C2, uhcdecmap) +omap = open('map_cp949.h', 'w') +printcopyright(omap) -print "Generating UHC decode map index..." -print_decmapindex(omap, "cp949", uhcdecmap) +print "Generating CP949 (includes KS X 1001) encode map..." +codebunch =[] +genmap_encode(codebunch, "cp949", cp949encmap) +print_encmap(omap, codebunch, "cp949", cp949encmap) print "\nDone!" - # ex: ts=8 sts=4 et 1.4 +74 -25 cjkcodecs/tools/genmap_support.py Index: genmap_support.py =================================================================== RCS file: /cvsroot/koco/cjkcodecs/tools/genmap_support.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- genmap_support.py 22 Apr 2003 21:04:36 -0000 1.3 +++ genmap_support.py 17 May 2003 16:16:57 -0000 1.4 @@ -26,14 +26,14 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: genmap_support.py,v 1.3 2003/04/22 21:04:36 perky Exp $ +# $Id: genmap_support.py,v 1.4 2003/05/17 16:16:57 perky Exp $ # import re COPYRIGHT_HEADER = """\ /* - * $Id: genmap_support.py,v 1.3 2003/04/22 21:04:36 perky Exp $ + * $Id: genmap_support.py,v 1.4 2003/05/17 16:16:57 perky Exp $ */ """ re_UNIMAPDATE = re.compile('Date:\s*([ a-zA-Z0-9/]*)') @@ -42,7 +42,56 @@ def printcopyright(fo): print >> fo, COPYRIGHT_HEADER -def genmap_decode(fo, prefix, c1range, c2range, dmap, onlymask=()): +def genmap_encode(codebunch, prefix, emap): + for c1 in range(0, 256): + if not emap.has_key(c1): + continue + c2map = emap[c1] + rc2values = c2map.keys() + rc2values.sort() + if not rc2values: + continue + + c2map[prefix] = True + c2map['min'] = rc2values[0] + c2map['max'] = rc2values[-1] + c2map['midx'] = len(codebunch) + + for v in range(rc2values[0], rc2values[-1] + 1): + if c2map.has_key(v): + codebunch.append('0x%04x,' % c2map[v]) + else: + codebunch.append('UNIINV,') + +def print_encmap(fo, codebunch, fmapprefix, fmap, f2map={}, f2mapprefix=''): + print >> fo, ("static const Py_UNICODE __%s_encmap[%d] = {" % ( + fmapprefix, len(codebunch))) + i = 0 + while i < len(codebunch): + dp = codebunch[i:i+8] + i += 8 + print >> fo, ' ', ' '.join(dp) + print >> fo, "};" + print >> fo + + print >> fo, "static const struct dbcs_index %s_encmap[256] = {" % (fmapprefix) + for i in range(256): + if fmap.has_key(i) and fmap[i].has_key(fmapprefix): + map = fmap + prefix = fmapprefix + elif f2map.has_key(i) and f2map[i].has_key(f2mapprefix): + map = f2map + prefix = f2mapprefix + else: + print >> fo, "/* 0x%02X */ {0, 0, 0}," % i + continue + + print >> fo, "/* 0x%02X */ {__%s_encmap+%d, 0x%02x, 0x%02x}," % ( + i, prefix, map[i]['midx'], map[i]['min'], map[i]['max']) + print >> fo, "};" + print >> fo + +def genmap_decode(codebunch, prefix, c1range, c2range, dmap, onlymask=()): c2width = c2range[1] - c2range[0] + 1 c2values = range(c2range[0], c2range[1] + 1) @@ -53,31 +102,31 @@ rc2values = [n for n in c2values if c2map.has_key(n)] if not rc2values: continue - rc2values = range(rc2values[0], rc2values[-1] + 1) - rc2width = len(rc2values) - print >> fo, ("static const Py_UNICODE __%s_decmap_%02X[%d] = {" - " /* %02X::%02X-%02X */" - % (prefix, c1, rc2width, c1, rc2values[0], rc2values[-1])) c2map[prefix] = True c2map['min'] = rc2values[0] c2map['max'] = rc2values[-1] + c2map['midx'] = len(codebunch) + + for v in range(rc2values[0], rc2values[-1] + 1): + if c2map.has_key(v): + codebunch.append('0x%04x,' % c2map[v]) + else: + codebunch.append('UNIINV,') + +def print_decmap(fo, codebunch, fmapprefix, fmap, f2map={}, f2mapprefix=''): + print >> fo, ("static const Py_UNICODE __%s_decmap[%d] = {" % ( + fmapprefix, len(codebunch))) + i = 0 + while i < len(codebunch): + dp = codebunch[i:i+8] + i += 8 + print >> fo, ' ', ' '.join(dp) + print >> fo, "};" + print >> fo - while rc2values: - dp = rc2values[:8] - del rc2values[:8] - print >> fo, ' ', ' '.join([ - c2map.has_key(i) and - ("0x%04x," % c2map[i]) or "UNIINV," - for i in dp - ]) - print >> fo, "};" - print >> fo - -def print_decmapindex(fo, fmapprefix, fmap, - f2map={}, f2mapprefix='', rng=(0x80, 0x100)): - print >> fo, "static const struct dbcs_index %s_decmap[128] = {" % (fmapprefix) - for i in range(*rng): + print >> fo, "static const struct dbcs_index %s_decmap[256] = {" % (fmapprefix) + for i in range(256): if fmap.has_key(i) and fmap[i].has_key(fmapprefix): map = fmap prefix = fmapprefix @@ -88,8 +137,8 @@ print >> fo, "/* 0x%02X */ {0, 0, 0}," % i continue - print >> fo, "/* 0x%02X */ {__%s_decmap_%02X, 0x%02x, 0x%02x}," % ( - i, prefix, i, map[i]['min'], map[i]['max']) + print >> fo, "/* 0x%02X */ {__%s_decmap+%d, 0x%02x, 0x%02x}," % ( + i, prefix, map[i]['midx'], map[i]['min'], map[i]['max']) print >> fo, "};" print >> fo |
From: Hye-Shik C. <pe...@us...> - 2003-05-16 13:02:11
|
perky 03/05/16 06:02:07 Removed: tools genmap_zh_CN_codecs.py Log: Remove obsolete generato |
From: Hye-Shik C. <pe...@us...> - 2003-05-16 12:06:32
|
perky 03/05/16 05:06:31 Modified: src Makefile cjkcommon.h map_cp932.c map_cp949.c Added: src map_gb18030.c map_gb18030.h map_gb2312.c map_gb2312.h map_gbk.c map_gbk.h Log: Add map for gb encodings Revision Changes Path 1.4 +3 -2 cjkcodecs/src/Makefile Index: Makefile =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Makefile 14 May 2003 06:48:41 -0000 1.3 +++ Makefile 16 May 2003 12:06:30 -0000 1.4 @@ -25,10 +25,11 @@ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $Id: Makefile,v 1.3 2003/05/14 06:48:41 perky Exp $ +# $Id: Makefile,v 1.4 2003/05/16 12:06:30 perky Exp $ # -GENERIC_CHARSETS= cp932 jisx0208 jisx0212 \ +GENERIC_CHARSETS= gb2312 gbk gb18030 \ + cp932 jisx0208 jisx0212 \ cp949 ksx1001 all: genericmaps 1.5 +17 -1 cjkcodecs/src/cjkcommon.h Index: cjkcommon.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/cjkcommon.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- cjkcommon.h 14 May 2003 08:13:08 -0000 1.4 +++ cjkcommon.h 16 May 2003 12:06:31 -0000 1.5 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: cjkcommon.h,v 1.4 2003/05/14 08:13:08 perky Exp $ + * $Id: cjkcommon.h,v 1.5 2003/05/16 12:06:31 perky Exp $ */ #ifndef _CJKCOMMON_H_ @@ -47,6 +47,22 @@ DBCHAR **encmap; const struct dbcs_index *decmap; }; + + +#define GB2312_C1_BOTTOM 0x21 +#define GB2312_C1_TOP 0x7e +#define GB2312_C2_BOTTOM 0x21 +#define GB2312_C2_TOP 0x7e + +#define GBK_C1_BOTTOM 0x81 +#define GBK_C1_TOP 0xfe +#define GBK_C2_BOTTOM 0x40 +#define GBK_C2_TOP 0xfe + +#define GB18030_C1_BOTTOM 0xa1 +#define GB18030_C1_TOP 0xfe +#define GB18030_C2_BOTTOM 0x40 +#define GB18030_C2_TOP 0xfe #define JISX0208_C1_BOTTOM 0x21 #define JISX0208_C1_TOP 0x74 1.7 +0 -0 cjkcodecs/src/map_cp932.c Index: map_cp932.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/map_cp932.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- map_cp932.c 14 May 2003 08:21:03 -0000 1.6 +++ map_cp932.c 16 May 2003 12:06:31 -0000 1.7 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_cp932.c,v 1.6 2003/05/14 08:21:03 perky Exp $ + * $Id: map_cp932.c,v 1.7 2003/05/16 12:06:31 perky Exp $ */ #include "Python.h" 1.2 +0 -0 cjkcodecs/src/map_cp949.c Index: map_cp949.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/map_cp949.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- map_cp949.c 14 May 2003 06:48:41 -0000 1.1 +++ map_cp949.c 16 May 2003 12:06:31 -0000 1.2 @@ -28,7 +28,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: map_cp949.c,v 1.1 2003/05/14 06:48:41 perky Exp $ + * $Id: map_cp949.c,v 1.2 2003/05/16 12:06:31 perky Exp $ */ #include "Python.h" 1.1 cjkcodecs/src/map_gb18030.c Index: map_gb18030.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_gb18030.c: GB18030 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_gb18030.c,v 1.1 2003/05/16 12:06:31 perky Exp $ */ #include "Python.h" #include "cjkcommon.h" #include "map_gb18030.h" static DBCHAR *__encode_map[256]; static struct dbcs_map __map_entry = { "gb18030", __encode_map, gb18030_decmap }; static int init_maps(void) { const struct dbcs_index *umap; unsigned char c1, c2; int i; for (i = 0; i < 256; i++) __encode_map[i] = NULL; for (c1 = GB18030_C1_BOTTOM; c1 <= GB18030_C2_BOTTOM; c1++) { umap = &gb18030_decmap[c1 & 0x7f]; if (umap->map == NULL) continue; for (c2 = umap->bottom; c2 <= umap->top; c2++) { Py_UNICODE uni; int upage, i; uni = umap->map[c2 - umap->bottom]; if (uni == UNIINV) continue; upage = uni >> 8; if (__encode_map[upage] == NULL) { __encode_map[upage] = PyMem_New(DBCHAR, 256); if (__encode_map[upage] == NULL) goto errorexit; for (i = 0; i <= 255; i++) __encode_map[upage][i] = NOCHAR; } if (__encode_map[upage][uni & 0xff] == NOCHAR) __encode_map[upage][uni & 0xff] = c1 << 8 | c2; } } #ifdef GB18030_TWEAKUNIMAP GB18030_TWEAKUNIMAP(__encode_map); #endif return 0; errorexit: for (i = 0; i < 256; i++) { if (__encode_map[i] != NULL) PyMem_Del(__encode_map[i]); } return -1; } static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_gb18030(void) { PyObject *m; m = Py_InitModule("map_gb18030", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred() || init_maps()) Py_FatalError("can't initialize the map_gb18030 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/map_gb18030.h Index: map_gb18030.h =================================================================== /* * $Id: map_gb18030.h,v 1.1 2003/05/16 12:06:31 perky Exp $ */ static const Py_UNICODE __gb18030_decmap_A1[97] = { /* A1::40-A0 */ 0xe4c6, 0xe4c7, 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf, 0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7, 0xe4d8, 0xe4d9, 0xe4da, 0xe4db, 0xe4dc, 0xe4dd, 0xe4de, 0xe4df, 0xe4e0, 0xe4e1, 0xe4e2, 0xe4e3, 0xe4e4, 0xe4e5, 0xe4e6, 0xe4e7, 0xe4e8, 0xe4e9, 0xe4ea, 0xe4eb, 0xe4ec, 0xe4ed, 0xe4ee, 0xe4ef, 0xe4f0, 0xe4f1, 0xe4f2, 0xe4f3, 0xe4f4, 0xe4f5, 0xe4f6, 0xe4f7, 0xe4f8, 0xe4f9, 0xe4fa, 0xe4fb, 0xe4fc, 0xe4fd, 0xe4fe, 0xe4ff, 0xe500, 0xe501, 0xe502, 0xe503, 0xe504, UNIINV, 0xe505, 0xe506, 0xe507, 0xe508, 0xe509, 0xe50a, 0xe50b, 0xe50c, 0xe50d, 0xe50e, 0xe50f, 0xe510, 0xe511, 0xe512, 0xe513, 0xe514, 0xe515, 0xe516, 0xe517, 0xe518, 0xe519, 0xe51a, 0xe51b, 0xe51c, 0xe51d, 0xe51e, 0xe51f, 0xe520, 0xe521, 0xe522, 0xe523, 0xe524, 0xe525, }; static const Py_UNICODE __gb18030_decmap_A2[191] = { /* A2::40-FE */ 0xe526, 0xe527, 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0xe52d, 0xe52e, 0xe52f, 0xe530, 0xe531, 0xe532, 0xe533, 0xe534, 0xe535, 0xe536, 0xe537, 0xe538, 0xe539, 0xe53a, 0xe53b, 0xe53c, 0xe53d, 0xe53e, 0xe53f, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, UNIINV, 0xe565, 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xe574, 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, 0xe57d, 0xe57e, 0xe57f, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe766, 0xe767, 0xe768, 0xe769, 0xe76a, 0xe76b, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x20ac, 0xe76d, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe76e, 0xe76f, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe770, 0xe771, }; static const Py_UNICODE __gb18030_decmap_A3[97] = { /* A3::40-A0 */ 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0xe5a2, 0xe5a3, 0xe5a4, 0xe5a5, 0xe5a6, 0xe5a7, 0xe5a8, 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, 0xe5ad, 0xe5ae, 0xe5af, 0xe5b0, 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, 0xe5b5, 0xe5b6, 0xe5b7, 0xe5b8, 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, 0xe5bd, 0xe5be, 0xe5bf, 0xe5c0, 0xe5c1, 0xe5c2, 0xe5c3, 0xe5c4, UNIINV, 0xe5c5, 0xe5c6, 0xe5c7, 0xe5c8, 0xe5c9, 0xe5ca, 0xe5cb, 0xe5cc, 0xe5cd, 0xe5ce, 0xe5cf, 0xe5d0, 0xe5d1, 0xe5d2, 0xe5d3, 0xe5d4, 0xe5d5, 0xe5d6, 0xe5d7, 0xe5d8, 0xe5d9, 0xe5da, 0xe5db, 0xe5dc, 0xe5dd, 0xe5de, 0xe5df, 0xe5e0, 0xe5e1, 0xe5e2, 0xe5e3, 0xe5e4, 0xe5e5, }; static const Py_UNICODE __gb18030_decmap_A4[191] = { /* A4::40-FE */ 0xe5e6, 0xe5e7, 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0xe5ec, 0xe5ed, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0xe5f2, 0xe5f3, 0xe5f4, 0xe5f5, 0xe5f6, 0xe5f7, 0xe5f8, 0xe5f9, 0xe5fa, 0xe5fb, 0xe5fc, 0xe5fd, 0xe5fe, 0xe5ff, 0xe600, 0xe601, 0xe602, 0xe603, 0xe604, 0xe605, 0xe606, 0xe607, 0xe608, 0xe609, 0xe60a, 0xe60b, 0xe60c, 0xe60d, 0xe60e, 0xe60f, 0xe610, 0xe611, 0xe612, 0xe613, 0xe614, 0xe615, 0xe616, 0xe617, 0xe618, 0xe619, 0xe61a, 0xe61b, 0xe61c, 0xe61d, 0xe61e, 0xe61f, 0xe620, 0xe621, 0xe622, 0xe623, 0xe624, UNIINV, 0xe625, 0xe626, 0xe627, 0xe628, 0xe629, 0xe62a, 0xe62b, 0xe62c, 0xe62d, 0xe62e, 0xe62f, 0xe630, 0xe631, 0xe632, 0xe633, 0xe634, 0xe635, 0xe636, 0xe637, 0xe638, 0xe639, 0xe63a, 0xe63b, 0xe63c, 0xe63d, 0xe63e, 0xe63f, 0xe640, 0xe641, 0xe642, 0xe643, 0xe644, 0xe645, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, 0xe779, 0xe77a, 0xe77b, 0xe77c, }; static const Py_UNICODE __gb18030_decmap_A5[191] = { /* A5::40-FE */ 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe67f, 0xe680, 0xe681, 0xe682, 0xe683, 0xe684, UNIINV, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, 0xe69c, 0xe69d, 0xe69e, 0xe69f, 0xe6a0, 0xe6a1, 0xe6a2, 0xe6a3, 0xe6a4, 0xe6a5, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe77d, 0xe77e, 0xe77f, 0xe780, 0xe781, 0xe782, 0xe783, 0xe784, }; static const Py_UNICODE __gb18030_decmap_A6[191] = { /* A6::40-FE */ 0xe6a6, 0xe6a7, 0xe6a8, 0xe6a9, 0xe6aa, 0xe6ab, 0xe6ac, 0xe6ad, 0xe6ae, 0xe6af, 0xe6b0, 0xe6b1, 0xe6b2, 0xe6b3, 0xe6b4, 0xe6b5, 0xe6b6, 0xe6b7, 0xe6b8, 0xe6b9, 0xe6ba, 0xe6bb, 0xe6bc, 0xe6bd, 0xe6be, 0xe6bf, 0xe6c0, 0xe6c1, 0xe6c2, 0xe6c3, 0xe6c4, 0xe6c5, 0xe6c6, 0xe6c7, 0xe6c8, 0xe6c9, 0xe6ca, 0xe6cb, 0xe6cc, 0xe6cd, 0xe6ce, 0xe6cf, 0xe6d0, 0xe6d1, 0xe6d2, 0xe6d3, 0xe6d4, 0xe6d5, 0xe6d6, 0xe6d7, 0xe6d8, 0xe6d9, 0xe6da, 0xe6db, 0xe6dc, 0xe6dd, 0xe6de, 0xe6df, 0xe6e0, 0xe6e1, 0xe6e2, 0xe6e3, 0xe6e4, UNIINV, 0xe6e5, 0xe6e6, 0xe6e7, 0xe6e8, 0xe6e9, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ed, 0xe6ee, 0xe6ef, 0xe6f0, 0xe6f1, 0xe6f2, 0xe6f3, 0xe6f4, 0xe6f5, 0xe6f6, 0xe6f7, 0xe6f8, 0xe6f9, 0xe6fa, 0xe6fb, 0xe6fc, 0xe6fd, 0xe6fe, 0xe6ff, 0xe700, 0xe701, 0xe702, 0xe703, 0xe704, 0xe705, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, 0xe78a, 0xe78b, 0xe78c, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, 0xe792, 0xe793, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe794, 0xe795, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe796, UNIINV, UNIINV, 0xe797, 0xe798, 0xe799, 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, }; static const Py_UNICODE __gb18030_decmap_A7[191] = { /* A7::40-FE */ 0xe706, 0xe707, 0xe708, 0xe709, 0xe70a, 0xe70b, 0xe70c, 0xe70d, 0xe70e, 0xe70f, 0xe710, 0xe711, 0xe712, 0xe713, 0xe714, 0xe715, 0xe716, 0xe717, 0xe718, 0xe719, 0xe71a, 0xe71b, 0xe71c, 0xe71d, 0xe71e, 0xe71f, 0xe720, 0xe721, 0xe722, 0xe723, 0xe724, 0xe725, 0xe726, 0xe727, 0xe728, 0xe729, 0xe72a, 0xe72b, 0xe72c, 0xe72d, 0xe72e, 0xe72f, 0xe730, 0xe731, 0xe732, 0xe733, 0xe734, 0xe735, 0xe736, 0xe737, 0xe738, 0xe739, 0xe73a, 0xe73b, 0xe73c, 0xe73d, 0xe73e, 0xe73f, 0xe740, 0xe741, 0xe742, 0xe743, 0xe744, UNIINV, 0xe745, 0xe746, 0xe747, 0xe748, 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe7a0, 0xe7a1, 0xe7a2, 0xe7a3, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0xe7aa, 0xe7ab, 0xe7ac, 0xe7ad, 0xe7ae, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe7af, 0xe7b0, 0xe7b1, 0xe7b2, 0xe7b3, 0xe7b4, 0xe7b5, 0xe7b6, 0xe7b7, 0xe7b8, 0xe7b9, 0xe7ba, 0xe7bb, }; static const Py_UNICODE __gb18030_decmap_A8[105] = { /* A8::96-FE */ 0xe7bc, 0xe7bd, 0xe7be, 0xe7bf, 0xe7c0, 0xe7c1, 0xe7c2, 0xe7c3, 0xe7c4, 0xe7c5, 0xe7c6, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe7c7, UNIINV, UNIINV, 0x01f9, UNIINV, 0xe7c9, 0xe7ca, 0xe7cb, 0xe7cc, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xe7d5, 0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xe7da, 0xe7db, 0xe7dc, 0xe7dd, 0xe7de, 0xe7df, 0xe7e0, 0xe7e1, }; static const Py_UNICODE __gb18030_decmap_A9[167] = { /* A9::58-FE */ 0xe7e2, UNIINV, UNIINV, 0xe7e3, UNIINV, 0xe7e4, 0xe7e5, 0xe7e6, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x303e, 0x2ff0, 0x2ff1, 0x2ff2, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ff6, 0x2ff7, 0x2ff8, 0x2ff9, 0x2ffa, 0x2ffb, UNIINV, 0xe7f4, 0xe7f5, 0xe7f6, 0xe7f7, 0xe7f8, 0xe7f9, 0xe7fa, 0xe7fb, 0xe7fc, 0xe7fd, 0xe7fe, 0xe7ff, 0xe800, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0xe801, 0xe802, 0xe803, 0xe804, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809, 0xe80a, 0xe80b, 0xe80c, 0xe80d, 0xe80e, 0xe80f, }; static const Py_UNICODE __gb18030_decmap_AA[94] = { /* AA::A1-FE */ 0xe000, 0xe001, 0xe002, 0xe003, 0xe004, 0xe005, 0xe006, 0xe007, 0xe008, 0xe009, 0xe00a, 0xe00b, 0xe00c, 0xe00d, 0xe00e, 0xe00f, 0xe010, 0xe011, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0xe017, 0xe018, 0xe019, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0xe01f, 0xe020, 0xe021, 0xe022, 0xe023, 0xe024, 0xe025, 0xe026, 0xe027, 0xe028, 0xe029, 0xe02a, 0xe02b, 0xe02c, 0xe02d, 0xe02e, 0xe02f, 0xe030, 0xe031, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037, 0xe038, 0xe039, 0xe03a, 0xe03b, 0xe03c, 0xe03d, 0xe03e, 0xe03f, 0xe040, 0xe041, 0xe042, 0xe043, 0xe044, 0xe045, 0xe046, 0xe047, 0xe048, 0xe049, 0xe04a, 0xe04b, 0xe04c, 0xe04d, 0xe04e, 0xe04f, 0xe050, 0xe051, 0xe052, 0xe053, 0xe054, 0xe055, 0xe056, 0xe057, 0xe058, 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xe05d, }; static const Py_UNICODE __gb18030_decmap_AB[94] = { /* AB::A1-FE */ 0xe05e, 0xe05f, 0xe060, 0xe061, 0xe062, 0xe063, 0xe064, 0xe065, 0xe066, 0xe067, 0xe068, 0xe069, 0xe06a, 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, 0xe07b, 0xe07c, 0xe07d, 0xe07e, 0xe07f, 0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087, 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f, 0xe0a0, 0xe0a1, 0xe0a2, 0xe0a3, 0xe0a4, 0xe0a5, 0xe0a6, 0xe0a7, 0xe0a8, 0xe0a9, 0xe0aa, 0xe0ab, 0xe0ac, 0xe0ad, 0xe0ae, 0xe0af, 0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, 0xe0b6, 0xe0b7, 0xe0b8, 0xe0b9, 0xe0ba, 0xe0bb, }; static const Py_UNICODE __gb18030_decmap_AC[94] = { /* AC::A1-FE */ 0xe0bc, 0xe0bd, 0xe0be, 0xe0bf, 0xe0c0, 0xe0c1, 0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, 0xe0c6, 0xe0c7, 0xe0c8, 0xe0c9, 0xe0ca, 0xe0cb, 0xe0cc, 0xe0cd, 0xe0ce, 0xe0cf, 0xe0d0, 0xe0d1, 0xe0d2, 0xe0d3, 0xe0d4, 0xe0d5, 0xe0d6, 0xe0d7, 0xe0d8, 0xe0d9, 0xe0da, 0xe0db, 0xe0dc, 0xe0dd, 0xe0de, 0xe0df, 0xe0e0, 0xe0e1, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0xe0e6, 0xe0e7, 0xe0e8, 0xe0e9, 0xe0ea, 0xe0eb, 0xe0ec, 0xe0ed, 0xe0ee, 0xe0ef, 0xe0f0, 0xe0f1, 0xe0f2, 0xe0f3, 0xe0f4, 0xe0f5, 0xe0f6, 0xe0f7, 0xe0f8, 0xe0f9, 0xe0fa, 0xe0fb, 0xe0fc, 0xe0fd, 0xe0fe, 0xe0ff, 0xe100, 0xe101, 0xe102, 0xe103, 0xe104, 0xe105, 0xe106, 0xe107, 0xe108, 0xe109, 0xe10a, 0xe10b, 0xe10c, 0xe10d, 0xe10e, 0xe10f, 0xe110, 0xe111, 0xe112, 0xe113, 0xe114, 0xe115, 0xe116, 0xe117, 0xe118, 0xe119, }; static const Py_UNICODE __gb18030_decmap_AD[94] = { /* AD::A1-FE */ 0xe11a, 0xe11b, 0xe11c, 0xe11d, 0xe11e, 0xe11f, 0xe120, 0xe121, 0xe122, 0xe123, 0xe124, 0xe125, 0xe126, 0xe127, 0xe128, 0xe129, 0xe12a, 0xe12b, 0xe12c, 0xe12d, 0xe12e, 0xe12f, 0xe130, 0xe131, 0xe132, 0xe133, 0xe134, 0xe135, 0xe136, 0xe137, 0xe138, 0xe139, 0xe13a, 0xe13b, 0xe13c, 0xe13d, 0xe13e, 0xe13f, 0xe140, 0xe141, 0xe142, 0xe143, 0xe144, 0xe145, 0xe146, 0xe147, 0xe148, 0xe149, 0xe14a, 0xe14b, 0xe14c, 0xe14d, 0xe14e, 0xe14f, 0xe150, 0xe151, 0xe152, 0xe153, 0xe154, 0xe155, 0xe156, 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xe15c, 0xe15d, 0xe15e, 0xe15f, 0xe160, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, 0xe166, 0xe167, 0xe168, 0xe169, 0xe16a, 0xe16b, 0xe16c, 0xe16d, 0xe16e, 0xe16f, 0xe170, 0xe171, 0xe172, 0xe173, 0xe174, 0xe175, 0xe176, 0xe177, }; static const Py_UNICODE __gb18030_decmap_AE[94] = { /* AE::A1-FE */ 0xe178, 0xe179, 0xe17a, 0xe17b, 0xe17c, 0xe17d, 0xe17e, 0xe17f, 0xe180, 0xe181, 0xe182, 0xe183, 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xe18b, 0xe18c, 0xe18d, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, 0xe194, 0xe195, 0xe196, 0xe197, 0xe198, 0xe199, 0xe19a, 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe1a1, 0xe1a2, 0xe1a3, 0xe1a4, 0xe1a5, 0xe1a6, 0xe1a7, 0xe1a8, 0xe1a9, 0xe1aa, 0xe1ab, 0xe1ac, 0xe1ad, 0xe1ae, 0xe1af, 0xe1b0, 0xe1b1, 0xe1b2, 0xe1b3, 0xe1b4, 0xe1b5, 0xe1b6, 0xe1b7, 0xe1b8, 0xe1b9, 0xe1ba, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0xe1c0, 0xe1c1, 0xe1c2, 0xe1c3, 0xe1c4, 0xe1c5, 0xe1c6, 0xe1c7, 0xe1c8, 0xe1c9, 0xe1ca, 0xe1cb, 0xe1cc, 0xe1cd, 0xe1ce, 0xe1cf, 0xe1d0, 0xe1d1, 0xe1d2, 0xe1d3, 0xe1d4, 0xe1d5, }; static const Py_UNICODE __gb18030_decmap_AF[94] = { /* AF::A1-FE */ 0xe1d6, 0xe1d7, 0xe1d8, 0xe1d9, 0xe1da, 0xe1db, 0xe1dc, 0xe1dd, 0xe1de, 0xe1df, 0xe1e0, 0xe1e1, 0xe1e2, 0xe1e3, 0xe1e4, 0xe1e5, 0xe1e6, 0xe1e7, 0xe1e8, 0xe1e9, 0xe1ea, 0xe1eb, 0xe1ec, 0xe1ed, 0xe1ee, 0xe1ef, 0xe1f0, 0xe1f1, 0xe1f2, 0xe1f3, 0xe1f4, 0xe1f5, 0xe1f6, 0xe1f7, 0xe1f8, 0xe1f9, 0xe1fa, 0xe1fb, 0xe1fc, 0xe1fd, 0xe1fe, 0xe1ff, 0xe200, 0xe201, 0xe202, 0xe203, 0xe204, 0xe205, 0xe206, 0xe207, 0xe208, 0xe209, 0xe20a, 0xe20b, 0xe20c, 0xe20d, 0xe20e, 0xe20f, 0xe210, 0xe211, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216, 0xe217, 0xe218, 0xe219, 0xe21a, 0xe21b, 0xe21c, 0xe21d, 0xe21e, 0xe21f, 0xe220, 0xe221, 0xe222, 0xe223, 0xe224, 0xe225, 0xe226, 0xe227, 0xe228, 0xe229, 0xe22a, 0xe22b, 0xe22c, 0xe22d, 0xe22e, 0xe22f, 0xe230, 0xe231, 0xe232, 0xe233, }; static const Py_UNICODE __gb18030_decmap_D7[5] = { /* D7::FA-FE */ 0xe810, 0xe811, 0xe812, 0xe813, 0xe814, }; static const Py_UNICODE __gb18030_decmap_F8[94] = { /* F8::A1-FE */ 0xe234, 0xe235, 0xe236, 0xe237, 0xe238, 0xe239, 0xe23a, 0xe23b, 0xe23c, 0xe23d, 0xe23e, 0xe23f, 0xe240, 0xe241, 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe27f, 0xe280, 0xe281, 0xe282, 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, }; static const Py_UNICODE __gb18030_decmap_F9[94] = { /* F9::A1-FE */ 0xe292, 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe2a1, 0xe2a2, 0xe2a3, 0xe2a4, 0xe2a5, 0xe2a6, 0xe2a7, 0xe2a8, 0xe2a9, 0xe2aa, 0xe2ab, 0xe2ac, 0xe2ad, 0xe2ae, 0xe2af, 0xe2b0, 0xe2b1, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0xe2b6, 0xe2b7, 0xe2b8, 0xe2b9, 0xe2ba, 0xe2bb, 0xe2bc, 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xe2c2, 0xe2c3, 0xe2c4, 0xe2c5, 0xe2c6, 0xe2c7, 0xe2c8, 0xe2c9, 0xe2ca, 0xe2cb, 0xe2cc, 0xe2cd, 0xe2ce, 0xe2cf, 0xe2d0, 0xe2d1, 0xe2d2, 0xe2d3, 0xe2d4, 0xe2d5, 0xe2d6, 0xe2d7, 0xe2d8, 0xe2d9, 0xe2da, 0xe2db, 0xe2dc, 0xe2dd, 0xe2de, 0xe2df, 0xe2e0, 0xe2e1, 0xe2e2, 0xe2e3, 0xe2e4, 0xe2e5, 0xe2e6, 0xe2e7, 0xe2e8, 0xe2e9, 0xe2ea, 0xe2eb, 0xe2ec, 0xe2ed, 0xe2ee, 0xe2ef, }; static const Py_UNICODE __gb18030_decmap_FA[94] = { /* FA::A1-FE */ 0xe2f0, 0xe2f1, 0xe2f2, 0xe2f3, 0xe2f4, 0xe2f5, 0xe2f6, 0xe2f7, 0xe2f8, 0xe2f9, 0xe2fa, 0xe2fb, 0xe2fc, 0xe2fd, 0xe2fe, 0xe2ff, 0xe300, 0xe301, 0xe302, 0xe303, 0xe304, 0xe305, 0xe306, 0xe307, 0xe308, 0xe309, 0xe30a, 0xe30b, 0xe30c, 0xe30d, 0xe30e, 0xe30f, 0xe310, 0xe311, 0xe312, 0xe313, 0xe314, 0xe315, 0xe316, 0xe317, 0xe318, 0xe319, 0xe31a, 0xe31b, 0xe31c, 0xe31d, 0xe31e, 0xe31f, 0xe320, 0xe321, 0xe322, 0xe323, 0xe324, 0xe325, 0xe326, 0xe327, 0xe328, 0xe329, 0xe32a, 0xe32b, 0xe32c, 0xe32d, 0xe32e, 0xe32f, 0xe330, 0xe331, 0xe332, 0xe333, 0xe334, 0xe335, 0xe336, 0xe337, 0xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f, 0xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, }; static const Py_UNICODE __gb18030_decmap_FB[94] = { /* FB::A1-FE */ 0xe34e, 0xe34f, 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, 0xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe37f, 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab, }; static const Py_UNICODE __gb18030_decmap_FC[94] = { /* FC::A1-FE */ 0xe3ac, 0xe3ad, 0xe3ae, 0xe3af, 0xe3b0, 0xe3b1, 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5, 0xe3b6, 0xe3b7, 0xe3b8, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be, 0xe3bf, 0xe3c0, 0xe3c1, 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, 0xe3c6, 0xe3c7, 0xe3c8, 0xe3c9, 0xe3ca, 0xe3cb, 0xe3cc, 0xe3cd, 0xe3ce, 0xe3cf, 0xe3d0, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xe3d5, 0xe3d6, 0xe3d7, 0xe3d8, 0xe3d9, 0xe3da, 0xe3db, 0xe3dc, 0xe3dd, 0xe3de, 0xe3df, 0xe3e0, 0xe3e1, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5, 0xe3e6, 0xe3e7, 0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ec, 0xe3ed, 0xe3ee, 0xe3ef, 0xe3f0, 0xe3f1, 0xe3f2, 0xe3f3, 0xe3f4, 0xe3f5, 0xe3f6, 0xe3f7, 0xe3f8, 0xe3f9, 0xe3fa, 0xe3fb, 0xe3fc, 0xe3fd, 0xe3fe, 0xe3ff, 0xe400, 0xe401, 0xe402, 0xe403, 0xe404, 0xe405, 0xe406, 0xe407, 0xe408, 0xe409, }; static const Py_UNICODE __gb18030_decmap_FD[94] = { /* FD::A1-FE */ 0xe40a, 0xe40b, 0xe40c, 0xe40d, 0xe40e, 0xe40f, 0xe410, 0xe411, 0xe412, 0xe413, 0xe414, 0xe415, 0xe416, 0xe417, 0xe418, 0xe419, 0xe41a, 0xe41b, 0xe41c, 0xe41d, 0xe41e, 0xe41f, 0xe420, 0xe421, 0xe422, 0xe423, 0xe424, 0xe425, 0xe426, 0xe427, 0xe428, 0xe429, 0xe42a, 0xe42b, 0xe42c, 0xe42d, 0xe42e, 0xe42f, 0xe430, 0xe431, 0xe432, 0xe433, 0xe434, 0xe435, 0xe436, 0xe437, 0xe438, 0xe439, 0xe43a, 0xe43b, 0xe43c, 0xe43d, 0xe43e, 0xe43f, 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xe446, 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, 0xe466, 0xe467, }; static const Py_UNICODE __gb18030_decmap_FE[175] = { /* FE::50-FE */ 0x2e81, 0xe816, 0xe817, 0xe818, 0x2e84, 0x3473, 0x3447, 0x2e88, 0x2e8b, 0xe81e, 0x359e, 0x361a, 0x360e, 0x2e8c, 0x2e97, 0x396e, 0x3918, 0xe826, 0x39cf, 0x39df, 0x3a73, 0x39d0, 0xe82b, 0xe82c, 0x3b4e, 0x3c6e, 0x3ce0, 0x2ea7, 0xe831, 0xe832, 0x2eaa, 0x4056, 0x415f, 0x2eae, 0x4337, 0x2eb3, 0x2eb6, 0x2eb7, 0xe83b, 0x43b1, 0x43ac, 0x2ebb, 0x43dd, 0x44d6, 0x4661, 0x464c, 0xe843, UNIINV, 0x4723, 0x4729, 0x477c, 0x478d, 0x2eca, 0x4947, 0x497a, 0x497d, 0x4982, 0x4983, 0x4985, 0x4986, 0x499f, 0x499b, 0x49b7, 0x49b6, 0xe854, 0xe855, 0x4ca3, 0x4c9f, 0x4ca0, 0x4ca1, 0x4c77, 0x4ca2, 0x4d13, 0x4d14, 0x4d15, 0x4d16, 0x4d17, 0x4d18, 0x4d19, 0x4dae, 0xe864, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, 0xe47e, 0xe47f, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, 0xe49f, 0xe4a0, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, 0xe4a6, 0xe4a7, 0xe4a8, 0xe4a9, 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, 0xe4ae, 0xe4af, 0xe4b0, 0xe4b1, 0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba, 0xe4bb, 0xe4bc, 0xe4bd, 0xe4be, 0xe4bf, 0xe4c0, 0xe4c1, 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5, }; static const struct dbcs_index gb18030_decmap[128] = { /* 0x80 */ {0, 0, 0}, /* 0x81 */ {0, 0, 0}, /* 0x82 */ {0, 0, 0}, /* 0x83 */ {0, 0, 0}, /* 0x84 */ {0, 0, 0}, /* 0x85 */ {0, 0, 0}, /* 0x86 */ {0, 0, 0}, /* 0x87 */ {0, 0, 0}, /* 0x88 */ {0, 0, 0}, /* 0x89 */ {0, 0, 0}, /* 0x8A */ {0, 0, 0}, /* 0x8B */ {0, 0, 0}, /* 0x8C */ {0, 0, 0}, /* 0x8D */ {0, 0, 0}, /* 0x8E */ {0, 0, 0}, /* 0x8F */ {0, 0, 0}, /* 0x90 */ {0, 0, 0}, /* 0x91 */ {0, 0, 0}, /* 0x92 */ {0, 0, 0}, /* 0x93 */ {0, 0, 0}, /* 0x94 */ {0, 0, 0}, /* 0x95 */ {0, 0, 0}, /* 0x96 */ {0, 0, 0}, /* 0x97 */ {0, 0, 0}, /* 0x98 */ {0, 0, 0}, /* 0x99 */ {0, 0, 0}, /* 0x9A */ {0, 0, 0}, /* 0x9B */ {0, 0, 0}, /* 0x9C */ {0, 0, 0}, /* 0x9D */ {0, 0, 0}, /* 0x9E */ {0, 0, 0}, /* 0x9F */ {0, 0, 0}, /* 0xA0 */ {0, 0, 0}, /* 0xA1 */ {__gb18030_decmap_A1, 0x40, 0xa0}, /* 0xA2 */ {__gb18030_decmap_A2, 0x40, 0xfe}, /* 0xA3 */ {__gb18030_decmap_A3, 0x40, 0xa0}, /* 0xA4 */ {__gb18030_decmap_A4, 0x40, 0xfe}, /* 0xA5 */ {__gb18030_decmap_A5, 0x40, 0xfe}, /* 0xA6 */ {__gb18030_decmap_A6, 0x40, 0xfe}, /* 0xA7 */ {__gb18030_decmap_A7, 0x40, 0xfe}, /* 0xA8 */ {__gb18030_decmap_A8, 0x96, 0xfe}, /* 0xA9 */ {__gb18030_decmap_A9, 0x58, 0xfe}, /* 0xAA */ {__gb18030_decmap_AA, 0xa1, 0xfe}, /* 0xAB */ {__gb18030_decmap_AB, 0xa1, 0xfe}, /* 0xAC */ {__gb18030_decmap_AC, 0xa1, 0xfe}, /* 0xAD */ {__gb18030_decmap_AD, 0xa1, 0xfe}, /* 0xAE */ {__gb18030_decmap_AE, 0xa1, 0xfe}, /* 0xAF */ {__gb18030_decmap_AF, 0xa1, 0xfe}, /* 0xB0 */ {0, 0, 0}, /* 0xB1 */ {0, 0, 0}, /* 0xB2 */ {0, 0, 0}, /* 0xB3 */ {0, 0, 0}, /* 0xB4 */ {0, 0, 0}, /* 0xB5 */ {0, 0, 0}, /* 0xB6 */ {0, 0, 0}, /* 0xB7 */ {0, 0, 0}, /* 0xB8 */ {0, 0, 0}, /* 0xB9 */ {0, 0, 0}, /* 0xBA */ {0, 0, 0}, /* 0xBB */ {0, 0, 0}, /* 0xBC */ {0, 0, 0}, /* 0xBD */ {0, 0, 0}, /* 0xBE */ {0, 0, 0}, /* 0xBF */ {0, 0, 0}, /* 0xC0 */ {0, 0, 0}, /* 0xC1 */ {0, 0, 0}, /* 0xC2 */ {0, 0, 0}, /* 0xC3 */ {0, 0, 0}, /* 0xC4 */ {0, 0, 0}, /* 0xC5 */ {0, 0, 0}, /* 0xC6 */ {0, 0, 0}, /* 0xC7 */ {0, 0, 0}, /* 0xC8 */ {0, 0, 0}, /* 0xC9 */ {0, 0, 0}, /* 0xCA */ {0, 0, 0}, /* 0xCB */ {0, 0, 0}, /* 0xCC */ {0, 0, 0}, /* 0xCD */ {0, 0, 0}, /* 0xCE */ {0, 0, 0}, /* 0xCF */ {0, 0, 0}, /* 0xD0 */ {0, 0, 0}, /* 0xD1 */ {0, 0, 0}, /* 0xD2 */ {0, 0, 0}, /* 0xD3 */ {0, 0, 0}, /* 0xD4 */ {0, 0, 0}, /* 0xD5 */ {0, 0, 0}, /* 0xD6 */ {0, 0, 0}, /* 0xD7 */ {__gb18030_decmap_D7, 0xfa, 0xfe}, /* 0xD8 */ {0, 0, 0}, /* 0xD9 */ {0, 0, 0}, /* 0xDA */ {0, 0, 0}, /* 0xDB */ {0, 0, 0}, /* 0xDC */ {0, 0, 0}, /* 0xDD */ {0, 0, 0}, /* 0xDE */ {0, 0, 0}, /* 0xDF */ {0, 0, 0}, /* 0xE0 */ {0, 0, 0}, /* 0xE1 */ {0, 0, 0}, /* 0xE2 */ {0, 0, 0}, /* 0xE3 */ {0, 0, 0}, /* 0xE4 */ {0, 0, 0}, /* 0xE5 */ {0, 0, 0}, /* 0xE6 */ {0, 0, 0}, /* 0xE7 */ {0, 0, 0}, /* 0xE8 */ {0, 0, 0}, /* 0xE9 */ {0, 0, 0}, /* 0xEA */ {0, 0, 0}, /* 0xEB */ {0, 0, 0}, /* 0xEC */ {0, 0, 0}, /* 0xED */ {0, 0, 0}, /* 0xEE */ {0, 0, 0}, /* 0xEF */ {0, 0, 0}, /* 0xF0 */ {0, 0, 0}, /* 0xF1 */ {0, 0, 0}, /* 0xF2 */ {0, 0, 0}, /* 0xF3 */ {0, 0, 0}, /* 0xF4 */ {0, 0, 0}, /* 0xF5 */ {0, 0, 0}, /* 0xF6 */ {0, 0, 0}, /* 0xF7 */ {0, 0, 0}, /* 0xF8 */ {__gb18030_decmap_F8, 0xa1, 0xfe}, /* 0xF9 */ {__gb18030_decmap_F9, 0xa1, 0xfe}, /* 0xFA */ {__gb18030_decmap_FA, 0xa1, 0xfe}, /* 0xFB */ {__gb18030_decmap_FB, 0xa1, 0xfe}, /* 0xFC */ {__gb18030_decmap_FC, 0xa1, 0xfe}, /* 0xFD */ {__gb18030_decmap_FD, 0xa1, 0xfe}, /* 0xFE */ {__gb18030_decmap_FE, 0x50, 0xfe}, /* 0xFF */ {0, 0, 0}, }; 1.1 cjkcodecs/src/map_gb2312.c Index: map_gb2312.c =================================================================== /* * ACHTUNG: This is generated file automatically. Please do not edit. * * map_gb2312.c: GB2312 Map Provider * * Copyright (C) 2003 Hye-Shik Chang <pe...@Fr...>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $Id: map_gb2312.c,v 1.1 2003/05/16 12:06:31 perky Exp $ */ #include "Python.h" #include "cjkcommon.h" #include "map_gb2312.h" static DBCHAR *__encode_map[256]; static struct dbcs_map __map_entry = { "gb2312", __encode_map, gb2312_decmap }; static int init_maps(void) { const struct dbcs_index *umap; unsigned char c1, c2; int i; for (i = 0; i < 256; i++) __encode_map[i] = NULL; for (c1 = GB2312_C1_BOTTOM; c1 <= GB2312_C2_BOTTOM; c1++) { umap = &gb2312_decmap[c1 & 0x7f]; if (umap->map == NULL) continue; for (c2 = umap->bottom; c2 <= umap->top; c2++) { Py_UNICODE uni; int upage, i; uni = umap->map[c2 - umap->bottom]; if (uni == UNIINV) continue; upage = uni >> 8; if (__encode_map[upage] == NULL) { __encode_map[upage] = PyMem_New(DBCHAR, 256); if (__encode_map[upage] == NULL) goto errorexit; for (i = 0; i <= 255; i++) __encode_map[upage][i] = NOCHAR; } if (__encode_map[upage][uni & 0xff] == NOCHAR) __encode_map[upage][uni & 0xff] = c1 << 8 | c2; } } #ifdef GB2312_TWEAKUNIMAP GB2312_TWEAKUNIMAP(__encode_map); #endif return 0; errorexit: for (i = 0; i < 256; i++) { if (__encode_map[i] != NULL) PyMem_Del(__encode_map[i]); } return -1; } static struct PyMethodDef __methods[] = { {NULL, NULL}, }; void initmap_gb2312(void) { PyObject *m; m = Py_InitModule("map_gb2312", __methods); PyModule_AddObject(m, "__map", PyCObject_FromVoidPtr(&__map_entry, NULL)); if (PyErr_Occurred() || init_maps()) Py_FatalError("can't initialize the map_gb2312 module"); } /* * ex: ts=8 sts=4 et */ 1.1 cjkcodecs/src/map_gb2312.h Index: map_gb2312.h =================================================================== /* * $Id: map_gb2312.h,v 1.1 2003/05/16 12:06:31 perky Exp $ */ static const Py_UNICODE __gb2312_decmap_21[94] = { /* 21::21-7E */ 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003, 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a, 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312, 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d, 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4, 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, }; static const Py_UNICODE __gb2312_decmap_22[76] = { /* 22::31-7C */ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, UNIINV, UNIINV, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, UNIINV, UNIINV, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, }; static const Py_UNICODE __gb2312_decmap_23[94] = { /* 23::21-7E */ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3, }; static const Py_UNICODE __gb2312_decmap_24[83] = { /* 24::21-73 */ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, }; static const Py_UNICODE __gb2312_decmap_25[86] = { /* 25::21-76 */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, }; static const Py_UNICODE __gb2312_decmap_26[56] = { /* 26::21-58 */ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, }; static const Py_UNICODE __gb2312_decmap_27[81] = { /* 27::21-71 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, }; static const Py_UNICODE __gb2312_decmap_28[73] = { /* 28::21-69 */ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc, 0x00fc, 0x00ea, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, UNIINV, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, }; static const Py_UNICODE __gb2312_decmap_29[76] = { /* 29::24-6F */ 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, }; static const Py_UNICODE __gb2312_decmap_30[94] = { /* 30::21-7E */ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691, 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d, 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848, 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884, 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed, 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776, 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf, 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed, 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc, 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886, 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d, 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265, }; static const Py_UNICODE __gb2312_decmap_31[94] = { /* 31::21-7E */ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5, 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351, 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907, 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29, 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4, 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9, 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5, 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16, 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab, 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b, 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175, 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3, }; static const Py_UNICODE __gb2312_decmap_32[94] = { /* 32::21-7E */ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2, 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236, 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa, 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016, 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29, 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b, 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf, 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7, 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336, 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6, 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20, 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316, }; static const Py_UNICODE __gb2312_decmap_33[94] = { /* 33::21-7E */ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e, 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632, 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3, 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1, 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59, 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f, 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60, 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64, 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0, 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7, 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8, 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a, }; static const Py_UNICODE __gb2312_decmap_34[94] = { /* 34::21-7E */ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd, 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97, 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524, 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822, 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148, 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471, 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07, 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106, 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb, 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26, 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e, }; static const Py_UNICODE __gb2312_decmap_35[94] = { /* 35::21-7E */ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6, 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb, 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48, 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053, 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49, 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c, 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730, 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382, 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43, 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc, 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc, 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0, }; static const Py_UNICODE __gb2312_decmap_36[94] = { /* 36::21-7E */ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a, 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b, 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661, 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec, 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6, 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e, 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566, 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a, 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0, 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25, 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c, 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c, }; static const Py_UNICODE __gb2312_decmap_37[94] = { /* 37::21-7E */ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5, 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492, 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af, 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632, 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561, 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8, 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f, 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa, 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af, 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b, 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90, 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d, }; static const Py_UNICODE __gb2312_decmap_38[94] = { /* 38::21-7E */ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85, 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74, 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236, 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490, 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89, 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f, 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b, 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f, 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c, 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b, 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9, 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9, }; static const Py_UNICODE __gb2312_decmap_39[94] = { /* 39::21-7E */ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a, 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1, 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2, 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30, 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37, 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250, 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173, 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c, 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845, 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842, 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505, 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8, }; static const Py_UNICODE __gb2312_decmap_3A[94] = { /* 3A::21-7E */ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163, 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a, 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a, 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a, 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d, 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2, 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a, 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8, 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f, 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c, 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6, 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56, }; static const Py_UNICODE __gb2312_decmap_3B[94] = { /* 3B::21-7E */ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1, 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd, 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853, 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115, 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757, 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d, 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de, 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd, 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f, 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b, 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e, 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95, }; static const Py_UNICODE __gb2312_decmap_3C[94] = { /* 3C::21-7E */ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9, 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca, 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0, 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d, 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2, 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939, 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be, 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1, 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270, 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3, 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274, 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6, }; static const Py_UNICODE __gb2312_decmap_3D[94] = { /* 3D::21-7E */ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa, 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868, 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901, 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc, 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a, 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb, 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a, 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01, 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f, 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1, 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb, 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78, }; static const Py_UNICODE __gb2312_decmap_3E[94] = { /* 3E::21-7E */ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8, 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f, 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756, 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0, 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551, 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8, 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9, 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd, 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350, 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b, 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd, 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb, }; static const Py_UNICODE __gb2312_decmap_3F[94] = { /* 3F::21-7E */ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361, 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a, 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b, 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0... [truncated message content] |