]> git.proxmox.com Git - mirror_edk2.git/blobdiff - AppPkg/Applications/Python/Python-2.7.10/Modules/cjkcodecs/multibytecodec.h
AppPkg/Applications/Python/Python-2.7.10: Initial Checkin part 2/5.
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.10 / Modules / cjkcodecs / multibytecodec.h
diff --git a/AppPkg/Applications/Python/Python-2.7.10/Modules/cjkcodecs/multibytecodec.h b/AppPkg/Applications/Python/Python-2.7.10/Modules/cjkcodecs/multibytecodec.h
new file mode 100644 (file)
index 0000000..2efa037
--- /dev/null
@@ -0,0 +1,141 @@
+/*\r
+ * multibytecodec.h: Common Multibyte Codec Implementation\r
+ *\r
+ * Written by Hye-Shik Chang <perky@FreeBSD.org>\r
+ */\r
+\r
+#ifndef _PYTHON_MULTIBYTECODEC_H_\r
+#define _PYTHON_MULTIBYTECODEC_H_\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#ifdef uint32_t\r
+typedef uint32_t ucs4_t;\r
+#else\r
+typedef unsigned int ucs4_t;\r
+#endif\r
+\r
+#ifdef uint16_t\r
+typedef uint16_t ucs2_t, DBCHAR;\r
+#else\r
+typedef unsigned short ucs2_t, DBCHAR;\r
+#endif\r
+\r
+typedef union {\r
+    void *p;\r
+    int i;\r
+    unsigned char c[8];\r
+    ucs2_t u2[4];\r
+    ucs4_t u4[2];\r
+} MultibyteCodec_State;\r
+\r
+typedef int (*mbcodec_init)(const void *config);\r
+typedef Py_ssize_t (*mbencode_func)(MultibyteCodec_State *state,\r
+                        const void *config,\r
+                        const Py_UNICODE **inbuf, Py_ssize_t inleft,\r
+                        unsigned char **outbuf, Py_ssize_t outleft,\r
+                        int flags);\r
+typedef int (*mbencodeinit_func)(MultibyteCodec_State *state,\r
+                                 const void *config);\r
+typedef Py_ssize_t (*mbencodereset_func)(MultibyteCodec_State *state,\r
+                        const void *config,\r
+                        unsigned char **outbuf, Py_ssize_t outleft);\r
+typedef Py_ssize_t (*mbdecode_func)(MultibyteCodec_State *state,\r
+                        const void *config,\r
+                        const unsigned char **inbuf, Py_ssize_t inleft,\r
+                        Py_UNICODE **outbuf, Py_ssize_t outleft);\r
+typedef int (*mbdecodeinit_func)(MultibyteCodec_State *state,\r
+                                 const void *config);\r
+typedef Py_ssize_t (*mbdecodereset_func)(MultibyteCodec_State *state,\r
+                                         const void *config);\r
+\r
+typedef struct {\r
+    const char *encoding;\r
+    const void *config;\r
+    mbcodec_init codecinit;\r
+    mbencode_func encode;\r
+    mbencodeinit_func encinit;\r
+    mbencodereset_func encreset;\r
+    mbdecode_func decode;\r
+    mbdecodeinit_func decinit;\r
+    mbdecodereset_func decreset;\r
+} MultibyteCodec;\r
+\r
+typedef struct {\r
+    PyObject_HEAD\r
+    MultibyteCodec *codec;\r
+} MultibyteCodecObject;\r
+\r
+#define MultibyteCodec_Check(op) ((op)->ob_type == &MultibyteCodec_Type)\r
+\r
+#define _MultibyteStatefulCodec_HEAD            \\r
+    PyObject_HEAD                               \\r
+    MultibyteCodec *codec;                      \\r
+    MultibyteCodec_State state;                 \\r
+    PyObject *errors;\r
+typedef struct {\r
+    _MultibyteStatefulCodec_HEAD\r
+} MultibyteStatefulCodecContext;\r
+\r
+#define MAXENCPENDING   2\r
+#define _MultibyteStatefulEncoder_HEAD          \\r
+    _MultibyteStatefulCodec_HEAD                \\r
+    Py_UNICODE pending[MAXENCPENDING];          \\r
+    Py_ssize_t pendingsize;\r
+typedef struct {\r
+    _MultibyteStatefulEncoder_HEAD\r
+} MultibyteStatefulEncoderContext;\r
+\r
+#define MAXDECPENDING   8\r
+#define _MultibyteStatefulDecoder_HEAD          \\r
+    _MultibyteStatefulCodec_HEAD                \\r
+    unsigned char pending[MAXDECPENDING];       \\r
+    Py_ssize_t pendingsize;\r
+typedef struct {\r
+    _MultibyteStatefulDecoder_HEAD\r
+} MultibyteStatefulDecoderContext;\r
+\r
+typedef struct {\r
+    _MultibyteStatefulEncoder_HEAD\r
+} MultibyteIncrementalEncoderObject;\r
+\r
+typedef struct {\r
+    _MultibyteStatefulDecoder_HEAD\r
+} MultibyteIncrementalDecoderObject;\r
+\r
+typedef struct {\r
+    _MultibyteStatefulDecoder_HEAD\r
+    PyObject *stream;\r
+} MultibyteStreamReaderObject;\r
+\r
+typedef struct {\r
+    _MultibyteStatefulEncoder_HEAD\r
+    PyObject *stream;\r
+} MultibyteStreamWriterObject;\r
+\r
+/* positive values for illegal sequences */\r
+#define MBERR_TOOSMALL          (-1) /* insufficient output buffer space */\r
+#define MBERR_TOOFEW            (-2) /* incomplete input buffer */\r
+#define MBERR_INTERNAL          (-3) /* internal runtime error */\r
+\r
+#define ERROR_STRICT            (PyObject *)(1)\r
+#define ERROR_IGNORE            (PyObject *)(2)\r
+#define ERROR_REPLACE           (PyObject *)(3)\r
+#define ERROR_ISCUSTOM(p)       ((p) < ERROR_STRICT || ERROR_REPLACE < (p))\r
+#define ERROR_DECREF(p) do {                    \\r
+    if (p != NULL && ERROR_ISCUSTOM(p)) {       \\r
+        Py_DECREF(p);                           \\r
+    }                                           \\r
+} while (0);\r
+\r
+#define MBENC_FLUSH             0x0001 /* encode all characters encodable */\r
+#define MBENC_MAX               MBENC_FLUSH\r
+\r
+#define PyMultibyteCodec_CAPSULE_NAME "multibytecodec.__map_*"\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+#endif\r