version 1.1.1.2, 2012/02/21 23:50:25
|
version 1.1.1.3, 2013/07/22 08:25:55
|
Line 6
|
Line 6
|
and semantics are as close as possible to those of the Perl 5 language. |
and semantics are as close as possible to those of the Perl 5 language. |
|
|
Written by Philip Hazel |
Written by Philip Hazel |
Copyright (c) 1997-2012 University of Cambridge | Copyright (c) 1997-2013 University of Cambridge |
|
|
----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
Line 64 Returns: TRUE if character matches, else FALSE
|
Line 64 Returns: TRUE if character matches, else FALSE
|
*/ |
*/ |
|
|
BOOL |
BOOL |
PRIV(xclass)(int c, const pcre_uchar *data, BOOL utf) | PRIV(xclass)(pcre_uint32 c, const pcre_uchar *data, BOOL utf) |
{ |
{ |
int t; | pcre_uchar t; |
BOOL negated = (*data & XCL_NOT) != 0; |
BOOL negated = (*data & XCL_NOT) != 0; |
|
|
(void)utf; |
(void)utf; |
Line 94 if ((*data++ & XCL_MAP) != 0) data += 32 / sizeof(pcre
|
Line 94 if ((*data++ & XCL_MAP) != 0) data += 32 / sizeof(pcre
|
|
|
while ((t = *data++) != XCL_END) |
while ((t = *data++) != XCL_END) |
{ |
{ |
int x, y; | pcre_uint32 x, y; |
if (t == XCL_SINGLE) |
if (t == XCL_SINGLE) |
{ |
{ |
#ifdef SUPPORT_UTF |
#ifdef SUPPORT_UTF |
Line 178 while ((t = *data++) != XCL_END)
|
Line 178 while ((t = *data++) != XCL_END)
|
PRIV(ucp_gentype)[prop->chartype] == ucp_N || c == CHAR_UNDERSCORE) |
PRIV(ucp_gentype)[prop->chartype] == ucp_N || c == CHAR_UNDERSCORE) |
== (t == XCL_PROP)) |
== (t == XCL_PROP)) |
return !negated; |
return !negated; |
|
break; |
|
|
|
case PT_UCNC: |
|
if (c < 0xa0) |
|
{ |
|
if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || |
|
c == CHAR_GRAVE_ACCENT) == (t == XCL_PROP)) |
|
return !negated; |
|
} |
|
else |
|
{ |
|
if ((c < 0xd800 || c > 0xdfff) == (t == XCL_PROP)) |
|
return !negated; |
|
} |
break; |
break; |
|
|
/* This should never occur, but compilers may mutter if there is no |
/* This should never occur, but compilers may mutter if there is no |