diff options
author | Fredrik Lundh <fredrik@pythonware.com> | 2000-07-03 18:44:21 (GMT) |
---|---|---|
committer | Fredrik Lundh <fredrik@pythonware.com> | 2000-07-03 18:44:21 (GMT) |
commit | 6f013982366154ce570f69b6117dbcc6b1d5d89a (patch) | |
tree | 00f3bcae833f7bbcb15ba1a22ef2bdac3c148033 /Modules/sre.h | |
parent | 40c48685a2b16dc7fdccd82fe1d927e52ed5e3db (diff) | |
download | cpython-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.h | 17 |
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 */ |