Py_UNICODE_HIGH_SURROGATE() and Py_UNICODE_LOW_SURROGATE() macros

And use surrogates macros everywhere in unicodeobject.c
This commit is contained in:
Victor Stinner 2011-11-29 22:58:13 +01:00
parent 7b578b3d89
commit 551ac95733
2 changed files with 23 additions and 26 deletions

View file

@ -187,6 +187,10 @@ typedef unsigned char Py_UCS1;
#define Py_UNICODE_JOIN_SURROGATES(high, low) \
(((((Py_UCS4)(high) & 0x03FF) << 10) | \
((Py_UCS4)(low) & 0x03FF)) + 0x10000)
/* high surrogate = top 10 bits added to D800 */
#define Py_UNICODE_HIGH_SURROGATE(ch) (0xD800 | (((ch) - 0x10000) >> 10))
/* low surrogate = bottom 10 bits added to DC00 */
#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 | (((ch) - 0x10000) & 0x3FF))
/* Check if substring matches at given offset. The offset must be
valid, and the substring must not be empty. */