summaryrefslogtreecommitdiffstats
path: root/Modules/sre.h
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2000-06-01 17:39:12 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2000-06-01 17:39:12 (GMT)
commitb1aa19515ffdb84c6633ee0344196fd8bd50ade0 (patch)
tree457a1072b56a4981029f80032681a31fd5f29ef7 /Modules/sre.h
parent0292d78e91eafbd9946323db845acc59dfac6ff6 (diff)
downloadcpython-b1aa19515ffdb84c6633ee0344196fd8bd50ade0.zip
cpython-b1aa19515ffdb84c6633ee0344196fd8bd50ade0.tar.gz
cpython-b1aa19515ffdb84c6633ee0344196fd8bd50ade0.tar.bz2
Fredrik Lundh: here's the 96.6% version of SRE
Diffstat (limited to 'Modules/sre.h')
-rw-r--r--Modules/sre.h34
1 files changed, 29 insertions, 5 deletions
diff --git a/Modules/sre.h b/Modules/sre.h
index 2936b05..3664c9d 100644
--- a/Modules/sre.h
+++ b/Modules/sre.h
@@ -14,17 +14,18 @@
#include "sre_constants.h"
-/* Python objects */
-
typedef struct {
PyObject_HEAD
PyObject* code; /* link to the code string object */
- PyObject* pattern; /* link to the pattern source (or None) */
int groups;
PyObject* groupindex;
+ /* compatibility */
+ PyObject* pattern; /* pattern source (or None) */
+ int flags; /* flags used when compiling pattern source */
} PatternObject;
-#define PatternObject_GetCode(o) ((void*) PyString_AS_STRING((o)->code))
+#define PatternObject_GetCode(o)\
+ ((void*) PyString_AS_STRING(((PatternObject*)(o))->code))
typedef struct {
PyObject_HEAD
@@ -34,5 +35,28 @@ typedef struct {
int mark[2];
} MatchObject;
-#endif
+typedef struct {
+ /* string pointers */
+ void* ptr; /* current position (also end of current slice) */
+ void* beginning; /* start of original string */
+ void* start; /* start of current slice */
+ void* end; /* end of original string */
+ /* character size */
+ int charsize;
+ /* registers */
+ int marks;
+ void* mark[64]; /* FIXME: <fl> should be dynamically allocated! */
+ /* backtracking stack */
+ void** stack;
+ int stacksize;
+ int stackbase;
+} SRE_STATE;
+typedef struct {
+ PyObject_HEAD
+ PyObject* pattern;
+ PyObject* string;
+ SRE_STATE state;
+} CursorObject;
+
+#endif