summaryrefslogtreecommitdiffstats
path: root/Modules/sre.h
diff options
context:
space:
mode:
authorFredrik Lundh <fredrik@pythonware.com>2000-07-03 18:44:21 (GMT)
committerFredrik Lundh <fredrik@pythonware.com>2000-07-03 18:44:21 (GMT)
commit6f013982366154ce570f69b6117dbcc6b1d5d89a (patch)
tree00f3bcae833f7bbcb15ba1a22ef2bdac3c148033 /Modules/sre.h
parent40c48685a2b16dc7fdccd82fe1d927e52ed5e3db (diff)
downloadcpython-6f013982366154ce570f69b6117dbcc6b1d5d89a.zip
cpython-6f013982366154ce570f69b6117dbcc6b1d5d89a.tar.gz
cpython-6f013982366154ce570f69b6117dbcc6b1d5d89a.tar.bz2
- added lookbehind support (?<=pattern), (?<!pattern).
the pattern must have a fixed width. - got rid of array-module dependencies; the match pro- gram is now stored inside the pattern object, rather than in an extra string buffer. - cleaned up a various of potential leaks, api abuses, and other minors in the engine module. - use mal's new isalnum macro, rather than my own work- around. - untabified test_sre.py. seems like I removed a couple of trailing spaces in the process...
Diffstat (limited to 'Modules/sre.h')
-rw-r--r--Modules/sre.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/Modules/sre.h b/Modules/sre.h
index f66d608..d4e93da 100644
--- a/Modules/sre.h
+++ b/Modules/sre.h
@@ -17,26 +17,27 @@
#define SRE_CODE unsigned short
typedef struct {
- PyObject_HEAD
- PyObject* code; /* link to the code string object */
+ PyObject_VAR_HEAD
int groups;
PyObject* groupindex;
PyObject* indexgroup;
/* compatibility */
PyObject* pattern; /* pattern source (or None) */
int flags; /* flags used when compiling pattern source */
+ /* pattern code */
+ SRE_CODE code[1];
} PatternObject;
-#define PatternObject_GetCode(o)\
- ((void*) PyString_AS_STRING(((PatternObject*)(o))->code))
+#define PatternObject_GetCode(o) (((PatternObject*)(o))->code)
typedef struct {
- PyObject_HEAD
+ PyObject_VAR_HEAD
PyObject* string; /* link to the target string */
PatternObject* pattern; /* link to the regex (pattern) object */
- int index; /* last index marker seen by the engine (-1 if none) */
+ int pos, endpos; /* current target slice */
+ int lastindex; /* last index marker seen by the engine (-1 if none) */
int groups; /* number of groups (start/end marks) */
- int mark[2];
+ int mark[1];
} MatchObject;
typedef unsigned int (*SRE_TOLOWER_HOOK)(unsigned int ch);
@@ -59,7 +60,7 @@ typedef struct {
/* character size */
int charsize;
/* registers */
- int index;
+ int lastindex;
int lastmark;
void* mark[SRE_MARK_SIZE];
/* backtracking stack */