Commit 102f3ad6 authored by Fredrik Lundh's avatar Fredrik Lundh

towards 1.6b1

parent 3de16f3d
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
#include "sre_constants.h" #include "sre_constants.h"
/* size of a code word (must be unsigned short or larger) */
#define SRE_CODE unsigned short
typedef struct { typedef struct {
PyObject_HEAD PyObject_HEAD
PyObject* code; /* link to the code string object */ PyObject* code; /* link to the code string object */
...@@ -35,6 +38,14 @@ typedef struct { ...@@ -35,6 +38,14 @@ typedef struct {
int mark[2]; int mark[2];
} MatchObject; } MatchObject;
typedef unsigned int (*SRE_TOLOWER_HOOK)(unsigned int ch);
typedef struct {
/* stack elements */
SRE_CODE* pattern;
void* ptr;
} SRE_STACK;
typedef struct { typedef struct {
/* string pointers */ /* string pointers */
void* ptr; /* current position (also end of current slice) */ void* ptr; /* current position (also end of current slice) */
...@@ -44,15 +55,18 @@ typedef struct { ...@@ -44,15 +55,18 @@ typedef struct {
/* character size */ /* character size */
int charsize; int charsize;
/* registers */ /* registers */
int marks; int lastmark;
void* mark[64]; /* FIXME: <fl> should be dynamically allocated! */ void* mark[64]; /* FIXME: <fl> should be dynamically allocated! */
/* backtracking stack */ /* backtracking stack */
void** stack; SRE_STACK* stack;
int stacksize; int stacksize;
int stackbase; int stackbase;
/* hooks */
SRE_TOLOWER_HOOK tolower;
} SRE_STATE; } SRE_STATE;
typedef struct { typedef struct {
/* search helper */
PyObject_HEAD PyObject_HEAD
PyObject* pattern; PyObject* pattern;
PyObject* string; PyObject* string;
......
...@@ -11,20 +11,19 @@ ...@@ -11,20 +11,19 @@
#define SRE_OP_GROUP_IGNORE 9 #define SRE_OP_GROUP_IGNORE 9
#define SRE_OP_IN 10 #define SRE_OP_IN 10
#define SRE_OP_IN_IGNORE 11 #define SRE_OP_IN_IGNORE 11
#define SRE_OP_JUMP 12 #define SRE_OP_INFO 12
#define SRE_OP_LITERAL 13 #define SRE_OP_JUMP 13
#define SRE_OP_LITERAL_IGNORE 14 #define SRE_OP_LITERAL 14
#define SRE_OP_MARK 15 #define SRE_OP_LITERAL_IGNORE 15
#define SRE_OP_MAX_REPEAT 16 #define SRE_OP_MARK 16
#define SRE_OP_MAX_UNTIL 17 #define SRE_OP_MAX_REPEAT 17
#define SRE_OP_MAX_REPEAT_ONE 18 #define SRE_OP_MAX_REPEAT_ONE 18
#define SRE_OP_MIN_REPEAT 19 #define SRE_OP_MIN_REPEAT 19
#define SRE_OP_MIN_UNTIL 20 #define SRE_OP_NOT_LITERAL 20
#define SRE_OP_NOT_LITERAL 21 #define SRE_OP_NOT_LITERAL_IGNORE 21
#define SRE_OP_NOT_LITERAL_IGNORE 22 #define SRE_OP_NEGATE 22
#define SRE_OP_NEGATE 23 #define SRE_OP_RANGE 23
#define SRE_OP_RANGE 24 #define SRE_OP_REPEAT 24
#define SRE_OP_REPEAT 25
#define SRE_AT_BEGINNING 0 #define SRE_AT_BEGINNING 0
#define SRE_AT_BEGINNING_LINE 1 #define SRE_AT_BEGINNING_LINE 1
#define SRE_AT_BOUNDARY 2 #define SRE_AT_BOUNDARY 2
...@@ -39,11 +38,20 @@ ...@@ -39,11 +38,20 @@
#define SRE_CATEGORY_NOT_WORD 5 #define SRE_CATEGORY_NOT_WORD 5
#define SRE_CATEGORY_LINEBREAK 6 #define SRE_CATEGORY_LINEBREAK 6
#define SRE_CATEGORY_NOT_LINEBREAK 7 #define SRE_CATEGORY_NOT_LINEBREAK 7
#define SRE_CATEGORY_LOC_DIGIT 8 #define SRE_CATEGORY_LOC_WORD 8
#define SRE_CATEGORY_LOC_NOT_DIGIT 9 #define SRE_CATEGORY_LOC_NOT_WORD 9
#define SRE_CATEGORY_LOC_SPACE 10 #define SRE_CATEGORY_UNI_DIGIT 10
#define SRE_CATEGORY_LOC_NOT_SPACE 11 #define SRE_CATEGORY_UNI_NOT_DIGIT 11
#define SRE_CATEGORY_LOC_WORD 12 #define SRE_CATEGORY_UNI_SPACE 12
#define SRE_CATEGORY_LOC_NOT_WORD 13 #define SRE_CATEGORY_UNI_NOT_SPACE 13
#define SRE_CATEGORY_LOC_LINEBREAK 14 #define SRE_CATEGORY_UNI_WORD 14
#define SRE_CATEGORY_LOC_NOT_LINEBREAK 15 #define SRE_CATEGORY_UNI_NOT_WORD 15
#define SRE_CATEGORY_UNI_LINEBREAK 16
#define SRE_CATEGORY_UNI_NOT_LINEBREAK 17
#define SRE_FLAG_TEMPLATE 1
#define SRE_FLAG_IGNORECASE 2
#define SRE_FLAG_LOCALE 4
#define SRE_FLAG_MULTILINE 8
#define SRE_FLAG_DOTALL 16
#define SRE_FLAG_UNICODE 32
#define SRE_FLAG_VERBOSE 64
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment