/* regcomp.h
*
* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- * 2000, 2001, 2002, 2003, by Larry Wall and others
+ * 2000, 2001, 2002, 2003, 2005 by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
* compile to execute that permits the execute phase to run lots faster on
* simple cases. They are:
*
- * regstart sv that must begin a match; Nullch if none obvious
+ * regstart sv that must begin a match; NULL if none obvious
* reganch is the match anchored (at beginning-of-line only)?
* regmust string (pointer into program) that match must include, or NULL
* [regmust changed to SV* for bminstr()--law]
#undef NEXT_OFF
#undef NODE_ALIGN
-#ifndef lint
-# define NEXT_OFF(p) ((p)->next_off)
-# define NODE_ALIGN(node)
-# define NODE_ALIGN_FILL(node) ((node)->flags = 0xde) /* deadbeef */
-#else /* lint */
-# define NEXT_OFF(p) 0
-# define NODE_ALIGN(node)
-# define NODE_ALIGN_FILL(node)
-#endif /* lint */
+#define NEXT_OFF(p) ((p)->next_off)
+#define NODE_ALIGN(node)
+#define NODE_ALIGN_FILL(node) ((node)->flags = 0xde) /* deadbeef */
#define SIZE_ALIGN NODE_ALIGN
/*
* Utility definitions.
*/
-#ifndef lint
#ifndef CHARMASK
-#define UCHARAT(p) ((int)*(U8*)(p))
+# define UCHARAT(p) ((int)*(const U8*)(p))
#else
-#define UCHARAT(p) ((int)*(p)&CHARMASK)
+# define UCHARAT(p) ((int)*(p)&CHARMASK)
#endif
-#else /* lint */
-#define UCHARAT(p) PL_regdummy
-#endif /* lint */
#define EXTRA_SIZE(guy) ((sizeof(guy)-1)/sizeof(struct regnode))
EXTCONST U8 PL_varies[];
#else
EXTCONST U8 PL_varies[] = {
- BRANCH, BACK, STAR, PLUS, CURLY, CURLYX, REF, REFF, REFFL,
+ BRANCH, BACK, STAR, PLUS, CURLY, CURLYX, REF, REFF, REFFL,
WHILEM, CURLYM, CURLYN, BRANCHJ, IFTHEN, SUSPEND, CLUMP, 0
};
#endif
/* .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
+ * 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
/* trie related stuff */
-/* an accepting state/position*/
-struct _reg_trie_accepted {
- U8 *endpos;
- U16 wordnum;
-};
+
/* a transition record for the state machine. the
check field determines which state "owns" the
transition. the char the transition is for is
-typedef struct _reg_trie_accepted reg_trie_accepted;
typedef struct _reg_trie_state reg_trie_state;
typedef struct _reg_trie_trans reg_trie_trans;
U16 wordcount;
STRLEN charcount;
U32 laststate;
+ U32 lasttrans;
U16 *charmap;
HV *widecharmap;
reg_trie_state *states;
#define DO_TRIE 1
#define TRIE_DEBUG 1
-
-#define TRIE_SIMPLE_MAX_BUFF 65536
-#define RE_TRIE_MAXBUFF "\022E_TRIE_MAXBUFF"
+#define RE_TRIE_MAXBUF_INIT 65536
+#define RE_TRIE_MAXBUF_NAME "\022E_TRIE_MAXBUF"
#define RE_DEBUG_FLAGS "\022E_DEBUG_FLAGS"
/* If you change these be sure to update ext/re/re.pm as well */
#ifdef DEBUGGING
-#define GET_RE_DEBUG_FLAGS_DECL SV *re_debug_flags; GET_RE_DEBUG_FLAGS;
+#define GET_RE_DEBUG_FLAGS_DECL SV *re_debug_flags = NULL; GET_RE_DEBUG_FLAGS;
#else
#define GET_RE_DEBUG_FLAGS_DECL
#endif