annotate Include/unicodeobject.h @ 49955:878d40468c4e legacy-trunk

Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
author Vinay Sajip <vinay_sajip@yahoo.co.uk>
date Wed, 03 Dec 2008 23:22:58 +0000
parents e1a88e8b9649
children df3923c36ec5 027a6f3ac874
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
44996
467c71f365fd Add stdarg include for va_list to get this to compile on cygwin
Neal Norwitz <nnorwitz@gmail.com>
parents: 44945
diff changeset
4 #include <stdarg.h>
467c71f365fd Add stdarg include for va_list to get this to compile on cygwin
Neal Norwitz <nnorwitz@gmail.com>
parents: 44945
diff changeset
5
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 /*
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
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 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
9 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
10 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
11
13828
254f8b7c4a83 Changing the CNRI copyright notice according to CNRI's instructions.
Guido van Rossum <guido@python.org>
parents: 13661
diff changeset
12 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
13
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 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
16 --------------------------------------------------------------------
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
17
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 * 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
19 * 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
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 * 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
22 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 * 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
24 * 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
25 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 * 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
27 * 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
28 *
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 * 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
31 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 * 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
33 * 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
34 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 * 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
36 * 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
37 * 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
38 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 * 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
40 * 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
41 * 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
42 * 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
43 * 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
44 * 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
45 * 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
46 * permission.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 *
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 * 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
49 * 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
50 * 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
51 * 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
52 * 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
53 * 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
54 * 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
55 * -------------------------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
56
19980
9ab6af6815af Fix for bug #462737.
Marc-André Lemburg <mal@egenix.com>
parents: 19849
diff changeset
57 #include <ctype.h>
11962
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 API ======================================================= */
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 /* --- 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
62
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
63 #ifndef Py_USING_UNICODE
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
64
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
65 #define PyUnicode_Check(op) 0
19849
bf0202dac441 Possibly the end of SF [#460020] bug or feature: unicode() and subclasses.
Tim Peters <tim.peters@gmail.com>
parents: 19589
diff changeset
66 #define PyUnicode_CheckExact(op) 0
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
67
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
68 #else
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
69
18296
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
70 /* FIXME: MvL's new implementation assumes that Py_UNICODE_SIZE is
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
71 properly set, but the default rules below doesn't set it. I'll
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
72 sort this out some other day -- fredrik@pythonware.com */
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
73
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
74 #ifndef Py_UNICODE_SIZE
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
75 #error Must define Py_UNICODE_SIZE
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
76 #endif
22f85c6a6520 Make Unicode work a bit better on Windows...
Fredrik Lundh <fredrik@pythonware.com>
parents: 18292
diff changeset
77
18324
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
78 /* Setting Py_UNICODE_WIDE enables UCS-4 storage. Otherwise, Unicode
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
79 strings are stored as UCS-2 (with limited support for UTF-16) */
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
80
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
81 #if Py_UNICODE_SIZE >= 4
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
82 #define Py_UNICODE_WIDE
18292
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
83 #endif
18280
0632dcd69ea3 experimental UCS-4 support: added USE_UCS4_STORAGE define to
Fredrik Lundh <fredrik@pythonware.com>
parents: 17887
diff changeset
84
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 /* 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
86 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
87 /* #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
88 /* #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
89
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 /* Defaults for various platforms */
18292
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
91 #ifndef PY_UNICODE_TYPE
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
92
18280
0632dcd69ea3 experimental UCS-4 support: added USE_UCS4_STORAGE define to
Fredrik Lundh <fredrik@pythonware.com>
parents: 17887
diff changeset
93 /* Windows has a usable wchar_t type (unless we're using UCS-4) */
18324
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
94 # if defined(MS_WIN32) && Py_UNICODE_SIZE == 2
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 # define HAVE_USABLE_WCHAR_T
18292
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
96 # define PY_UNICODE_TYPE wchar_t
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
97 # endif
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
98
18324
3ba7a358ce02 use Py_UNICODE_WIDE instead of USE_UCS4_STORAGE and Py_UNICODE_SIZE
Fredrik Lundh <fredrik@pythonware.com>
parents: 18298
diff changeset
99 # if defined(Py_UNICODE_WIDE)
18292
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
100 # define PY_UNICODE_TYPE Py_UCS4
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 # endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
102
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
104
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 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
106 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
107 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
108
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 #ifdef HAVE_USABLE_WCHAR_T
13917
03fa40528d17 Added #fndef's to avoid compiler errors.
Marc-André Lemburg <mal@egenix.com>
parents: 13837
diff changeset
110 # ifndef HAVE_WCHAR_H
03fa40528d17 Added #fndef's to avoid compiler errors.
Marc-André Lemburg <mal@egenix.com>
parents: 13837
diff changeset
111 # define HAVE_WCHAR_H
03fa40528d17 Added #fndef's to avoid compiler errors.
Marc-André Lemburg <mal@egenix.com>
parents: 13837
diff changeset
112 # 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
113 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
114
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 #ifdef HAVE_WCHAR_H
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
116 /* 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
117 # ifdef _HAVE_BSDI
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
118 # include <time.h>
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
119 # endif
19980
9ab6af6815af Fix for bug #462737.
Marc-André Lemburg <mal@egenix.com>
parents: 19849
diff changeset
120 # include <wchar.h>
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
122
18292
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
123 /*
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
124 * Use this typedef when you need to represent a UTF-16 surrogate pair
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
125 * as single unsigned integer.
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
126 */
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
127 #if SIZEOF_INT >= 4
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
128 typedef unsigned int Py_UCS4;
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
129 #elif SIZEOF_LONG >= 4
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
130 typedef unsigned long Py_UCS4;
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
132
18292
ffbb9c918ac0 Support using UCS-4 as the Py_UNICODE type:
Martin v. Löwis <martin@v.loewis.de>
parents: 18280
diff changeset
133 typedef PY_UNICODE_TYPE Py_UNICODE;
13393
bcb14627b8f4 Bill Tutt: Added Py_UCS4 typedef to hold UCS4 values (these need
Marc-André Lemburg <mal@egenix.com>
parents: 13352
diff changeset
134
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
135 /* --- UCS-2/UCS-4 Name Mangling ------------------------------------------ */
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
136
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
137 /* Unicode API names are mangled to assure that UCS-2 and UCS-4 builds
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
138 produce different external names and thus cause import errors in
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
139 case Python interpreters and extensions with mixed compiled in
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
140 Unicode width assumptions are combined. */
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
141
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
142 #ifndef Py_UNICODE_WIDE
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
143
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
144 # define PyUnicode_AsASCIIString PyUnicodeUCS2_AsASCIIString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
145 # define PyUnicode_AsCharmapString PyUnicodeUCS2_AsCharmapString
32551
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
146 # define PyUnicode_AsEncodedObject PyUnicodeUCS2_AsEncodedObject
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
147 # define PyUnicode_AsEncodedString PyUnicodeUCS2_AsEncodedString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
148 # define PyUnicode_AsLatin1String PyUnicodeUCS2_AsLatin1String
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
149 # define PyUnicode_AsRawUnicodeEscapeString PyUnicodeUCS2_AsRawUnicodeEscapeString
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
150 # define PyUnicode_AsUTF32String PyUnicodeUCS2_AsUTF32String
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
151 # define PyUnicode_AsUTF16String PyUnicodeUCS2_AsUTF16String
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
152 # define PyUnicode_AsUTF8String PyUnicodeUCS2_AsUTF8String
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
153 # define PyUnicode_AsUnicode PyUnicodeUCS2_AsUnicode
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
154 # define PyUnicode_AsUnicodeEscapeString PyUnicodeUCS2_AsUnicodeEscapeString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
155 # define PyUnicode_AsWideChar PyUnicodeUCS2_AsWideChar
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
156 # define PyUnicode_Compare PyUnicodeUCS2_Compare
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
157 # define PyUnicode_Concat PyUnicodeUCS2_Concat
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
158 # define PyUnicode_Contains PyUnicodeUCS2_Contains
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
159 # define PyUnicode_Count PyUnicodeUCS2_Count
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
160 # define PyUnicode_Decode PyUnicodeUCS2_Decode
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
161 # define PyUnicode_DecodeASCII PyUnicodeUCS2_DecodeASCII
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
162 # define PyUnicode_DecodeCharmap PyUnicodeUCS2_DecodeCharmap
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
163 # define PyUnicode_DecodeLatin1 PyUnicodeUCS2_DecodeLatin1
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
164 # define PyUnicode_DecodeRawUnicodeEscape PyUnicodeUCS2_DecodeRawUnicodeEscape
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
165 # define PyUnicode_DecodeUTF32 PyUnicodeUCS2_DecodeUTF32
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
166 # define PyUnicode_DecodeUTF32Stateful PyUnicodeUCS2_DecodeUTF32Stateful
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
167 # define PyUnicode_DecodeUTF16 PyUnicodeUCS2_DecodeUTF16
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
168 # define PyUnicode_DecodeUTF16Stateful PyUnicodeUCS2_DecodeUTF16Stateful
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
169 # define PyUnicode_DecodeUTF8 PyUnicodeUCS2_DecodeUTF8
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
170 # define PyUnicode_DecodeUTF8Stateful PyUnicodeUCS2_DecodeUTF8Stateful
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
171 # define PyUnicode_DecodeUnicodeEscape PyUnicodeUCS2_DecodeUnicodeEscape
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
172 # define PyUnicode_Encode PyUnicodeUCS2_Encode
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
173 # define PyUnicode_EncodeASCII PyUnicodeUCS2_EncodeASCII
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
174 # define PyUnicode_EncodeCharmap PyUnicodeUCS2_EncodeCharmap
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
175 # define PyUnicode_EncodeDecimal PyUnicodeUCS2_EncodeDecimal
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
176 # define PyUnicode_EncodeLatin1 PyUnicodeUCS2_EncodeLatin1
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
177 # define PyUnicode_EncodeRawUnicodeEscape PyUnicodeUCS2_EncodeRawUnicodeEscape
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
178 # define PyUnicode_EncodeUTF32 PyUnicodeUCS2_EncodeUTF32
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
179 # define PyUnicode_EncodeUTF16 PyUnicodeUCS2_EncodeUTF16
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
180 # define PyUnicode_EncodeUTF8 PyUnicodeUCS2_EncodeUTF8
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
181 # define PyUnicode_EncodeUnicodeEscape PyUnicodeUCS2_EncodeUnicodeEscape
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
182 # define PyUnicode_Find PyUnicodeUCS2_Find
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
183 # define PyUnicode_Format PyUnicodeUCS2_Format
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
184 # define PyUnicode_FromEncodedObject PyUnicodeUCS2_FromEncodedObject
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
185 # define PyUnicode_FromObject PyUnicodeUCS2_FromObject
24753
27ae978bee58 Add name mangling for new PyUnicode_FromOrdinal() and fix declaration
Marc-André Lemburg <mal@egenix.com>
parents: 24752
diff changeset
186 # define PyUnicode_FromOrdinal PyUnicodeUCS2_FromOrdinal
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
187 # define PyUnicode_FromUnicode PyUnicodeUCS2_FromUnicode
44945
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
188 # define PyUnicode_FromString PyUnicodeUCS2_FromString
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
189 # define PyUnicode_FromStringAndSize PyUnicodeUCS2_FromStringAndSize
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
190 # define PyUnicode_FromFormatV PyUnicodeUCS2_FromFormatV
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
191 # define PyUnicode_FromFormat PyUnicodeUCS2_FromFormat
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
192 # define PyUnicode_FromWideChar PyUnicodeUCS2_FromWideChar
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
193 # define PyUnicode_GetDefaultEncoding PyUnicodeUCS2_GetDefaultEncoding
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
194 # define PyUnicode_GetMax PyUnicodeUCS2_GetMax
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
195 # define PyUnicode_GetSize PyUnicodeUCS2_GetSize
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
196 # define PyUnicode_Join PyUnicodeUCS2_Join
38335
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
197 # define PyUnicode_Partition PyUnicodeUCS2_Partition
38390
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
198 # define PyUnicode_RPartition PyUnicodeUCS2_RPartition
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
199 # define PyUnicode_RSplit PyUnicodeUCS2_RSplit
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
200 # define PyUnicode_Replace PyUnicodeUCS2_Replace
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
201 # define PyUnicode_Resize PyUnicodeUCS2_Resize
39487
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
202 # define PyUnicode_RichCompare PyUnicodeUCS2_RichCompare
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
203 # define PyUnicode_SetDefaultEncoding PyUnicodeUCS2_SetDefaultEncoding
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
204 # define PyUnicode_Split PyUnicodeUCS2_Split
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
205 # define PyUnicode_Splitlines PyUnicodeUCS2_Splitlines
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
206 # define PyUnicode_Tailmatch PyUnicodeUCS2_Tailmatch
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
207 # define PyUnicode_Translate PyUnicodeUCS2_Translate
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
208 # define PyUnicode_TranslateCharmap PyUnicodeUCS2_TranslateCharmap
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
209 # define _PyUnicode_AsDefaultEncodedString _PyUnicodeUCS2_AsDefaultEncodedString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
210 # define _PyUnicode_Fini _PyUnicodeUCS2_Fini
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
211 # define _PyUnicode_Init _PyUnicodeUCS2_Init
45341
65ae68c7aca3 Implemented Martin's suggestion to clear the free lists during the garbage collection of the highest generation.
Christian Heimes <christian@cheimes.de>
parents: 45053
diff changeset
212 # define PyUnicode_ClearFreeList PyUnicodeUCS2_ClearFreelist
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
213 # define _PyUnicode_IsAlpha _PyUnicodeUCS2_IsAlpha
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
214 # define _PyUnicode_IsDecimalDigit _PyUnicodeUCS2_IsDecimalDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
215 # define _PyUnicode_IsDigit _PyUnicodeUCS2_IsDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
216 # define _PyUnicode_IsLinebreak _PyUnicodeUCS2_IsLinebreak
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
217 # define _PyUnicode_IsLowercase _PyUnicodeUCS2_IsLowercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
218 # define _PyUnicode_IsNumeric _PyUnicodeUCS2_IsNumeric
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
219 # define _PyUnicode_IsTitlecase _PyUnicodeUCS2_IsTitlecase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
220 # define _PyUnicode_IsUppercase _PyUnicodeUCS2_IsUppercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
221 # define _PyUnicode_IsWhitespace _PyUnicodeUCS2_IsWhitespace
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
222 # define _PyUnicode_ToDecimalDigit _PyUnicodeUCS2_ToDecimalDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
223 # define _PyUnicode_ToDigit _PyUnicodeUCS2_ToDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
224 # define _PyUnicode_ToLowercase _PyUnicodeUCS2_ToLowercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
225 # define _PyUnicode_ToNumeric _PyUnicodeUCS2_ToNumeric
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
226 # define _PyUnicode_ToTitlecase _PyUnicodeUCS2_ToTitlecase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
227 # define _PyUnicode_ToUppercase _PyUnicodeUCS2_ToUppercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
228
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
229 #else
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
230
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
231 # define PyUnicode_AsASCIIString PyUnicodeUCS4_AsASCIIString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
232 # define PyUnicode_AsCharmapString PyUnicodeUCS4_AsCharmapString
32551
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
233 # define PyUnicode_AsEncodedObject PyUnicodeUCS4_AsEncodedObject
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
234 # define PyUnicode_AsEncodedString PyUnicodeUCS4_AsEncodedString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
235 # define PyUnicode_AsLatin1String PyUnicodeUCS4_AsLatin1String
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
236 # define PyUnicode_AsRawUnicodeEscapeString PyUnicodeUCS4_AsRawUnicodeEscapeString
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
237 # define PyUnicode_AsUTF32String PyUnicodeUCS4_AsUTF32String
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
238 # define PyUnicode_AsUTF16String PyUnicodeUCS4_AsUTF16String
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
239 # define PyUnicode_AsUTF8String PyUnicodeUCS4_AsUTF8String
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
240 # define PyUnicode_AsUnicode PyUnicodeUCS4_AsUnicode
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
241 # define PyUnicode_AsUnicodeEscapeString PyUnicodeUCS4_AsUnicodeEscapeString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
242 # define PyUnicode_AsWideChar PyUnicodeUCS4_AsWideChar
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
243 # define PyUnicode_Compare PyUnicodeUCS4_Compare
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
244 # define PyUnicode_Concat PyUnicodeUCS4_Concat
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
245 # define PyUnicode_Contains PyUnicodeUCS4_Contains
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
246 # define PyUnicode_Count PyUnicodeUCS4_Count
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
247 # define PyUnicode_Decode PyUnicodeUCS4_Decode
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
248 # define PyUnicode_DecodeASCII PyUnicodeUCS4_DecodeASCII
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
249 # define PyUnicode_DecodeCharmap PyUnicodeUCS4_DecodeCharmap
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
250 # define PyUnicode_DecodeLatin1 PyUnicodeUCS4_DecodeLatin1
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
251 # define PyUnicode_DecodeRawUnicodeEscape PyUnicodeUCS4_DecodeRawUnicodeEscape
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
252 # define PyUnicode_DecodeUTF32 PyUnicodeUCS4_DecodeUTF32
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
253 # define PyUnicode_DecodeUTF32Stateful PyUnicodeUCS4_DecodeUTF32Stateful
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
254 # define PyUnicode_DecodeUTF16 PyUnicodeUCS4_DecodeUTF16
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
255 # define PyUnicode_DecodeUTF16Stateful PyUnicodeUCS4_DecodeUTF16Stateful
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
256 # define PyUnicode_DecodeUTF8 PyUnicodeUCS4_DecodeUTF8
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
257 # define PyUnicode_DecodeUTF8Stateful PyUnicodeUCS4_DecodeUTF8Stateful
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
258 # define PyUnicode_DecodeUnicodeEscape PyUnicodeUCS4_DecodeUnicodeEscape
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
259 # define PyUnicode_Encode PyUnicodeUCS4_Encode
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
260 # define PyUnicode_EncodeASCII PyUnicodeUCS4_EncodeASCII
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
261 # define PyUnicode_EncodeCharmap PyUnicodeUCS4_EncodeCharmap
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
262 # define PyUnicode_EncodeDecimal PyUnicodeUCS4_EncodeDecimal
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
263 # define PyUnicode_EncodeLatin1 PyUnicodeUCS4_EncodeLatin1
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
264 # define PyUnicode_EncodeRawUnicodeEscape PyUnicodeUCS4_EncodeRawUnicodeEscape
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
265 # define PyUnicode_EncodeUTF32 PyUnicodeUCS4_EncodeUTF32
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
266 # define PyUnicode_EncodeUTF16 PyUnicodeUCS4_EncodeUTF16
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
267 # define PyUnicode_EncodeUTF8 PyUnicodeUCS4_EncodeUTF8
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
268 # define PyUnicode_EncodeUnicodeEscape PyUnicodeUCS4_EncodeUnicodeEscape
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
269 # define PyUnicode_Find PyUnicodeUCS4_Find
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
270 # define PyUnicode_Format PyUnicodeUCS4_Format
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
271 # define PyUnicode_FromEncodedObject PyUnicodeUCS4_FromEncodedObject
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
272 # define PyUnicode_FromObject PyUnicodeUCS4_FromObject
24753
27ae978bee58 Add name mangling for new PyUnicode_FromOrdinal() and fix declaration
Marc-André Lemburg <mal@egenix.com>
parents: 24752
diff changeset
273 # define PyUnicode_FromOrdinal PyUnicodeUCS4_FromOrdinal
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
274 # define PyUnicode_FromUnicode PyUnicodeUCS4_FromUnicode
44945
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
275 # define PyUnicode_FromString PyUnicodeUCS4_FromString
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
276 # define PyUnicode_FromStringAndSize PyUnicodeUCS4_FromStringAndSize
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
277 # define PyUnicode_FromFormatV PyUnicodeUCS4_FromFormatV
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
278 # define PyUnicode_FromFormat PyUnicodeUCS4_FromFormat
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
279 # define PyUnicode_FromWideChar PyUnicodeUCS4_FromWideChar
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
280 # define PyUnicode_GetDefaultEncoding PyUnicodeUCS4_GetDefaultEncoding
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
281 # define PyUnicode_GetMax PyUnicodeUCS4_GetMax
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
282 # define PyUnicode_GetSize PyUnicodeUCS4_GetSize
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
283 # define PyUnicode_Join PyUnicodeUCS4_Join
38335
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
284 # define PyUnicode_Partition PyUnicodeUCS4_Partition
38390
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
285 # define PyUnicode_RPartition PyUnicodeUCS4_RPartition
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
286 # define PyUnicode_RSplit PyUnicodeUCS4_RSplit
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
287 # define PyUnicode_Replace PyUnicodeUCS4_Replace
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
288 # define PyUnicode_Resize PyUnicodeUCS4_Resize
39487
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
289 # define PyUnicode_RichCompare PyUnicodeUCS4_RichCompare
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
290 # define PyUnicode_SetDefaultEncoding PyUnicodeUCS4_SetDefaultEncoding
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
291 # define PyUnicode_Split PyUnicodeUCS4_Split
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
292 # define PyUnicode_Splitlines PyUnicodeUCS4_Splitlines
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
293 # define PyUnicode_Tailmatch PyUnicodeUCS4_Tailmatch
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
294 # define PyUnicode_Translate PyUnicodeUCS4_Translate
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
295 # define PyUnicode_TranslateCharmap PyUnicodeUCS4_TranslateCharmap
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
296 # define _PyUnicode_AsDefaultEncodedString _PyUnicodeUCS4_AsDefaultEncodedString
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
297 # define _PyUnicode_Fini _PyUnicodeUCS4_Fini
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
298 # define _PyUnicode_Init _PyUnicodeUCS4_Init
45341
65ae68c7aca3 Implemented Martin's suggestion to clear the free lists during the garbage collection of the highest generation.
Christian Heimes <christian@cheimes.de>
parents: 45053
diff changeset
299 # define PyUnicode_ClearFreeList PyUnicodeUCS2_ClearFreelist
18911
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
300 # define _PyUnicode_IsAlpha _PyUnicodeUCS4_IsAlpha
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
301 # define _PyUnicode_IsDecimalDigit _PyUnicodeUCS4_IsDecimalDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
302 # define _PyUnicode_IsDigit _PyUnicodeUCS4_IsDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
303 # define _PyUnicode_IsLinebreak _PyUnicodeUCS4_IsLinebreak
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
304 # define _PyUnicode_IsLowercase _PyUnicodeUCS4_IsLowercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
305 # define _PyUnicode_IsNumeric _PyUnicodeUCS4_IsNumeric
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
306 # define _PyUnicode_IsTitlecase _PyUnicodeUCS4_IsTitlecase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
307 # define _PyUnicode_IsUppercase _PyUnicodeUCS4_IsUppercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
308 # define _PyUnicode_IsWhitespace _PyUnicodeUCS4_IsWhitespace
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
309 # define _PyUnicode_ToDecimalDigit _PyUnicodeUCS4_ToDecimalDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
310 # define _PyUnicode_ToDigit _PyUnicodeUCS4_ToDigit
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
311 # define _PyUnicode_ToLowercase _PyUnicodeUCS4_ToLowercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
312 # define _PyUnicode_ToNumeric _PyUnicodeUCS4_ToNumeric
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
313 # define _PyUnicode_ToTitlecase _PyUnicodeUCS4_ToTitlecase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
314 # define _PyUnicode_ToUppercase _PyUnicodeUCS4_ToUppercase
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
315
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
316
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
317 #endif
55b45b47fc48 As discussed on python-dev: this patch adds name mangling to
Marc-André Lemburg <mal@egenix.com>
parents: 18887
diff changeset
318
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 /* --- 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
320
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 /* 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
322 of the ones supplied with Python, define WANT_WCTYPE_FUNCTIONS or
33864
6b61af083493 SF patch #1056231: typo in comment (unicodeobject.h)
Raymond Hettinger <python@rcn.com>
parents: 33428
diff changeset
323 configure Python using --with-wctype-functions. This reduces the
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
324 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
325
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 #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
327
19980
9ab6af6815af Fix for bug #462737.
Marc-André Lemburg <mal@egenix.com>
parents: 19849
diff changeset
328 #include <wctype.h>
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
329
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
330 #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
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 #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
333 #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
334 #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
335 #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
336
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 #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
338 #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
339 #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
340
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 #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
342 #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
343 #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
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 #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
346 #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
347 #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
348
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
349 #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
350
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 #else
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
352
45053
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
353 /* Since splitting on whitespace is an important use case, and whitespace
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
354 in most situations is solely ASCII whitespace, we optimize for the common
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
355 case by using a quick look-up table with an inlined check.
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
356 */
49502
e1a88e8b9649 Merged revisions 66891 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 47392
diff changeset
357 PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
45053
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
358
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
359 #define Py_UNICODE_ISSPACE(ch) \
26278796d4da Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection. The speedup is about 25% for split() (571 / 457 usec) and 35% (175 / 127 usec )for splitlines()
Christian Heimes <christian@cheimes.de>
parents: 44996
diff changeset
360 ((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(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
361
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
362 #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
363 #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
364 #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
365 #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
366
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 #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
368 #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
369 #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
370
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
371 #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
372 #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
373 #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
374
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
375 #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
376 #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
377 #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
378
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
379 #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
380
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
381 #endif
13320
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
382
67a04816ea50 Added new Py_UNICODE_ISALPHA() and Py_UNICODE_ISALNUM() macros
Marc-André Lemburg <mal@egenix.com>
parents: 12956
diff changeset
383 #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
384 (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
385 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
386 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
387 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
388
38457
551814e4b471 needforspeed: added Py_MEMCPY macro (currently tuned for Visual C only),
Fredrik Lundh <fredrik@pythonware.com>
parents: 38390
diff changeset
389 #define Py_UNICODE_COPY(target, source, length) \
551814e4b471 needforspeed: added Py_MEMCPY macro (currently tuned for Visual C only),
Fredrik Lundh <fredrik@pythonware.com>
parents: 38390
diff changeset
390 Py_MEMCPY((target), (source), (length)*sizeof(Py_UNICODE))
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
391
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
392 #define Py_UNICODE_FILL(target, value, length) do\
38239
604af867c65f needforspeed: use memcpy for "long" strings; use a better algorithm
Fredrik Lundh <fredrik@pythonware.com>
parents: 38238
diff changeset
393 {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\
604af867c65f needforspeed: use memcpy for "long" strings; use a better algorithm
Fredrik Lundh <fredrik@pythonware.com>
parents: 38238
diff changeset
394 for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\
38238
feb00df91922 needforspeed: speed up unicode repeat, unicode string copy
Fredrik Lundh <fredrik@pythonware.com>
parents: 36501
diff changeset
395 } while (0)
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
396
38242
0de9a789de39 needforspeed: check first *and* last character before doing a full memcmp
Fredrik Lundh <fredrik@pythonware.com>
parents: 38239
diff changeset
397 /* check if substring matches at given offset. the offset must be
0de9a789de39 needforspeed: check first *and* last character before doing a full memcmp
Fredrik Lundh <fredrik@pythonware.com>
parents: 38239
diff changeset
398 valid, and the substring must not be empty */
0de9a789de39 needforspeed: check first *and* last character before doing a full memcmp
Fredrik Lundh <fredrik@pythonware.com>
parents: 38239
diff changeset
399 #define Py_UNICODE_MATCH(string, offset, substring) \
0de9a789de39 needforspeed: check first *and* last character before doing a full memcmp
Fredrik Lundh <fredrik@pythonware.com>
parents: 38239
diff changeset
400 ((*((string)->str + (offset)) == *((substring)->str)) && \
0de9a789de39 needforspeed: check first *and* last character before doing a full memcmp
Fredrik Lundh <fredrik@pythonware.com>
parents: 38239
diff changeset
401 ((*((string)->str + (offset) + (substring)->length-1) == *((substring)->str + (substring)->length-1))) && \
0de9a789de39 needforspeed: check first *and* last character before doing a full memcmp
Fredrik Lundh <fredrik@pythonware.com>
parents: 38239
diff changeset
402 !memcmp((string)->str + (offset), (substring)->str, (substring)->length*sizeof(Py_UNICODE)))
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
403
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
404 #ifdef __cplusplus
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
405 extern "C" {
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
406 #endif
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
407
45341
65ae68c7aca3 Implemented Martin's suggestion to clear the free lists during the garbage collection of the highest generation.
Christian Heimes <christian@cheimes.de>
parents: 45053
diff changeset
408 PyAPI_FUNC(int) PyUnicode_ClearFreeList(void);
65ae68c7aca3 Implemented Martin's suggestion to clear the free lists during the garbage collection of the highest generation.
Christian Heimes <christian@cheimes.de>
parents: 45053
diff changeset
409
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
410 /* --- 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
411
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
412 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
413 PyObject_HEAD
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
414 Py_ssize_t length; /* Length of raw Unicode data in buffer */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
415 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
416 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
417 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
418 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
419 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
420 } PyUnicodeObject;
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
421
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
422 PyAPI_DATA(PyTypeObject) PyUnicode_Type;
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
423
40908
d01bd37bf5ce Variation of patch # 1624059 to speed up checking if an object is a subclass
Neal Norwitz <nnorwitz@gmail.com>
parents: 39487
diff changeset
424 #define PyUnicode_Check(op) \
44350
26384b8180c7 #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents: 43932
diff changeset
425 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
26384b8180c7 #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents: 43932
diff changeset
426 #define PyUnicode_CheckExact(op) (Py_TYPE(op) == &PyUnicode_Type)
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
427
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 /* 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
429 #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
430 (((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
431 #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
432 (((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
433 #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
434 (((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
435 #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
436 ((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
437
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 /* --- Constants ---------------------------------------------------------- */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
439
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
440 /* 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
441 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
442 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
443 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
444
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
445 #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
446
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
447 /* === 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
448
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
449 /* --- 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
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 /* Create a Unicode Object from the Py_UNICODE buffer u of the given
17618
b44ba7c01217 This patch originated from an idea by Martin v. Loewis who submitted a
Marc-André Lemburg <mal@egenix.com>
parents: 13917
diff changeset
452 size.
b44ba7c01217 This patch originated from an idea by Martin v. Loewis who submitted a
Marc-André Lemburg <mal@egenix.com>
parents: 13917
diff changeset
453
b44ba7c01217 This patch originated from an idea by Martin v. Loewis who submitted a
Marc-André Lemburg <mal@egenix.com>
parents: 13917
diff changeset
454 u may be NULL which causes the contents to be undefined. It is the
b44ba7c01217 This patch originated from an idea by Martin v. Loewis who submitted a
Marc-André Lemburg <mal@egenix.com>
parents: 13917
diff changeset
455 user's responsibility to fill in the needed data afterwards. Note
b44ba7c01217 This patch originated from an idea by Martin v. Loewis who submitted a
Marc-André Lemburg <mal@egenix.com>
parents: 13917
diff changeset
456 that modifying the Unicode object contents after construction is
b44ba7c01217 This patch originated from an idea by Martin v. Loewis who submitted a
Marc-André Lemburg <mal@egenix.com>
parents: 13917
diff changeset
457 only allowed if u was set to NULL.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
458
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 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
460
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
461 PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
462 const Py_UNICODE *u, /* Unicode buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
463 Py_ssize_t size /* size of buffer */
11962
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
44945
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
466 /* Similar to PyUnicode_FromUnicode(), but u points to Latin-1 encoded bytes */
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
467 PyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize(
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
468 const char *u, /* char buffer */
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
469 Py_ssize_t size /* size of buffer */
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
470 );
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
471
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
472 /* Similar to PyUnicode_FromUnicode(), but u points to null-terminated
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
473 Latin-1 encoded bytes */
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
474 PyAPI_FUNC(PyObject*) PyUnicode_FromString(
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
475 const char *u /* string */
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
476 );
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
477
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
478 /* 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
479 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
480
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
481 PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
482 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
483 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
484
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
485 /* 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
486
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
487 PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
488 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
489 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
490
18298
982163c4e9d2 Encode surrogates in UTF-8 even for a wide Py_UNICODE.
Martin v. Löwis <martin@v.loewis.de>
parents: 18296
diff changeset
491 /* Get the maximum ordinal for a Unicode character. */
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
492 PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void);
18298
982163c4e9d2 Encode surrogates in UTF-8 even for a wide Py_UNICODE.
Martin v. Löwis <martin@v.loewis.de>
parents: 18296
diff changeset
493
12326
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
494 /* 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
495
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
496 *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
497 returned on success.
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
498
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
499 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
500 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
501 an error is returned.
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
502
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
503 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
504 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
505
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
506 */
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
507
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
508 PyAPI_FUNC(int) PyUnicode_Resize(
12326
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
509 PyObject **unicode, /* Pointer to the Unicode object */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
510 Py_ssize_t length /* New length */
12326
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
511 );
9488e4fdafe4 Marc-Andre Lemburg: New exported API PyUnicode_Resize().
Guido van Rossum <guido@python.org>
parents: 12248
diff changeset
512
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 /* 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
514 *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
515
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 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
517
20554
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
518 1. 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
519 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
520 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
521
20554
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
522 2. All other objects (including Unicode objects) raise an
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
523 exception.
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
524
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 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
526 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
527
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
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
530 PyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject(
13401
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
531 register PyObject *obj, /* Object */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
532 const char *encoding, /* encoding */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
533 const char *errors /* error handling */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
534 );
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
535
20554
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
536 /* Coerce obj to an Unicode object and return a reference with
13401
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
537 *incremented* refcount.
20554
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
538
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
539 Unicode objects are passed back as-is (subclasses are converted to
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
540 true Unicode objects), all other objects are delegated to
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
541 PyUnicode_FromEncodedObject(obj, NULL, "strict") which results in
0336ee5b46d4 SF patch #470578: Fixes to synchronize unicode() and str()
Guido van Rossum <guido@python.org>
parents: 19998
diff changeset
542 using the default encoding as basis for decoding the object.
13401
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
543
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
544 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
545 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
546
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
547 */
8f1a2deeb9b0 Added new API PyUnicode_FromEncodedObject() which supports decoding
Marc-André Lemburg <mal@egenix.com>
parents: 13393
diff changeset
548
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
549 PyAPI_FUNC(PyObject*) PyUnicode_FromObject(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
550 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
551 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
552
44945
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
553 PyAPI_FUNC(PyObject *) PyUnicode_FromFormatV(const char*, va_list);
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
554 PyAPI_FUNC(PyObject *) PyUnicode_FromFormat(const char*, ...);
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44350
diff changeset
555
47392
47ef9a806ce9 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 45341
diff changeset
556 /* Format the object based on the format_spec, as defined in PEP 3101
47ef9a806ce9 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 45341
diff changeset
557 (Advanced String Formatting). */
47ef9a806ce9 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 45341
diff changeset
558 PyAPI_FUNC(PyObject *) _PyUnicode_FormatAdvanced(PyObject *obj,
47ef9a806ce9 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 45341
diff changeset
559 Py_UNICODE *format_spec,
47ef9a806ce9 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 45341
diff changeset
560 Py_ssize_t format_spec_len);
47ef9a806ce9 Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Eric Smith <eric@trueblade.com>
parents: 45341
diff changeset
561
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 /* --- 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
563
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
564 #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
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 /* 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
567 size.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
568
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
569 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
570
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
571 PyAPI_FUNC(PyObject*) PyUnicode_FromWideChar(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
572 register const wchar_t *w, /* wchar_t buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
573 Py_ssize_t size /* size of buffer */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
575
34016
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
576 /* Copies the Unicode Object contents into the wchar_t buffer w. At
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
577 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
578
34016
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
579 Note that the resulting wchar_t string may or may not be
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
580 0-terminated. It is the responsibility of the caller to make sure
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
581 that the wchar_t string is 0-terminated in case this is required by
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
582 the application.
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
583
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
584 Returns the number of wchar_t characters copied (excluding a
264e45baacd5 Correct the handling of 0-termination of PyUnicode_AsWideChar()
Marc-André Lemburg <mal@egenix.com>
parents: 33864
diff changeset
585 possibly trailing 0-termination character) or -1 in case of an
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
586 error. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
587
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
588 PyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
589 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
590 register wchar_t *w, /* wchar_t buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
591 Py_ssize_t size /* size of buffer */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
592 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
593
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 #endif
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
595
24737
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
596 /* --- Unicode ordinals --------------------------------------------------- */
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
597
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
598 /* Create a Unicode Object from the given Unicode code point ordinal.
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
599
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
600 The ordinal must be in range(0x10000) on narrow Python builds
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
601 (UCS2), and range(0x110000) on wide builds (UCS4). A ValueError is
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
602 raised in case it is not.
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
603
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
604 */
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
605
24753
27ae978bee58 Add name mangling for new PyUnicode_FromOrdinal() and fix declaration
Marc-André Lemburg <mal@egenix.com>
parents: 24752
diff changeset
606 PyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal);
24737
eaa87632b1e8 Add C API PyUnicode_FromOrdinal() which exposes unichr() at C level.
Marc-André Lemburg <mal@egenix.com>
parents: 23561
diff changeset
607
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 /* === 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
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 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
611 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
612 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
613
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
614 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
615
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
616 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
617 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
618 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
619 raised).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
620
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 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
622 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
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 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
625
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
626 /* --- Manage the default encoding ---------------------------------------- */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
627
18887
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
628 /* Return a Python string holding the default encoded value of the
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
629 Unicode object.
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
630
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
631 The resulting string is cached in the Unicode object for subsequent
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
632 usage by this function. The cached version is needed to implement
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
633 the character buffer interface and will live (at least) as long as
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
634 the Unicode object itself.
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
635
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
636 The refcount of the string is *not* incremented.
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
637
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
638 *** Exported for internal use by the interpreter only !!! ***
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
639
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
640 */
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
641
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
642 PyAPI_FUNC(PyObject *) _PyUnicode_AsDefaultEncodedString(
18887
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
643 PyObject *, const char *);
9b291ca6546c Add _PyUnicode_AsDefaultEncodedString to unicodeobject.h.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 18332
diff changeset
644
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
645 /* Returns the currently active default encoding.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
646
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
647 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
648 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
649 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
650 basis.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
651
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
652 */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
653
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
654 PyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void);
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
655
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
656 /* Sets the currently active default encoding.
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
657
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
658 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
659
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
660 */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
661
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
662 PyAPI_FUNC(int) PyUnicode_SetDefaultEncoding(
12643
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
663 const char *encoding /* Encoding name in standard form */
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
664 );
06ff966f69d5 M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents: 12372
diff changeset
665
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 /* --- 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
667
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
668 /* 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
669 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
670
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
671 PyAPI_FUNC(PyObject*) PyUnicode_Decode(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 const char *s, /* encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
673 Py_ssize_t size, /* size of buffer */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
674 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
675 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
676 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
677
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
678 /* 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
679 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
680
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
681 PyAPI_FUNC(PyObject*) PyUnicode_Encode(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
682 const Py_UNICODE *s, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
683 Py_ssize_t size, /* number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
684 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
685 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
686 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
687
32551
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
688 /* Encodes a Unicode object and returns the result as Python
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
689 object. */
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
690
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
691 PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject(
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
692 PyObject *unicode, /* Unicode object */
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
693 const char *encoding, /* encoding */
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
694 const char *errors /* error handling */
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
695 );
f46d49e2e0f0 Allow string and unicode return types from .encode()/.decode()
Marc-André Lemburg <mal@egenix.com>
parents: 32197
diff changeset
696
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 /* 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
698 object. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
699
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
700 PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
701 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
702 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
703 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
704 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
705
38586
9e0b050ce46f Patch #1359618: Speed-up charmap encoder.
Martin v. Löwis <martin@v.loewis.de>
parents: 38457
diff changeset
706 PyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap(
9e0b050ce46f Patch #1359618: Speed-up charmap encoder.
Martin v. Löwis <martin@v.loewis.de>
parents: 38457
diff changeset
707 PyObject* string /* 256 character map */
9e0b050ce46f Patch #1359618: Speed-up charmap encoder.
Martin v. Löwis <martin@v.loewis.de>
parents: 38457
diff changeset
708 );
9e0b050ce46f Patch #1359618: Speed-up charmap encoder.
Martin v. Löwis <martin@v.loewis.de>
parents: 38457
diff changeset
709
9e0b050ce46f Patch #1359618: Speed-up charmap encoder.
Martin v. Löwis <martin@v.loewis.de>
parents: 38457
diff changeset
710
19998
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
711 /* --- UTF-7 Codecs ------------------------------------------------------- */
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
712
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
713 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7(
19998
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
714 const char *string, /* UTF-7 encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
715 Py_ssize_t length, /* size of string */
19998
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
716 const char *errors /* error handling */
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
717 );
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
718
43932
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
719 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7Stateful(
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
720 const char *string, /* UTF-7 encoded string */
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
721 Py_ssize_t length, /* size of string */
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
722 const char *errors, /* error handling */
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
723 Py_ssize_t *consumed /* bytes consumed */
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
724 );
e8ac1ae4503c The incremental decoder for utf-7 must preserve its state between calls.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42649
diff changeset
725
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
726 PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF7(
19998
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
727 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
728 Py_ssize_t length, /* number of Py_UNICODE chars to encode */
19998
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
729 int encodeSetO, /* force the encoder to encode characters in
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
730 Set O, as described in RFC2152 */
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
731 int encodeWhiteSpace, /* force the encoder to encode space, tab,
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
732 carriage return and linefeed characters */
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
733 const char *errors /* error handling */
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
734 );
8a0c97453df4 Patch #435971: UTF-7 codec by Brian Quinlan.
Marc-André Lemburg <mal@egenix.com>
parents: 19980
diff changeset
735
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
736 /* --- 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
737
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
738 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
739 const char *string, /* UTF-8 encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
740 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
741 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
742 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
743
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
744 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8Stateful(
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
745 const char *string, /* UTF-8 encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
746 Py_ssize_t length, /* size of string */
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
747 const char *errors, /* error handling */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
748 Py_ssize_t *consumed /* bytes consumed */
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
749 );
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
750
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
751 PyAPI_FUNC(PyObject*) PyUnicode_AsUTF8String(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
752 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
753 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
754
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
755 PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
757 Py_ssize_t length, /* number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
758 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
759 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
760
42649
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
761 /* --- UTF-32 Codecs ------------------------------------------------------ */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
762
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
763 /* Decodes length bytes from a UTF-32 encoded buffer string and returns
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
764 the corresponding Unicode object.
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
765
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
766 errors (if non-NULL) defines the error handling. It defaults
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
767 to "strict".
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
768
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
769 If byteorder is non-NULL, the decoder starts decoding using the
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
770 given byte order:
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
771
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
772 *byteorder == -1: little endian
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
773 *byteorder == 0: native order
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
774 *byteorder == 1: big endian
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
775
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
776 In native mode, the first four bytes of the stream are checked for a
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
777 BOM mark. If found, the BOM mark is analysed, the byte order
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
778 adjusted and the BOM skipped. In the other modes, no BOM mark
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
779 interpretation is done. After completion, *byteorder is set to the
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
780 current byte order at the end of input data.
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
781
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
782 If byteorder is NULL, the codec starts in native order mode.
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
783
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
784 */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
785
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
786 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32(
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
787 const char *string, /* UTF-32 encoded string */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
788 Py_ssize_t length, /* size of string */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
789 const char *errors, /* error handling */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
790 int *byteorder /* pointer to byteorder to use
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
791 0=native;-1=LE,1=BE; updated on
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
792 exit */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
793 );
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
794
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
795 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful(
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
796 const char *string, /* UTF-32 encoded string */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
797 Py_ssize_t length, /* size of string */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
798 const char *errors, /* error handling */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
799 int *byteorder, /* pointer to byteorder to use
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
800 0=native;-1=LE,1=BE; updated on
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
801 exit */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
802 Py_ssize_t *consumed /* bytes consumed */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
803 );
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
804
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
805 /* Returns a Python string using the UTF-32 encoding in native byte
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
806 order. The string always starts with a BOM mark. */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
807
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
808 PyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String(
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
809 PyObject *unicode /* Unicode object */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
810 );
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
811
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
812 /* Returns a Python string object holding the UTF-32 encoded value of
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
813 the Unicode data.
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
814
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
815 If byteorder is not 0, output is written according to the following
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
816 byte order:
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
817
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
818 byteorder == -1: little endian
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
819 byteorder == 0: native byte order (writes a BOM mark)
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
820 byteorder == 1: big endian
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
821
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
822 If byteorder is 0, the output string will always start with the
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
823 Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
824 prepended.
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
825
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
826 */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
827
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
828 PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32(
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
829 const Py_UNICODE *data, /* Unicode char buffer */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
830 Py_ssize_t length, /* number of Py_UNICODE chars to encode */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
831 const char *errors, /* error handling */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
832 int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
833 );
c916731321c0 Backport r57105 and r57145 from the py3k branch: UTF-32 codecs.
Walter Dörwald <walter@livinglogic.de>
parents: 42333
diff changeset
834
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
835 /* --- 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
836
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
837 /* 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
838 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
839
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
840 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
841 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
842
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
843 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
844 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
845
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
846 *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
847 *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
848 *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
849
17887
fd5f83188778 This patch changes the behaviour of the UTF-16 codec family. Only the
Marc-André Lemburg <mal@egenix.com>
parents: 17618
diff changeset
850 In native mode, the first two bytes of the stream are checked for a
fd5f83188778 This patch changes the behaviour of the UTF-16 codec family. Only the
Marc-André Lemburg <mal@egenix.com>
parents: 17618
diff changeset
851 BOM mark. If found, the BOM mark is analysed, the byte order
fd5f83188778 This patch changes the behaviour of the UTF-16 codec family. Only the
Marc-André Lemburg <mal@egenix.com>
parents: 17618
diff changeset
852 adjusted and the BOM skipped. In the other modes, no BOM mark
fd5f83188778 This patch changes the behaviour of the UTF-16 codec family. Only the
Marc-André Lemburg <mal@egenix.com>
parents: 17618
diff changeset
853 interpretation is done. After completion, *byteorder is set to the
fd5f83188778 This patch changes the behaviour of the UTF-16 codec family. Only the
Marc-André Lemburg <mal@egenix.com>
parents: 17618
diff changeset
854 current byte order at the end of input 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
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 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
857
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
858 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
859
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
860 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
861 const char *string, /* UTF-16 encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
862 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
863 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
864 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
865 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
866 exit */
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
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
869 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16Stateful(
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
870 const char *string, /* UTF-16 encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
871 Py_ssize_t length, /* size of string */
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
872 const char *errors, /* error handling */
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
873 int *byteorder, /* pointer to byteorder to use
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
874 0=native;-1=LE,1=BE; updated on
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
875 exit */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
876 Py_ssize_t *consumed /* bytes consumed */
33428
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
877 );
57478a13fbf6 SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
Walter Dörwald <walter@livinglogic.de>
parents: 32951
diff changeset
878
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
879 /* 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
880 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
881
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
882 PyAPI_FUNC(PyObject*) PyUnicode_AsUTF16String(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
883 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
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
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
886 /* 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
887 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
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 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
890 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
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 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
893 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
894 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
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 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
897 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
898 prepended.
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 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
901 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
902 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
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 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
905
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
906 PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
907 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
908 Py_ssize_t length, /* number of Py_UNICODE chars to encode */
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 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
910 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
911 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
912
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
913 /* --- 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
914
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
915 PyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
916 const char *string, /* Unicode-Escape encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
917 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
918 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
919 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
920
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
921 PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
922 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
923 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
924
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
925 PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
926 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
927 Py_ssize_t length /* Number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
928 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
929
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
930 /* --- 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
931
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
932 PyAPI_FUNC(PyObject*) PyUnicode_DecodeRawUnicodeEscape(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
933 const char *string, /* Raw-Unicode-Escape encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
934 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
935 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
936 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
937
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
938 PyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
939 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
940 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
941
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
942 PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
943 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
944 Py_ssize_t length /* Number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
945 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
946
35485
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
947 /* --- Unicode Internal Codec ---------------------------------------------
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
948
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
949 Only for internal use in _codecsmodule.c */
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
950
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
951 PyObject *_PyUnicode_DecodeUnicodeInternal(
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
952 const char *string,
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
953 Py_ssize_t length,
35485
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
954 const char *errors
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
955 );
6b8c55877755 Backport checkin:
Walter Dörwald <walter@livinglogic.de>
parents: 34016
diff changeset
956
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
957 /* --- 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
958
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
959 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
960
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
961 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
962
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
963 PyAPI_FUNC(PyObject*) PyUnicode_DecodeLatin1(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
964 const char *string, /* Latin-1 encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
965 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
966 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
967 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
968
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
969 PyAPI_FUNC(PyObject*) PyUnicode_AsLatin1String(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
970 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
971 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
972
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
973 PyAPI_FUNC(PyObject*) PyUnicode_EncodeLatin1(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
974 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
975 Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
976 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
977 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
978
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
979 /* --- 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
980
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
981 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
982
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
983 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
984
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
985 PyAPI_FUNC(PyObject*) PyUnicode_DecodeASCII(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
986 const char *string, /* ASCII encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
987 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
988 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
989 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
990
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
991 PyAPI_FUNC(PyObject*) PyUnicode_AsASCIIString(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
992 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
993 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
994
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
995 PyAPI_FUNC(PyObject*) PyUnicode_EncodeASCII(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
996 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
997 Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
998 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
999 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1000
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1001 /* --- 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
1002
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1003 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
1004
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1005 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
1006 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
1007 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
1008 error).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1009
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1010 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
1011 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
1012 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
1013 error).
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1014
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1015 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
1016 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
1017 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
1018 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
1019 points.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1020
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1021 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1022
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1023 PyAPI_FUNC(PyObject*) PyUnicode_DecodeCharmap(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1024 const char *string, /* Encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1025 Py_ssize_t length, /* size of string */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1026 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
1027 (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
1028 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
1029 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1030
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1031 PyAPI_FUNC(PyObject*) PyUnicode_AsCharmapString(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1032 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
1033 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
1034 (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
1035 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1036
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1037 PyAPI_FUNC(PyObject*) PyUnicode_EncodeCharmap(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1038 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1039 Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1040 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
1041 (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
1042 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
1043 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1044
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1045 /* 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
1046 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
1047 object.
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1048
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1049 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
1050 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
1051
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1052 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
1053 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
1054 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
1055
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1056 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1057
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1058 PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1059 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1060 Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1061 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
1062 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
1063 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1064
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1065 #ifdef MS_WIN32
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
1066
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1067 /* --- MBCS codecs for Windows -------------------------------------------- */
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
1068
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1069 PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCS(
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1070 const char *string, /* MBCS encoded string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1071 Py_ssize_t length, /* size of string */
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1072 const char *errors /* error handling */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1073 );
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1074
38817
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1075 PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful(
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1076 const char *string, /* MBCS encoded string */
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1077 Py_ssize_t length, /* size of string */
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1078 const char *errors, /* error handling */
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1079 Py_ssize_t *consumed /* bytes consumed */
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1080 );
549c547700af Patch #1455898: Incremental mode for "mbcs" codec.
Martin v. Löwis <martin@v.loewis.de>
parents: 38586
diff changeset
1081
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1082 PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString(
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1083 PyObject *unicode /* Unicode object */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1084 );
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1085
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1086 PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS(
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1087 const Py_UNICODE *data, /* Unicode char buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1088 Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1089 const char *errors /* error handling */
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1090 );
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1091
12074
65f35b73e350 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12066
diff changeset
1092 #endif /* MS_WIN32 */
12066
86cffe50fb17 Prototypes added for MBCS codecs. (Win32 only.)
Guido van Rossum <guido@python.org>
parents: 12025
diff changeset
1093
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
1094 /* --- 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
1095
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
1096 /* 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
1097 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
1098
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
1099 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
1100 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
1101
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
1102 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
1103 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
1104 \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
1105 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
1106
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
1107 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
1108
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
1109 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
1110 "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
1111 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
1112 "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
1113
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
1114 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
1115
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
1116 */
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
1117
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1118 PyAPI_FUNC(int) PyUnicode_EncodeDecimal(
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
1119 Py_UNICODE *s, /* Unicode buffer */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1120 Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
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
1121 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
1122 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
1123 );
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
1124
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1125 /* --- 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
1126
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1127 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
1128 (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
1129 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
1130
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1131 /* 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
1132
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1133 PyAPI_FUNC(PyObject*) PyUnicode_Concat(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1134 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
1135 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
1136 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1137
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1138 /* 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
1139
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1140 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
1141 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
1142
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1143 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
1144
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1145 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
1146
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1147 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1148
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1149 PyAPI_FUNC(PyObject*) PyUnicode_Split(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1150 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
1151 PyObject *sep, /* String separator */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1152 Py_ssize_t maxsplit /* Maxsplit count */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1153 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1154
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1155 /* 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
1156
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1157 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
1158 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
1159
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1160 PyAPI_FUNC(PyObject*) PyUnicode_Splitlines(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1161 PyObject *s, /* String to split */
12372
214303d32f76 Marc-Andre Lemburg:
Guido van Rossum <guido@python.org>
parents: 12326
diff changeset
1162 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
1163 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1164
38335
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1165 /* Partition a string using a given separator. */
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1166
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1167 PyAPI_FUNC(PyObject*) PyUnicode_Partition(
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1168 PyObject *s, /* String to partition */
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1169 PyObject *sep /* String separator */
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1170 );
f9332ad4287a needforspeed: partition implementation, part two.
Fredrik Lundh <fredrik@pythonware.com>
parents: 38242
diff changeset
1171
38390
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1172 /* Partition a string using a given separator, searching from the end of the
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1173 string. */
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1174
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1175 PyAPI_FUNC(PyObject*) PyUnicode_RPartition(
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1176 PyObject *s, /* String to partition */
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1177 PyObject *sep /* String separator */
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1178 );
76807902a2f5 needforspeed: added rpartition implementation
Fredrik Lundh <fredrik@pythonware.com>
parents: 38335
diff changeset
1179
31199
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1180 /* Split a string giving a list of Unicode strings.
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1181
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1182 If sep is NULL, splitting will be done at all whitespace
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1183 substrings. Otherwise, splits occur at the given separator.
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1184
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1185 At most maxsplit splits will be done. But unlike PyUnicode_Split
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1186 PyUnicode_RSplit splits from the end of the string. If negative,
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1187 no limit is set.
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1188
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1189 Separators are not included in the resulting list.
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1190
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1191 */
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1192
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1193 PyAPI_FUNC(PyObject*) PyUnicode_RSplit(
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1194 PyObject *s, /* String to split */
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1195 PyObject *sep, /* String separator */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1196 Py_ssize_t maxsplit /* Maxsplit count */
31199
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1197 );
504943c89193 Add rsplit method for str and unicode builtin types.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 24753
diff changeset
1198
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1199 /* 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
1200 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
1201
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1202 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
1203 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
1204
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1205 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
1206 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
1207 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
1208
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1209 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1210
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1211 PyAPI_FUNC(PyObject *) PyUnicode_Translate(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1212 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
1213 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
1214 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
1215 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1216
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1217 /* 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
1218 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
1219
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1220 PyAPI_FUNC(PyObject*) PyUnicode_Join(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1221 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
1222 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
1223 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1224
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1225 /* 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
1226 otherwise. */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1227
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1228 PyAPI_FUNC(Py_ssize_t) PyUnicode_Tailmatch(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1229 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
1230 PyObject *substr, /* Prefix or Suffix string */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1231 Py_ssize_t start, /* Start index */
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1232 Py_ssize_t end, /* Stop index */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1233 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
1234 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1235
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1236 /* Return the first position of substr in str[start:end] using the
23561
c5e8f89fd358 Fix for bug [ 561796 ] string.find causes lazy error
Marc-André Lemburg <mal@egenix.com>
parents: 23225
diff changeset
1237 given search direction or -1 if not found. -2 is returned in case
c5e8f89fd358 Fix for bug [ 561796 ] string.find causes lazy error
Marc-André Lemburg <mal@egenix.com>
parents: 23225
diff changeset
1238 an error occurred and an exception is set. */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1239
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1240 PyAPI_FUNC(Py_ssize_t) PyUnicode_Find(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1241 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
1242 PyObject *substr, /* Substring to find */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1243 Py_ssize_t start, /* Start index */
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1244 Py_ssize_t end, /* Stop index */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1245 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
1246 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1247
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
1248 /* 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
1249
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1250 PyAPI_FUNC(Py_ssize_t) PyUnicode_Count(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1251 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
1252 PyObject *substr, /* Substring to count */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1253 Py_ssize_t start, /* Start index */
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1254 Py_ssize_t end /* Stop index */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1255 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1256
12025
7994d9db7f4d On 17-Mar-2000, Marc-Andre Lemburg said:
Barry Warsaw <barry@python.org>
parents: 12002
diff changeset
1257 /* 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
1258 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
1259
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1260 PyAPI_FUNC(PyObject *) PyUnicode_Replace(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1261 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
1262 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
1263 PyObject *replstr, /* Substring to replace */
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 35808
diff changeset
1264 Py_ssize_t maxcount /* Max. number of replacements to apply;
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1265 -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
1266 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1267
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1268 /* 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
1269 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
1270
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1271 PyAPI_FUNC(int) PyUnicode_Compare(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1272 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
1273 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
1274 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1275
39487
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1276 /* Rich compare two strings and return one of the following:
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1277
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1278 - NULL in case an exception was raised
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1279 - Py_True or Py_False for successfuly comparisons
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1280 - Py_NotImplemented in case the type combination is unknown
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1281
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1282 Note that Py_EQ and Py_NE comparisons can cause a UnicodeWarning in
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1283 case the conversion of the arguments to Unicode fails with a
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1284 UnicodeDecodeError.
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1285
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1286 Possible values for op:
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1287
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1288 Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1289
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1290 */
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1291
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1292 PyAPI_FUNC(PyObject *) PyUnicode_RichCompare(
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1293 PyObject *left, /* Left string */
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1294 PyObject *right, /* Right string */
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1295 int op /* Operation: Py_EQ, Py_NE, Py_GT, etc. */
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1296 );
635b09b1f542 Slightly revised version of patch #1538956:
Marc-André Lemburg <mal@egenix.com>
parents: 38817
diff changeset
1297
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
1298 /* 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
1299 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
1300
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1301 PyAPI_FUNC(PyObject *) PyUnicode_Format(
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1302 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
1303 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
1304 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1305
12002
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1306 /* 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
1307 accordingly.
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1308
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1309 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
1310 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
1311
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1312 PyAPI_FUNC(int) PyUnicode_Contains(
12002
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1313 PyObject *container, /* Container string */
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1314 PyObject *element /* Element string */
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1315 );
d50fa3670b66 Marc-Andre Lemburg: add declaration for PyUnicode_Contains().
Guido van Rossum <guido@python.org>
parents: 11962
diff changeset
1316
23225
e639e34ef901 Apply patch diff.txt from SF feature request
Walter Dörwald <walter@livinglogic.de>
parents: 20554
diff changeset
1317 /* Externally visible for str.strip(unicode) */
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1318 PyAPI_FUNC(PyObject *) _PyUnicode_XStrip(
23225
e639e34ef901 Apply patch diff.txt from SF feature request
Walter Dörwald <walter@livinglogic.de>
parents: 20554
diff changeset
1319 PyUnicodeObject *self,
e639e34ef901 Apply patch diff.txt from SF feature request
Walter Dörwald <walter@livinglogic.de>
parents: 20554
diff changeset
1320 int striptype,
e639e34ef901 Apply patch diff.txt from SF feature request
Walter Dörwald <walter@livinglogic.de>
parents: 20554
diff changeset
1321 PyObject *sepobj
e639e34ef901 Apply patch diff.txt from SF feature request
Walter Dörwald <walter@livinglogic.de>
parents: 20554
diff changeset
1322 );
e639e34ef901 Apply patch diff.txt from SF feature request
Walter Dörwald <walter@livinglogic.de>
parents: 20554
diff changeset
1323
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1324 /* === 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
1325
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1326 /* 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
1327 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
1328
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1329 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
1330
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1331 */
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1332
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1333 PyAPI_FUNC(int) _PyUnicode_IsLowercase(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1334 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1335 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1336
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1337 PyAPI_FUNC(int) _PyUnicode_IsUppercase(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1338 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1339 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1340
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1341 PyAPI_FUNC(int) _PyUnicode_IsTitlecase(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1342 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1343 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1344
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1345 PyAPI_FUNC(int) _PyUnicode_IsWhitespace(
35808
c2a98ba371c8 _PyUnicode_IsWhitespace(),
Tim Peters <tim.peters@gmail.com>
parents: 35485
diff changeset
1346 const Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1347 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1348
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1349 PyAPI_FUNC(int) _PyUnicode_IsLinebreak(
35808
c2a98ba371c8 _PyUnicode_IsWhitespace(),
Tim Peters <tim.peters@gmail.com>
parents: 35485
diff changeset
1350 const Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1351 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1352
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1353 PyAPI_FUNC(Py_UNICODE) _PyUnicode_ToLowercase(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1354 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1355 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1356
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1357 PyAPI_FUNC(Py_UNICODE) _PyUnicode_ToUppercase(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1358 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1359 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1360
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1361 PyAPI_FUNC(Py_UNICODE) _PyUnicode_ToTitlecase(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1362 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1363 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1364
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1365 PyAPI_FUNC(int) _PyUnicode_ToDecimalDigit(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1366 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1367 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1368
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1369 PyAPI_FUNC(int) _PyUnicode_ToDigit(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1370 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1371 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1372
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1373 PyAPI_FUNC(double) _PyUnicode_ToNumeric(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1374 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1375 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1376
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1377 PyAPI_FUNC(int) _PyUnicode_IsDecimalDigit(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1378 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1379 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1380
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1381 PyAPI_FUNC(int) _PyUnicode_IsDigit(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1382 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1383 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1384
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1385 PyAPI_FUNC(int) _PyUnicode_IsNumeric(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1386 Py_UNICODE ch /* Unicode character */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1387 );
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1388
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 24737
diff changeset
1389 PyAPI_FUNC(int) _PyUnicode_IsAlpha(
18332
49acc8ac60c2 removed "register const" from scalar arguments to the unicode
Fredrik Lundh <fredrik@pythonware.com>
parents: 18324
diff changeset
1390 Py_UNICODE ch /* Unicode character */
13352
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
1391 );
d88535ccaee5 Modified the ISALPHA and ISALNUM macros to use the new lookup APIs
Marc-André Lemburg <mal@egenix.com>
parents: 13320
diff changeset
1392
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1393 #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
1394 }
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1395 #endif
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19121
diff changeset
1396 #endif /* Py_USING_UNICODE */
11962
be98e055e39d Unicode implementation by Marc-Andre Lemburg based on original code by Fredrik Lundh.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1397 #endif /* !Py_UNICODEOBJECT_H */