summaryrefslogtreecommitdiff
path: root/regnodes.h
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2022-04-03 15:48:20 +0200
committerYves Orton <demerphq@gmail.com>2022-08-03 11:07:09 +0200
commitec5e6b1346dbbfc24682d87768357653663ef1eb (patch)
tree6ea9ac665d7f5552ff1908a9ef74ba6125cd80a6 /regnodes.h
parentf946e55ad047822276d1420651e4dc2d9caf3fce (diff)
downloadperl-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.h118
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