diff options
author | Marc-André Lemburg <mal@egenix.com> | 2009-01-05 19:43:35 (GMT) |
---|---|---|
committer | Marc-André Lemburg <mal@egenix.com> | 2009-01-05 19:43:35 (GMT) |
commit | 3741bfdd3c789704f95b7969afa52f1053660e90 (patch) | |
tree | 2ed475e7ca37f441ae9360c31531ae6a50c5aa16 /Include | |
parent | f99b0110a8b54524b6701a09b44d2eb149581385 (diff) | |
download | cpython-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.h | 38 |
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. |