X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regcomp.h;h=1538f8ab58641dba58ebc5c7fa0387c59fbaa7cb;hb=00fdd80d96a7c61ee9d4b02db269b54430a119de;hp=6a01eec63e12a0e4668fce83a56d4e766a15ee36;hpb=d09b2d29781629d5f0436d3a59d2552621af768b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regcomp.h b/regcomp.h index 6a01eec..1538f8a 100644 --- a/regcomp.h +++ b/regcomp.h @@ -150,9 +150,9 @@ struct regnode_2 { #define FILL_ADVANCE_NODE_ARG(ptr, op, arg) STMT_START { \ ARG_SET(ptr, arg); FILL_ADVANCE_NODE(ptr, op); (ptr) += 1; } STMT_END -#define MAGIC 0234 +#define REG_MAGIC 0234 -#define SIZE_ONLY (regcode == ®dummy) +#define SIZE_ONLY (PL_regcode == &PL_regdummy) /* Flags for first parameter byte of ANYOF */ #define ANYOF_INVERT 0x40 @@ -183,11 +183,22 @@ struct regnode_2 { #define UCHARAT(p) ((int)*(p)&CHARMASK) #endif #else /* lint */ -#define UCHARAT(p) regdummy +#define UCHARAT(p) PL_regdummy #endif /* lint */ -#define FAIL(m) croak ("/%.127s/: %s", regprecomp,m) -#define FAIL2(pat,m) re_croak2("/%.127s/: ",pat,regprecomp,m) +#define FAIL(m) \ + STMT_START { \ + if (!SIZE_ONLY) \ + SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx); \ + croak ("/%.127s/: %s", PL_regprecomp,m); \ + } STMT_END + +#define FAIL2(pat,m) \ + STMT_START { \ + if (!SIZE_ONLY) \ + SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx); \ + re_croak2("/%.127s/: ",pat,PL_regprecomp,m); \ + } STMT_END #define EXTRA_SIZE(guy) ((sizeof(guy)-1)/sizeof(struct regnode)) @@ -200,23 +211,26 @@ struct regnode_2 { /* The following have no fixed length. char* since we do strchr on it. */ #ifndef DOINIT -EXTCONST char varies[]; +EXTCONST char PL_varies[]; #else -EXTCONST char varies[] = { +EXTCONST char PL_varies[] = { BRANCH, BACK, STAR, PLUS, CURLY, CURLYX, REF, REFF, REFFL, - WHILEM, CURLYM, CURLYN, BRANCHJ, IFTHEN, SUSPEND, 0 + WHILEM, CURLYM, CURLYN, BRANCHJ, IFTHEN, SUSPEND, CLUMP, 0 }; #endif /* The following always have a length of 1. char* since we do strchr on it. */ +/* (Note that lenght 1 means "one character" under UTF8, not "one octet".) */ #ifndef DOINIT -EXTCONST char simple[]; +EXTCONST char PL_simple[]; #else -EXTCONST char simple[] = { - ANY, SANY, ANYOF, - ALNUM, ALNUML, NALNUM, NALNUML, - SPACE, SPACEL, NSPACE, NSPACEL, - DIGIT, NDIGIT, 0 +EXTCONST char PL_simple[] = { + REG_ANY, ANYUTF8, SANY, SANYUTF8, ANYOF, ANYOFUTF8, + ALNUM, ALNUMUTF8, ALNUML, ALNUMLUTF8, + NALNUM, NALNUMUTF8, NALNUML, NALNUMLUTF8, + SPACE, SPACEUTF8, SPACEL, SPACELUTF8, + NSPACE, NSPACEUTF8, NSPACEL, NSPACELUTF8, + DIGIT, DIGITUTF8, NDIGIT, NDIGITUTF8, 0 }; #endif