1 #ifndef regexp_h 2 #define regexp_h 3 4 #define regcompx js_regcompx 5 #define regfreex js_regfreex 6 #define regcomp js_regcomp 7 #define regexec js_regexec 8 #define regfree js_regfree 9 10 typedef struct Reprog Reprog; 11 typedef struct Resub Resub; 12 13 Reprog *regcompx(void *(*alloc)(void *ctx, void *p, int n), void *ctx, 14 const char *pattern, int cflags, const char **errorp); 15 void regfreex(void *(*alloc)(void *ctx, void *p, int n), void *ctx, 16 Reprog *prog); 17 18 Reprog *regcomp(const char *pattern, int cflags, const char **errorp); 19 int regexec(Reprog *prog, const char *string, Resub *sub, int eflags); 20 void regfree(Reprog *prog); 21 22 enum { 23 /* regcomp flags */ 24 REG_ICASE = 1, 25 REG_NEWLINE = 2, 26 27 /* regexec flags */ 28 REG_NOTBOL = 4, 29 30 /* limits */ 31 REG_MAXSUB = 10 32 }; 33 34 struct Resub { 35 int nsub; 36 struct { 37 const char *sp; 38 const char *ep; 39 } sub[REG_MAXSUB]; 40 }; 41 42 #endif 43