summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorMarc-André Lemburg <mal@egenix.com>2009-01-05 19:43:35 (GMT)
committerMarc-André Lemburg <mal@egenix.com>2009-01-05 19:43:35 (GMT)
commit3741bfdd3c789704f95b7969afa52f1053660e90 (patch)
tree2ed475e7ca37f441ae9360c31531ae6a50c5aa16 /Include
parentf99b0110a8b54524b6701a09b44d2eb149581385 (diff)
downloadcpython-3741bfdd3c789704f95b7969afa52f1053660e90.zip
cpython-3741bfdd3c789704f95b7969afa52f1053660e90.tar.gz
cpython-3741bfdd3c789704f95b7969afa52f1053660e90.tar.bz2
Fix #4846 (Py_UNICODE_ISSPACE causes linker error) by moving the declaration
into the extern "C" section. Add a few more comments and apply some minor edits to make the file contents fit the original structure again.
Diffstat (limited to 'Include')
-rw-r--r--Include/unicodeobject.h38
1 files changed, 28 insertions, 10 deletions
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index cff0ac3..2e399a0 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -130,6 +130,10 @@ typedef unsigned int Py_UCS4;
typedef unsigned long Py_UCS4;
#endif
+/* Py_UNICODE is the native Unicode storage format (code unit) used by
+ Python and represents a single Unicode element in the Unicode
+ type. */
+
typedef PY_UNICODE_TYPE Py_UNICODE;
/* --- UCS-2/UCS-4 Name Mangling ------------------------------------------ */
@@ -350,12 +354,12 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
#else
-/* Since splitting on whitespace is an important use case, and whitespace
- in most situations is solely ASCII whitespace, we optimize for the common
- case by using a quick look-up table with an inlined check.
- */
-PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
+/* Since splitting on whitespace is an important use case, and
+ whitespace in most situations is solely ASCII whitespace, we
+ optimize for the common case by using a quick look-up table
+ _Py_ascii_whitespace (see below) with an inlined check.
+ */
#define Py_UNICODE_ISSPACE(ch) \
((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch))
@@ -389,13 +393,14 @@ PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
#define Py_UNICODE_COPY(target, source, length) \
Py_MEMCPY((target), (source), (length)*sizeof(Py_UNICODE))
-#define Py_UNICODE_FILL(target, value, length) do\
- {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\
+#define Py_UNICODE_FILL(target, value, length) \
+ do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\
for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\
} while (0)
-/* check if substring matches at given offset. the offset must be
+/* Check if substring matches at given offset. the offset must be
valid, and the substring must not be empty */
+
#define Py_UNICODE_MATCH(string, offset, substring) \
((*((string)->str + (offset)) == *((substring)->str)) && \
((*((string)->str + (offset) + (substring)->length-1) == *((substring)->str + (substring)->length-1))) && \
@@ -405,8 +410,6 @@ PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
extern "C" {
#endif
-PyAPI_FUNC(int) PyUnicode_ClearFreeList(void);
-
/* --- Unicode Type ------------------------------------------------------- */
typedef struct {
@@ -605,6 +608,17 @@ PyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar(
PyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal);
+/* --- Free-list management ----------------------------------------------- */
+
+/* Clear the free list used by the Unicode implementation.
+
+ This can be used to release memory used for objects on the free
+ list back to the Python memory allocator.
+
+*/
+
+PyAPI_FUNC(int) PyUnicode_ClearFreeList(void);
+
/* === Builtin Codecs =====================================================
Many of these APIs take two arguments encoding and errors. These
@@ -1323,6 +1337,10 @@ PyAPI_FUNC(PyObject *) _PyUnicode_XStrip(
/* === Characters Type APIs =============================================== */
+/* Helper array used by Py_UNICODE_ISSPACE(). */
+
+PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
+
/* These should not be used directly. Use the Py_UNICODE_IS* and
Py_UNICODE_TO* macros instead.