Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 13c3e38

Browse files
committed
Add XID_Start and XID_Continue properties to unicodectype.
1 parent ff398c6 commit 13c3e38

4 files changed

Lines changed: 1020 additions & 899 deletions

File tree

Include/unicodeobject.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
205205
# define _PyUnicode_IsLowercase _PyUnicodeUCS2_IsLowercase
206206
# define _PyUnicode_IsNumeric _PyUnicodeUCS2_IsNumeric
207207
# define _PyUnicode_IsTitlecase _PyUnicodeUCS2_IsTitlecase
208+
# define _PyUnicode_IsXidStart _PyUnicodeUCS2_IsXidStart
209+
# define _PyUnicode_IsXidContinue _PyUnicodeUCS2_IsXidContinue
208210
# define _PyUnicode_IsUppercase _PyUnicodeUCS2_IsUppercase
209211
# define _PyUnicode_IsWhitespace _PyUnicodeUCS2_IsWhitespace
210212
# define _PyUnicode_ToDecimalDigit _PyUnicodeUCS2_ToDecimalDigit
@@ -289,6 +291,8 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
289291
# define _PyUnicode_IsLowercase _PyUnicodeUCS4_IsLowercase
290292
# define _PyUnicode_IsNumeric _PyUnicodeUCS4_IsNumeric
291293
# define _PyUnicode_IsTitlecase _PyUnicodeUCS4_IsTitlecase
294+
# define _PyUnicode_IsXidStart _PyUnicodeUCS4_IsXidStart
295+
# define _PyUnicode_IsXidContinue _PyUnicodeUCS4_IsXidContinue
292296
# define _PyUnicode_IsUppercase _PyUnicodeUCS4_IsUppercase
293297
# define _PyUnicode_IsWhitespace _PyUnicodeUCS4_IsWhitespace
294298
# define _PyUnicode_ToDecimalDigit _PyUnicodeUCS4_ToDecimalDigit
@@ -1274,6 +1278,14 @@ PyAPI_FUNC(int) _PyUnicode_IsTitlecase(
12741278
Py_UNICODE ch /* Unicode character */
12751279
);
12761280

1281+
PyAPI_FUNC(int) _PyUnicode_IsXidStart(
1282+
Py_UNICODE ch /* Unicode character */
1283+
);
1284+
1285+
PyAPI_FUNC(int) _PyUnicode_IsXidContinue(
1286+
Py_UNICODE ch /* Unicode character */
1287+
);
1288+
12771289
PyAPI_FUNC(int) _PyUnicode_IsWhitespace(
12781290
const Py_UNICODE ch /* Unicode character */
12791291
);

Objects/unicodectype.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#define SPACE_MASK 0x20
2020
#define TITLE_MASK 0x40
2121
#define UPPER_MASK 0x80
22+
#define XID_START_MASK 0x100
23+
#define XID_CONTINUE_MASK 0x200
2224

2325
typedef struct {
2426
const Py_UNICODE upper;
@@ -98,6 +100,26 @@ int _PyUnicode_IsTitlecase(Py_UNICODE ch)
98100
return (ctype->flags & TITLE_MASK) != 0;
99101
}
100102

103+
/* Returns 1 for Unicode characters having the XID_Start property, 0
104+
otherwise. */
105+
106+
int _PyUnicode_IsXidStart(Py_UNICODE ch)
107+
{
108+
const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
109+
110+
return (ctype->flags & XID_START_MASK) != 0;
111+
}
112+
113+
/* Returns 1 for Unicode characters having the XID_Continue property,
114+
0 otherwise. */
115+
116+
int _PyUnicode_IsXidContinue(Py_UNICODE ch)
117+
{
118+
const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
119+
120+
return (ctype->flags & XID_CONTINUE_MASK) != 0;
121+
}
122+
101123
/* Returns the integer decimal (0-9) for Unicode characters having
102124
this property, -1 otherwise. */
103125

0 commit comments

Comments
 (0)