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