diff options
author | Yves Orton <demerphq@gmail.com> | 2022-04-03 15:48:20 +0200 |
---|---|---|
committer | Yves Orton <demerphq@gmail.com> | 2022-08-03 11:07:09 +0200 |
commit | ec5e6b1346dbbfc24682d87768357653663ef1eb (patch) | |
tree | 6ea9ac665d7f5552ff1908a9ef74ba6125cd80a6 /regnodes.h | |
parent | f946e55ad047822276d1420651e4dc2d9caf3fce (diff) | |
download | perl-ec5e6b1346dbbfc24682d87768357653663ef1eb.tar.gz |
regen/regcomp.pl - create typedefs for all regnode types
Currently we hard code the struct used by the different regop types.
This makes it awkward to change the structure used by a specific regop
as the struct it uses might be used in many contexts, and each cases
of a regop using that structure must be reviewed to see if it needs
to be changed.
This patch adds a typedef for each regnode. The typedefs are named
'tregnode_OP', for instance 'tregnode_TRIE' is typedefed to 'struct
charclass' (at the time of this commit). This allows the code to do
things like 'sizeof(tregnode_TRIE)' and should the exact struct used
for TRIE regops change in the future then no code need be reviewed
or changed.
Diffstat (limited to 'regnodes.h')
-rw-r--r-- | regnodes.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/regnodes.h b/regnodes.h index 673dcf5643..8d29900e0c 100644 --- a/regnodes.h +++ b/regnodes.h @@ -6,6 +6,124 @@ #if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) + +/* typedefs for regex nodes - one typedef per node type */ + +typedef struct regnode_2L tregnode_ACCEPT; +typedef struct regnode_1 tregnode_AHOCORASICK; +typedef struct regnode_charclass tregnode_AHOCORASICKC; +typedef struct regnode_charclass tregnode_ANYOF; +typedef struct regnode_charclass tregnode_ANYOFD; +typedef struct regnode_1 tregnode_ANYOFH; +typedef struct regnode_1 tregnode_ANYOFHb; +typedef struct regnode_bbm tregnode_ANYOFHbbm; +typedef struct regnode_1 tregnode_ANYOFHr; +typedef struct regnode_1 tregnode_ANYOFHs; +typedef struct regnode_charclass tregnode_ANYOFL; +typedef struct regnode_1 tregnode_ANYOFM; +typedef struct regnode_charclass_posixl tregnode_ANYOFPOSIXL; +typedef struct regnode_1 tregnode_ANYOFR; +typedef struct regnode_1 tregnode_ANYOFRb; +typedef struct regnode tregnode_BOUND; +typedef struct regnode tregnode_BOUNDA; +typedef struct regnode tregnode_BOUNDL; +typedef struct regnode tregnode_BOUNDU; +typedef struct regnode tregnode_BRANCH; +typedef struct regnode_1 tregnode_BRANCHJ; +typedef struct regnode_1 tregnode_CLOSE; +typedef struct regnode tregnode_CLUMP; +typedef struct regnode_1 tregnode_COMMIT; +typedef struct regnode_2 tregnode_CURLY; +typedef struct regnode_2 tregnode_CURLYM; +typedef struct regnode_2 tregnode_CURLYN; +typedef struct regnode_2 tregnode_CURLYX; +typedef struct regnode_1 tregnode_CUTGROUP; +typedef struct regnode_1 tregnode_DEFINEP; +typedef struct regnode tregnode_END; +typedef struct regnode tregnode_ENDLIKE; +typedef struct regnode tregnode_EOS; +typedef struct regnode_2L tregnode_EVAL; +typedef struct regnode tregnode_EXACT; +typedef struct regnode tregnode_EXACTF; +typedef struct regnode tregnode_EXACTFAA; +typedef struct regnode tregnode_EXACTFAA_NO_TRIE; +typedef struct regnode tregnode_EXACTFL; +typedef struct regnode tregnode_EXACTFLU8; +typedef struct regnode tregnode_EXACTFU; +typedef struct regnode tregnode_EXACTFUP; +typedef struct regnode tregnode_EXACTFU_REQ8; +typedef struct regnode tregnode_EXACTFU_S_EDGE; +typedef struct regnode tregnode_EXACTL; +typedef struct regnode tregnode_EXACT_REQ8; +typedef struct regnode_2L tregnode_GOSUB; +typedef struct regnode tregnode_GPOS; +typedef struct regnode_1 tregnode_GROUPP; +typedef struct regnode_1 tregnode_GROUPPN; +typedef struct regnode_1 tregnode_IFMATCH; +typedef struct regnode_1 tregnode_IFTHEN; +typedef struct regnode_1 tregnode_INSUBP; +typedef struct regnode tregnode_KEEPS; +typedef struct regnode_1 tregnode_LEXACT; +typedef struct regnode_1 tregnode_LEXACT_REQ8; +typedef struct regnode tregnode_LNBREAK; +typedef struct regnode tregnode_LOGICAL; +typedef struct regnode_1 tregnode_LONGJMP; +typedef struct regnode tregnode_LOOKBEHIND_END; +typedef struct regnode_1 tregnode_MARKPOINT; +typedef struct regnode tregnode_MBOL; +typedef struct regnode tregnode_MEOL; +typedef struct regnode tregnode_MINMOD; +typedef struct regnode_1 tregnode_NANYOFM; +typedef struct regnode tregnode_NBOUND; +typedef struct regnode tregnode_NBOUNDA; +typedef struct regnode tregnode_NBOUNDL; +typedef struct regnode tregnode_NBOUNDU; +typedef struct regnode tregnode_NOTHING; +typedef struct regnode tregnode_NPOSIXA; +typedef struct regnode tregnode_NPOSIXD; +typedef struct regnode tregnode_NPOSIXL; +typedef struct regnode tregnode_NPOSIXU; +typedef struct regnode_1 tregnode_OPEN; +typedef struct regnode_1 tregnode_OPFAIL; +typedef struct regnode tregnode_OPTIMIZED; +typedef struct regnode tregnode_PLUS; +typedef struct regnode tregnode_POSIXA; +typedef struct regnode tregnode_POSIXD; +typedef struct regnode tregnode_POSIXL; +typedef struct regnode tregnode_POSIXU; +typedef struct regnode_1 tregnode_PRUNE; +typedef struct regnode tregnode_PSEUDO; +typedef struct regnode_1 tregnode_REF; +typedef struct regnode_1 tregnode_REFF; +typedef struct regnode_1 tregnode_REFFA; +typedef struct regnode_1 tregnode_REFFAN; +typedef struct regnode_1 tregnode_REFFL; +typedef struct regnode_1 tregnode_REFFLN; +typedef struct regnode_1 tregnode_REFFN; +typedef struct regnode_1 tregnode_REFFU; +typedef struct regnode_1 tregnode_REFFUN; +typedef struct regnode_1 tregnode_REFN; +typedef struct regnode_p tregnode_REGEX_SET; +typedef struct regnode tregnode_REG_ANY; +typedef struct regnode_1 tregnode_RENUM; +typedef struct regnode tregnode_SANY; +typedef struct regnode tregnode_SBOL; +typedef struct regnode tregnode_SEOL; +typedef struct regnode_1 tregnode_SKIP; +typedef struct regnode tregnode_SRCLOSE; +typedef struct regnode tregnode_SROPEN; +typedef struct regnode tregnode_STAR; +typedef struct regnode tregnode_SUCCEED; +typedef struct regnode_1 tregnode_SUSPEND; +typedef struct regnode tregnode_TAIL; +typedef struct regnode_1 tregnode_TRIE; +typedef struct regnode_charclass tregnode_TRIEC; +typedef struct regnode_1 tregnode_UNLESSM; +typedef struct regnode_1 tregnode_VERB; +typedef struct regnode tregnode_WHILEM; + +/* end typedefs */ + /* Regops and State definitions */ #define REGNODE_MAX 111 |