annotate Include/unicodeobject.h @ 15164:8930ec3bc00a legacy-trunk

Added additional test cases for pulldom modifications.
author Lars Gustäbel <lars@gustaebel.de>
date Wed, 11 Oct 2000 22:36:00 +0000
parents 03fa40528d17
children b44ba7c01217
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 #ifndef Py_UNICODEOBJECT_H
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 #define Py_UNICODEOBJECT_H
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 /*
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 Unicode implementation based on original code by Fredrik Lundh,
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 modified by Marc-Andre Lemburg (mal@lemburg.com) according to the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 Unicode Integration Proposal (see file Misc/unicode.txt).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
13828
254f8b7c4a83 Changing the CNRI copyright notice according to CNRI's instructions.
Guido van Rossum <guido@python.org>
parents: 13661
diff changeset
10 Copyright (c) Corporation for National Research Initiatives.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 Original header:
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 --------------------------------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 * Yet another Unicode string type for Python. This type supports the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 * 16-bit Basic Multilingual Plane (BMP) only.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 * Written by Fredrik Lundh, January 1999.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 * Copyright (c) 1999 by Secret Labs AB.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 * Copyright (c) 1999 by Fredrik Lundh.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 * fredrik@pythonware.com
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 * http://www.pythonware.com
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 * --------------------------------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 * This Unicode String Type is
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 * Copyright (c) 1999 by Secret Labs AB
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 * Copyright (c) 1999 by Fredrik Lundh
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 * By obtaining, using, and/or copying this software and/or its
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 * associated documentation, you agree that you have read, understood,
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 * and will comply with the following terms and conditions:
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 * Permission to use, copy, modify, and distribute this software and its
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 * associated documentation for any purpose and without fee is hereby
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 * granted, provided that the above copyright notice appears in all
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 * copies, and that both that copyright notice and this permission notice
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 * appear in supporting documentation, and that the name of Secret Labs
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 * AB or the author not be used in advertising or publicity pertaining to
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 * distribution of the software without specific, written prior
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 * permission.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 * SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 * FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 * -------------------------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
54
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 #include "ctype.h"
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
56
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 /* === Internal API ======================================================= */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
58
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 /* --- Internal Unicode Format -------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
60
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 /* Set these flags if the platform has "wchar.h", "wctype.h" and the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 wchar_t type is a 16-bit unsigned type */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 /* #define HAVE_WCHAR_H */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 /* #define HAVE_USABLE_WCHAR_T */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
65
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 /* Defaults for various platforms */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 #ifndef HAVE_USABLE_WCHAR_T
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
68
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 /* Windows has a usable wchar_t type */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 # if defined(MS_WIN32)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 # define HAVE_USABLE_WCHAR_T
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 # endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
73
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 /* If the compiler provides a wchar_t type we try to support it
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 through the interface functions PyUnicode_FromWideChar() and
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 PyUnicode_AsWideChar(). */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
79
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 #ifdef HAVE_USABLE_WCHAR_T
13917
03fa40528d17 Added #fndef's to avoid compiler errors.
Marc-André Lemburg <mal@egenix.com>
parents: 13837
diff changeset
81 # ifndef HAVE_WCHAR_H
03fa40528d17 Added #fndef's to avoid compiler errors.
Marc-André Lemburg <mal@egenix.com>
parents: 13837
diff changeset
82 # define HAVE_WCHAR_H
03fa40528d17 Added #fndef's to avoid compiler errors.
Marc-André Lemburg <mal@egenix.com>
parents: 13837
diff changeset
83 # endif
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
85
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 #ifdef HAVE_WCHAR_H
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
87 /* Work around a cosmetic bug in BSDI 4.x wchar.h; thanks to Thomas Wouters */
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
88 # ifdef _HAVE_BSDI
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
89 # include <time.h>
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
90 # endif
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 # include "wchar.h"
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
93
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 #ifdef HAVE_USABLE_WCHAR_T
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
95
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 /* If the compiler defines whcar_t as a 16-bit unsigned type we can
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 use the compiler type directly. Works fine with all modern Windows
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 platforms. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
99
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 typedef wchar_t Py_UNICODE;
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
101
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 #else
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
103
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 /* Use if you have a standard ANSI compiler, without wchar_t support.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 If a short is not 16 bits on your platform, you have to fix the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 typedef below, or the module initialization code will complain. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
107
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 typedef unsigned short Py_UNICODE;
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
109
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
111
13393
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
112 /*
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
113 * Use this typedef when you need to represent a UTF-16 surrogate pair
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
114 * as single unsigned integer.
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
115 */
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
116 #if SIZEOF_INT >= 4
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
117 typedef unsigned int Py_UCS4;
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
118 #elif SIZEOF_LONG >= 4
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
119 typedef unsigned long Py_UCS4;
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
120 #endif
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
121
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
122
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 /* --- Internal Unicode Operations ---------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
124
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 /* If you want Python to use the compiler's wctype.h functions instead
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
126 of the ones supplied with Python, define WANT_WCTYPE_FUNCTIONS or
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
127 configure Python using --with-ctype-functions. This reduces the
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
128 interpreter's code size. */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
129
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 #if defined(HAVE_USABLE_WCHAR_T) && defined(WANT_WCTYPE_FUNCTIONS)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
131
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 #include "wctype.h"
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
133
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 #define Py_UNICODE_ISSPACE(ch) iswspace(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
135
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 #define Py_UNICODE_ISLOWER(ch) iswlower(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 #define Py_UNICODE_ISUPPER(ch) iswupper(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 #define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 #define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
140
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 #define Py_UNICODE_TOLOWER(ch) towlower(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 #define Py_UNICODE_TOUPPER(ch) towupper(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 #define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
144
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 #define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 #define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 #define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
148
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 #define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 #define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 #define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
152
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
153 #define Py_UNICODE_ISALPHA(ch) iswalpha(ch)
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
154
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 #else
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
156
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 #define Py_UNICODE_ISSPACE(ch) _PyUnicode_IsWhitespace(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
158
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 #define Py_UNICODE_ISLOWER(ch) _PyUnicode_IsLowercase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 #define Py_UNICODE_ISUPPER(ch) _PyUnicode_IsUppercase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 #define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 #define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
163
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 #define Py_UNICODE_TOLOWER(ch) _PyUnicode_ToLowercase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 #define Py_UNICODE_TOUPPER(ch) _PyUnicode_ToUppercase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 #define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
167
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 #define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 #define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 #define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
171
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 #define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 #define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 #define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
175
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
176 #define Py_UNICODE_ISALPHA(ch) _PyUnicode_IsAlpha(ch)
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
177
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
178 #endif
13320
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
179
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
180 #define Py_UNICODE_ISALNUM(ch) \
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
181 (Py_UNICODE_ISALPHA(ch) || \
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
182 Py_UNICODE_ISDECIMAL(ch) || \
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
183 Py_UNICODE_ISDIGIT(ch) || \
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
184 Py_UNICODE_ISNUMERIC(ch))
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
185
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 #define Py_UNICODE_COPY(target, source, length)\
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 (memcpy((target), (source), (length)*sizeof(Py_UNICODE)))
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
188
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 #define Py_UNICODE_FILL(target, value, length) do\
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 {int i; for (i = 0; i < (length); i++) (target)[i] = (value);}\
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 while (0)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
192
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 #define Py_UNICODE_MATCH(string, offset, substring)\
12956
dc0a212fb353 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents: 12643
diff changeset
194 ((*((string)->str + (offset)) == *((substring)->str)) &&\
dc0a212fb353 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents: 12643
diff changeset
195 !memcmp((string)->str + (offset), (substring)->str,\
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 (substring)->length*sizeof(Py_UNICODE)))
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
197
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
198 #ifdef __cplusplus
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
199 extern "C" {
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
200 #endif
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
201
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 /* --- Unicode Type ------------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
203
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 typedef struct {
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 PyObject_HEAD
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 int length; /* Length of raw Unicode data in buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 Py_UNICODE *str; /* Raw Unicode buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 long hash; /* Hash value; -1 if not set */
13837
2badb322355f This patch finalizes the move from UTF-8 to a default encoding in
Marc-André Lemburg <mal@egenix.com>
parents: 13828
diff changeset
209 PyObject *defenc; /* (Default) Encoded version as Python
2badb322355f This patch finalizes the move from UTF-8 to a default encoding in
Marc-André Lemburg <mal@egenix.com>
parents: 13828
diff changeset
210 string, or NULL; this is used for
2badb322355f This patch finalizes the move from UTF-8 to a default encoding in
Marc-André Lemburg <mal@egenix.com>
parents: 13828
diff changeset
211 implementing the buffer protocol */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 } PyUnicodeObject;
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
213
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 extern DL_IMPORT(PyTypeObject) PyUnicode_Type;
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
215
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
216 #define PyUnicode_Check(op) (((op)->ob_type == &PyUnicode_Type))
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
217
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 /* Fast access macros */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 #define PyUnicode_GET_SIZE(op) \
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 (((PyUnicodeObject *)(op))->length)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 #define PyUnicode_GET_DATA_SIZE(op) \
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 (((PyUnicodeObject *)(op))->length * sizeof(Py_UNICODE))
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 #define PyUnicode_AS_UNICODE(op) \
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
224 (((PyUnicodeObject *)(op))->str)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 #define PyUnicode_AS_DATA(op) \
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 ((const char *)((PyUnicodeObject *)(op))->str)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
227
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
228 /* --- Constants ---------------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
229
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 /* This Unicode character will be used as replacement character during
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 decoding if the errors argument is set to "replace". Note: the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 Unicode character U+FFFD is the official REPLACEMENT CHARACTER in
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 Unicode 3.0. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
234
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 #define Py_UNICODE_REPLACEMENT_CHARACTER ((Py_UNICODE) 0xFFFD)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
236
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 /* === Public API ========================================================= */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
238
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 /* --- Plain Py_UNICODE --------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
240
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
241 /* Create a Unicode Object from the Py_UNICODE buffer u of the given
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 size. u may be NULL which causes the contents to be undefined. It
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 is the user's responsibility to fill in the needed data.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
244
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 The buffer is copied into the new object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
246
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 extern DL_IMPORT(PyObject*) PyUnicode_FromUnicode(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 const Py_UNICODE *u, /* Unicode buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 int size /* size of buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
251
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
252 /* Return a read-only pointer to the Unicode object's internal
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 Py_UNICODE buffer. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
254
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 extern DL_IMPORT(Py_UNICODE *) PyUnicode_AsUnicode(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
256 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
258
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 /* Get the length of the Unicode object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
260
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 extern DL_IMPORT(int) PyUnicode_GetSize(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
263 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
264
12326
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
265 /* Resize an already allocated Unicode object to the new size length.
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
266
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
267 *unicode is modified to point to the new (resized) object and 0
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
268 returned on success.
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
269
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
270 This API may only be called by the function which also called the
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
271 Unicode constructor. The refcount on the object must be 1. Otherwise,
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
272 an error is returned.
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
273
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
274 Error handling is implemented as follows: an exception is set, -1
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
275 is returned and *unicode left untouched.
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
276
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
277 */
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
278
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
279 extern DL_IMPORT(int) PyUnicode_Resize(
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
280 PyObject **unicode, /* Pointer to the Unicode object */
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
281 int length /* New length */
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
282 );
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
283
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
284 /* Coerce obj to an Unicode object and return a reference with
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 *incremented* refcount.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
286
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 Coercion is done in the following way:
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
288
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 1. Unicode objects are passed back as-is with incremented
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 refcount.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
291
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
292 2. String and other char buffer compatible objects are decoded
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
293 under the assumptions that they contain data using the current
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
294 default encoding. Decoding is done in "strict" mode.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
295
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 3. All other objects raise an exception.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
297
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 The API returns NULL in case of an error. The caller is responsible
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 for decref'ing the returned objects.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
300
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
301 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
302
13401
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
303 extern DL_IMPORT(PyObject*) PyUnicode_FromEncodedObject(
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
304 register PyObject *obj, /* Object */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
305 const char *encoding, /* encoding */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
306 const char *errors /* error handling */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
307 );
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
308
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
309 /* Shortcut for PyUnicode_FromEncodedObject(obj, NULL, "strict");
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
310 which results in using the default encoding as basis for
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
311 decoding the object.
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
312
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
313 Coerces obj to an Unicode object and return a reference with
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
314 *incremented* refcount.
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
315
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
316 The API returns NULL in case of an error. The caller is responsible
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
317 for decref'ing the returned objects.
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
318
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
319 */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
320
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 extern DL_IMPORT(PyObject*) PyUnicode_FromObject(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 register PyObject *obj /* Object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
323 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
324
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 /* --- wchar_t support for platforms which support it --------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
326
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 #ifdef HAVE_WCHAR_H
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
328
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 /* Create a Unicode Object from the whcar_t buffer w of the given
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
330 size.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
331
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 The buffer is copied into the new object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
333
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
334 extern DL_IMPORT(PyObject*) PyUnicode_FromWideChar(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 register const wchar_t *w, /* wchar_t buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
336 int size /* size of buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
338
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 /* Copies the Unicode Object contents into the whcar_t buffer w. At
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 most size wchar_t characters are copied.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
341
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 Returns the number of wchar_t characters copied or -1 in case of an
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 error. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
344
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
345 extern DL_IMPORT(int) PyUnicode_AsWideChar(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
346 PyUnicodeObject *unicode, /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
347 register wchar_t *w, /* wchar_t buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
348 int size /* size of buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
349 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
350
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
352
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 /* === Builtin Codecs =====================================================
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
354
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 Many of these APIs take two arguments encoding and errors. These
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
356 parameters encoding and errors have the same semantics as the ones
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
357 of the builtin unicode() API.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
358
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
359 Setting encoding to NULL causes the default encoding to be used.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
360
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 Error handling is set by errors which may also be set to NULL
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
362 meaning to use the default handling defined for the codec. Default
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
363 error handling for all builtin codecs is "strict" (ValueErrors are
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 raised).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
365
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 The codecs all use a similar interface. Only deviation from the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 generic ones are documented.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
368
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
369 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
370
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
371 /* --- Manage the default encoding ---------------------------------------- */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
372
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
373 /* Returns the currently active default encoding.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
374
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
375 The default encoding is currently implemented as run-time settable
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
376 process global. This may change in future versions of the
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
377 interpreter to become a parameter which is managed on a per-thread
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
378 basis.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
379
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
380 */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
381
13661
ef25f32c4523 ANSIfications: fix empty arglists, and remove the checks for
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
382 extern DL_IMPORT(const char*) PyUnicode_GetDefaultEncoding(void);
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
383
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
384 /* Sets the currently active default encoding.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
385
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
386 Returns 0 on success, -1 in case of an error.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
387
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
388 */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
389
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
390 extern DL_IMPORT(int) PyUnicode_SetDefaultEncoding(
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
391 const char *encoding /* Encoding name in standard form */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
392 );
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
393
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
394 /* --- Generic Codecs ----------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
395
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
396 /* Create a Unicode object by decoding the encoded string s of the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
397 given size. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
398
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
399 extern DL_IMPORT(PyObject*) PyUnicode_Decode(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
400 const char *s, /* encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 int size, /* size of buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
402 const char *encoding, /* encoding */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
403 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
404 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
405
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
406 /* Encodes a Py_UNICODE buffer of the given size and returns a
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
407 Python string object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
408
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
409 extern DL_IMPORT(PyObject*) PyUnicode_Encode(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
410 const Py_UNICODE *s, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
411 int size, /* number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
412 const char *encoding, /* encoding */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
413 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
414 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
415
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
416 /* Encodes a Unicode object and returns the result as Python string
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
417 object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
418
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
419 extern DL_IMPORT(PyObject*) PyUnicode_AsEncodedString(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 PyObject *unicode, /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
421 const char *encoding, /* encoding */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
422 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
423 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
424
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
425 /* --- UTF-8 Codecs ------------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
426
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
427 extern DL_IMPORT(PyObject*) PyUnicode_DecodeUTF8(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 const char *string, /* UTF-8 encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
430 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
431 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
432
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
433 extern DL_IMPORT(PyObject*) PyUnicode_AsUTF8String(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
434 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
435 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
436
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
437 extern DL_IMPORT(PyObject*) PyUnicode_EncodeUTF8(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 int length, /* number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
440 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
442
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 /* --- UTF-16 Codecs ------------------------------------------------------ */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
444
12248
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
445 /* Decodes length bytes from a UTF-16 encoded buffer string and returns
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 the corresponding Unicode object.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
447
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 errors (if non-NULL) defines the error handling. It defaults
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
449 to "strict".
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
450
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
451 If byteorder is non-NULL, the decoder starts decoding using the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 given byte order:
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
453
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
454 *byteorder == -1: little endian
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
455 *byteorder == 0: native order
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
456 *byteorder == 1: big endian
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
457
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
458 and then switches according to all BOM marks it finds in the input
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 data. BOM marks are not copied into the resulting Unicode string.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 After completion, *byteorder is set to the current byte order at
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 the end of input data.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
462
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
463 If byteorder is NULL, the codec starts in native order mode.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
464
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
466
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
467 extern DL_IMPORT(PyObject*) PyUnicode_DecodeUTF16(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 const char *string, /* UTF-16 encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
469 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
470 const char *errors, /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
471 int *byteorder /* pointer to byteorder to use
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
472 0=native;-1=LE,1=BE; updated on
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
473 exit */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
475
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
476 /* Returns a Python string using the UTF-16 encoding in native byte
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
477 order. The string always starts with a BOM mark. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
478
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
479 extern DL_IMPORT(PyObject*) PyUnicode_AsUTF16String(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
480 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
481 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
482
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
483 /* Returns a Python string object holding the UTF-16 encoded value of
12248
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
484 the Unicode data.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
485
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 If byteorder is not 0, output is written according to the following
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
487 byte order:
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
488
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
489 byteorder == -1: little endian
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
490 byteorder == 0: native byte order (writes a BOM mark)
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 byteorder == 1: big endian
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
492
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
493 If byteorder is 0, the output string will always start with the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
494 Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
495 prepended.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
496
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
497 Note that Py_UNICODE data is being interpreted as UTF-16 reduced to
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 UCS-2. This trick makes it possible to add full UTF-16 capabilities
13620
5b727ab37092 Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents: 13401
diff changeset
499 at a later point without compromising the APIs.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
500
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
501 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
502
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
503 extern DL_IMPORT(PyObject*) PyUnicode_EncodeUTF16(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
504 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
505 int length, /* number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
506 const char *errors, /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
507 int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
508 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
509
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
510 /* --- Unicode-Escape Codecs ---------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
511
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
512 extern DL_IMPORT(PyObject*) PyUnicode_DecodeUnicodeEscape(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 const char *string, /* Unicode-Escape encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
514 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
515 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
517
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
518 extern DL_IMPORT(PyObject*) PyUnicode_AsUnicodeEscapeString(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
519 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
520 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
521
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
522 extern DL_IMPORT(PyObject*) PyUnicode_EncodeUnicodeEscape(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
523 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 int length /* Number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
526
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
527 /* --- Raw-Unicode-Escape Codecs ------------------------------------------ */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
528
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
529 extern DL_IMPORT(PyObject*) PyUnicode_DecodeRawUnicodeEscape(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
530 const char *string, /* Raw-Unicode-Escape encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
531 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
532 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
533 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
534
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
535 extern DL_IMPORT(PyObject*) PyUnicode_AsRawUnicodeEscapeString(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
536 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
538
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
539 extern DL_IMPORT(PyObject*) PyUnicode_EncodeRawUnicodeEscape(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 int length /* Number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
542 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
543
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 /* --- Latin-1 Codecs -----------------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
545
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
546 Note: Latin-1 corresponds to the first 256 Unicode ordinals.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
547
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
548 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
549
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
550 extern DL_IMPORT(PyObject*) PyUnicode_DecodeLatin1(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
551 const char *string, /* Latin-1 encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
552 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
553 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
555
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
556 extern DL_IMPORT(PyObject*) PyUnicode_AsLatin1String(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
557 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
558 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
559
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
560 extern DL_IMPORT(PyObject*) PyUnicode_EncodeLatin1(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
561 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 int length, /* Number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
563 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
564 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
565
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
566 /* --- ASCII Codecs -------------------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
567
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
568 Only 7-bit ASCII data is excepted. All other codes generate errors.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
569
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
570 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
571
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
572 extern DL_IMPORT(PyObject*) PyUnicode_DecodeASCII(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
573 const char *string, /* ASCII encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
575 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
576 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
577
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
578 extern DL_IMPORT(PyObject*) PyUnicode_AsASCIIString(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
579 PyObject *unicode /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
581
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
582 extern DL_IMPORT(PyObject*) PyUnicode_EncodeASCII(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
583 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
584 int length, /* Number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
585 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
586 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
587
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
588 /* --- Character Map Codecs -----------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
589
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
590 This codec uses mappings to encode and decode characters.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
591
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
592 Decoding mappings must map single string characters to single
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
593 Unicode characters, integers (which are then interpreted as Unicode
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 ordinals) or None (meaning "undefined mapping" and causing an
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
595 error).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
596
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
597 Encoding mappings must map single Unicode characters to single
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 string characters, integers (which are then interpreted as Latin-1
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
599 ordinals) or None (meaning "undefined mapping" and causing an
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 error).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
601
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
602 If a character lookup fails with a LookupError, the character is
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
603 copied as-is meaning that its ordinal value will be interpreted as
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 Unicode or Latin-1 ordinal resp. Because of this mappings only need
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
605 to contain those mappings which map characters to different code
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 points.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
607
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
609
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
610 extern DL_IMPORT(PyObject*) PyUnicode_DecodeCharmap(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
611 const char *string, /* Encoded string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 int length, /* size of string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
613 PyObject *mapping, /* character mapping
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
614 (char ordinal -> unicode ordinal) */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
615 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
616 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
617
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
618 extern DL_IMPORT(PyObject*) PyUnicode_AsCharmapString(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
619 PyObject *unicode, /* Unicode object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
620 PyObject *mapping /* character mapping
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 (unicode ordinal -> char ordinal) */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
622 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
623
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
624 extern DL_IMPORT(PyObject*) PyUnicode_EncodeCharmap(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
625 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
626 int length, /* Number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
627 PyObject *mapping, /* character mapping
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
628 (unicode ordinal -> char ordinal) */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
629 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
630 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
631
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
632 /* Translate a Py_UNICODE buffer of the given length by applying a
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
633 character mapping table to it and return the resulting Unicode
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
634 object.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
635
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 The mapping table must map Unicode ordinal integers to Unicode
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
637 ordinal integers or None (causing deletion of the character).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
638
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
639 Mapping tables may be dictionaries or sequences. Unmapped character
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
640 ordinals (ones which cause a LookupError) are left untouched and
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
641 are copied as-is.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
642
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
643 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
644
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
645 extern DL_IMPORT(PyObject *) PyUnicode_TranslateCharmap(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
646 const Py_UNICODE *data, /* Unicode char buffer */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
647 int length, /* Number of Py_UNICODE chars to encode */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
648 PyObject *table, /* Translate table */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
649 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
650 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
651
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
652 #ifdef MS_WIN32
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
653
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
654 /* --- MBCS codecs for Windows -------------------------------------------- */
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
655
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
656 extern DL_IMPORT(PyObject*) PyUnicode_DecodeMBCS(
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
657 const char *string, /* MBCS encoded string */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
658 int length, /* size of string */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
659 const char *errors /* error handling */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
660 );
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
661
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
662 extern DL_IMPORT(PyObject*) PyUnicode_AsMBCSString(
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
663 PyObject *unicode /* Unicode object */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
664 );
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
665
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
666 extern DL_IMPORT(PyObject*) PyUnicode_EncodeMBCS(
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
667 const Py_UNICODE *data, /* Unicode char buffer */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
668 int length, /* Number of Py_UNICODE chars to encode */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
669 const char *errors /* error handling */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
670 );
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
671
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
672 #endif /* MS_WIN32 */
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
673
12248
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
674 /* --- Decimal Encoder ---------------------------------------------------- */
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
675
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
676 /* Takes a Unicode string holding a decimal value and writes it into
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
677 an output buffer using standard ASCII digit codes.
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
678
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
679 The output buffer has to provide at least length+1 bytes of storage
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
680 area. The output string is 0-terminated.
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
681
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
682 The encoder converts whitespace to ' ', decimal characters to their
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
683 corresponding ASCII digit and all other Latin-1 characters except
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
684 \0 as-is. Characters outside this range (Unicode ordinals 1-256)
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
685 are treated as errors. This includes embedded NULL bytes.
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
686
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
687 Error handling is defined by the errors argument:
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
688
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
689 NULL or "strict": raise a ValueError
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
690 "ignore": ignore the wrong characters (these are not copied to the
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
691 output buffer)
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
692 "replace": replaces illegal characters with '?'
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
693
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
694 Returns 0 on success, -1 on failure.
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
695
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
696 */
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
697
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
698 extern DL_IMPORT(int) PyUnicode_EncodeDecimal(
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
699 Py_UNICODE *s, /* Unicode buffer */
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
700 int length, /* Number of Py_UNICODE chars to encode */
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
701 char *output, /* Output buffer; must have size >= length */
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
702 const char *errors /* error handling */
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
703 );
70154e2e9c89 Marc-Andre's third try at this bulk patch seems to work (except that
Guido van Rossum <guido@python.org>
parents: 12074
diff changeset
704
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 /* --- Methods & Slots ----------------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
706
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 These are capable of handling Unicode objects and strings on input
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 (we refer to them as strings in the descriptions) and return
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 Unicode objects or integers as apporpriate. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
710
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 /* Concat two strings giving a new Unicode string. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
712
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 extern DL_IMPORT(PyObject*) PyUnicode_Concat(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 PyObject *left, /* Left string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
715 PyObject *right /* Right string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
717
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 /* Split a string giving a list of Unicode strings.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
719
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
720 If sep is NULL, splitting will be done at all whitespace
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
721 substrings. Otherwise, splits occur at the given separator.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
722
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
723 At most maxsplit splits will be done. If negative, no limit is set.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
724
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
725 Separators are not included in the resulting list.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
726
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
727 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
728
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
729 extern DL_IMPORT(PyObject*) PyUnicode_Split(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 PyObject *s, /* String to split */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
731 PyObject *sep, /* String separator */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 int maxsplit /* Maxsplit count */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
733 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
734
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
735 /* Dito, but split at line breaks.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
736
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
737 CRLF is considered to be one line break. Line breaks are not
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
738 included in the resulting list. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
739
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
740 extern DL_IMPORT(PyObject*) PyUnicode_Splitlines(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
741 PyObject *s, /* String to split */
12372
214303d32f76 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12326
diff changeset
742 int keepends /* If true, line end markers are included */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
743 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
744
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
745 /* Translate a string by applying a character mapping table to it and
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 return the resulting Unicode object.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
747
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
748 The mapping table must map Unicode ordinal integers to Unicode
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
749 ordinal integers or None (causing deletion of the character).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
750
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
751 Mapping tables may be dictionaries or sequences. Unmapped character
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
752 ordinals (ones which cause a LookupError) are left untouched and
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
753 are copied as-is.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
754
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
755 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
756
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 extern DL_IMPORT(PyObject *) PyUnicode_Translate(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
758 PyObject *str, /* String */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
759 PyObject *table, /* Translate table */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
760 const char *errors /* error handling */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
761 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
762
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
763 /* Join a sequence of strings using the given separator and return
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
764 the resulting Unicode string. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
765
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
766 extern DL_IMPORT(PyObject*) PyUnicode_Join(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
767 PyObject *separator, /* Separator string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
768 PyObject *seq /* Sequence object */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
769 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
770
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
771 /* Return 1 if substr matches str[start:end] at the given tail end, 0
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 otherwise. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
773
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
774 extern DL_IMPORT(int) PyUnicode_Tailmatch(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
775 PyObject *str, /* String */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
776 PyObject *substr, /* Prefix or Suffix string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
777 int start, /* Start index */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
778 int end, /* Stop index */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
779 int direction /* Tail end: -1 prefix, +1 suffix */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
780 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
781
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
782 /* Return the first position of substr in str[start:end] using the
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
783 given search direction or -1 if not found. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
784
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
785 extern DL_IMPORT(int) PyUnicode_Find(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
786 PyObject *str, /* String */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
787 PyObject *substr, /* Substring to find */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
788 int start, /* Start index */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
789 int end, /* Stop index */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
790 int direction /* Find direction: +1 forward, -1 backward */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
791 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
792
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
793 /* Count the number of occurrences of substr in str[start:end]. */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
794
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
795 extern DL_IMPORT(int) PyUnicode_Count(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
796 PyObject *str, /* String */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
797 PyObject *substr, /* Substring to count */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
798 int start, /* Start index */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
799 int end /* Stop index */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
800 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
801
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
802 /* Replace at most maxcount occurrences of substr in str with replstr
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
803 and return the resulting Unicode object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
804
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
805 extern DL_IMPORT(PyObject *) PyUnicode_Replace(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
806 PyObject *str, /* String */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
807 PyObject *substr, /* Substring to find */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
808 PyObject *replstr, /* Substring to replace */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
809 int maxcount /* Max. number of replacements to apply;
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
810 -1 = all */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
811 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
812
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
813 /* Compare two strings and return -1, 0, 1 for less than, equal,
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
814 greater than resp. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
815
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
816 extern DL_IMPORT(int) PyUnicode_Compare(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
817 PyObject *left, /* Left string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
818 PyObject *right /* Right string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
819 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
820
13620
5b727ab37092 Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents: 13401
diff changeset
821 /* Apply a argument tuple or dictionary to a format string and return
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
822 the resulting Unicode string. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
823
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
824 extern DL_IMPORT(PyObject *) PyUnicode_Format(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
825 PyObject *format, /* Format string */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
826 PyObject *args /* Argument tuple or dictionary */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
827 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
828
12002
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
829 /* Checks whether element is contained in container and return 1/0
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
830 accordingly.
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
831
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
832 element has to coerce to an one element Unicode string. -1 is
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
833 returned in case of an error. */
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
834
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
835 extern DL_IMPORT(int) PyUnicode_Contains(
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
836 PyObject *container, /* Container string */
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
837 PyObject *element /* Element string */
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
838 );
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
839
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
840 /* === Characters Type APIs =============================================== */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
841
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
842 /* These should not be used directly. Use the Py_UNICODE_IS* and
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
843 Py_UNICODE_TO* macros instead.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
844
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
845 These APIs are implemented in Objects/unicodectype.c.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
846
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
847 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
848
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
849 extern DL_IMPORT(int) _PyUnicode_IsLowercase(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
850 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
851 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
852
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
853 extern DL_IMPORT(int) _PyUnicode_IsUppercase(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
854 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
855 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
856
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 extern DL_IMPORT(int) _PyUnicode_IsTitlecase(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
858 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
859 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
860
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
861 extern DL_IMPORT(int) _PyUnicode_IsWhitespace(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
862 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
863 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
864
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
865 extern DL_IMPORT(int) _PyUnicode_IsLinebreak(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
866 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
867 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
868
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
869 extern DL_IMPORT(Py_UNICODE) _PyUnicode_ToLowercase(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
870 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
871 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
872
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
873 extern DL_IMPORT(Py_UNICODE) _PyUnicode_ToUppercase(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
874 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
875 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
876
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
877 extern DL_IMPORT(Py_UNICODE) _PyUnicode_ToTitlecase(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
878 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
879 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
880
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
881 extern DL_IMPORT(int) _PyUnicode_ToDecimalDigit(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
882 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
883 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
884
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
885 extern DL_IMPORT(int) _PyUnicode_ToDigit(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
886 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
887 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
888
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
889 extern DL_IMPORT(double) _PyUnicode_ToNumeric(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
890 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
891 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
892
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
893 extern DL_IMPORT(int) _PyUnicode_IsDecimalDigit(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
894 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
895 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
896
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
897 extern DL_IMPORT(int) _PyUnicode_IsDigit(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
898 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
899 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
900
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
901 extern DL_IMPORT(int) _PyUnicode_IsNumeric(
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
902 register const Py_UNICODE ch /* Unicode character */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
903 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
904
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
905 extern DL_IMPORT(int) _PyUnicode_IsAlpha(
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
906 register const Py_UNICODE ch /* Unicode character */
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
907 );
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
908
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
909 #ifdef __cplusplus
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
910 }
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
911 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
912 #endif /* !Py_UNICODEOBJECT_H */