X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regcomp.h;h=16cf957816747f6aedb369cd9f17a9b7d65e25fc;hb=158e3910f3d0bce487277fa0db25247b664ed87c;hp=b9542c9bce811e8abac472e84401375afe1f9b06;hpb=e8e3b0fb0cb9321810604b285f562851680b538c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regcomp.h b/regcomp.h index b9542c9..16cf957 100644 --- a/regcomp.h +++ b/regcomp.h @@ -286,6 +286,14 @@ struct regnode_charclass_class { /* has [[:blah:]] classes */ #define ANYOF_BITMAP_CLEAR(p,c) (ANYOF_BITMAP_BYTE(p, c) &= ~ANYOF_BIT(c)) #define ANYOF_BITMAP_TEST(p, c) (ANYOF_BITMAP_BYTE(p, c) & ANYOF_BIT(c)) +#define ANYOF_BITMAP_SETALL(p) \ + memset (ANYOF_BITMAP(p), 255, ANYOF_BITMAP_SIZE) +#define ANYOF_BITMAP_CLEARALL(p) \ + Zero (ANYOF_BITMAP(p), ANYOF_BITMAP_SIZE) +/* Check that all 256 bits are all set. Used in S_cl_is_anything() */ +#define ANYOF_BITMAP_TESTALLSET(p) \ + memEQ (ANYOF_BITMAP(p), "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377", ANYOF_BITMAP_SIZE) + #define ANYOF_SKIP ((ANYOF_SIZE - 1)/sizeof(regnode)) #define ANYOF_CLASS_SKIP ((ANYOF_CLASS_SIZE - 1)/sizeof(regnode)) #define ANYOF_CLASS_ADD_SKIP (ANYOF_CLASS_SKIP - ANYOF_SKIP) @@ -309,7 +317,8 @@ struct regnode_charclass_class { /* has [[:blah:]] classes */ #define REG_SEEN_LOOKBEHIND 2 #define REG_SEEN_GPOS 4 #define REG_SEEN_EVAL 8 -#define REG_SEEN_SANY 16 +#define REG_SEEN_CANY 16 +#define REG_SEEN_SANY REG_SEEN_CANY /* src bckwrd cmpt */ START_EXTERN_C @@ -331,7 +340,7 @@ EXTCONST U8 PL_varies[] = { EXTCONST U8 PL_simple[]; #else EXTCONST U8 PL_simple[] = { - REG_ANY, SANY, + REG_ANY, SANY, CANY, ANYOF, ALNUM, ALNUML, NALNUM, NALNUML, @@ -350,6 +359,16 @@ typedef struct re_scream_pos_data_s I32 *scream_pos; /* Internal iterator of scream. */ } re_scream_pos_data; +/* .what is a character array with one character for each member of .data + * The character describes the function of the corresponding .data item: + * f - start-class data for regstclass optimization + * n - Root of op tree for (?{EVAL}) item + * o - Start op for (?{EVAL}) item + * p - Pad for (?{EVAL} item + * s - swash for unicode-style character class + * 20010712 mjd@plover.com + * (Remember to update re_dup() and pregfree() if you add any items.) + */ struct reg_data { U32 count; U8 *what;