~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
#ifndef _REGEX_H_
2
#define	_REGEX_H_	/* never again */
3
/* ========= begin header generated by ./mkh ========= */
4
#ifdef __cplusplus
5
extern "C" {
6
#endif
7
8
#include "m_ctype.h"
9
10
/* === regex2.h === */
11
#ifdef _WIN64
12
typedef __int64 regoff_t;
13
#else
14
typedef off_t regoff_t;
15
#endif
16
struct re_guts;			/* none of your business :-) */
17
typedef struct {
18
	int re_magic;
19
	size_t re_nsub;		/* number of parenthesized subexpressions */
20
	const char *re_endp;	/* end pointer for REG_PEND */
21
	struct re_guts *re_g;	/* none of your business :-) */
22
	CHARSET_INFO *charset;	/* For ctype things */
23
} my_regex_t;
24
typedef struct {
25
	regoff_t rm_so;		/* start of match */
26
	regoff_t rm_eo;		/* end of match */
27
} my_regmatch_t;
28
29
30
/* === regcomp.c === */
31
extern int my_regcomp(my_regex_t *, const char *, int, CHARSET_INFO *charset);
32
#define	REG_BASIC	0000
33
#define	REG_EXTENDED	0001
34
#define	REG_ICASE	0002
35
#define	REG_NOSUB	0004
36
#define	REG_NEWLINE	0010
37
#define	REG_NOSPEC	0020
38
#define	REG_PEND	0040
39
#define	REG_DUMP	0200
40
41
42
/* === regerror.c === */
43
#define	REG_NOMATCH	 1
44
#define	REG_BADPAT	 2
45
#define	REG_ECOLLATE	 3
46
#define	REG_ECTYPE	 4
47
#define	REG_EESCAPE	 5
48
#define	REG_ESUBREG	 6
49
#define	REG_EBRACK	 7
50
#define	REG_EPAREN	 8
51
#define	REG_EBRACE	 9
52
#define	REG_BADBR	10
53
#define	REG_ERANGE	11
54
#define	REG_ESPACE	12
55
#define	REG_BADRPT	13
56
#define	REG_EMPTY	14
57
#define	REG_ASSERT	15
58
#define	REG_INVARG	16
59
#define	REG_ATOI	255	/* convert name to number (!) */
60
#define	REG_ITOA	0400	/* convert number to name (!) */
61
extern size_t my_regerror(int, const my_regex_t *, char *, size_t);
62
63
64
/* === regexec.c === */
65
extern int my_regexec(const my_regex_t *, const char *, size_t, my_regmatch_t [], int);
66
#define	REG_NOTBOL	00001
67
#define	REG_NOTEOL	00002
68
#define	REG_STARTEND	00004
69
#define	REG_TRACE	00400	/* tracing of execution */
70
#define	REG_LARGE	01000	/* force large representation */
71
#define	REG_BACKR	02000	/* force use of backref code */
72
73
74
/* === regfree.c === */
75
extern void my_regfree(my_regex_t *);
76
77
/* === reginit.c === */
78
79
extern void my_regex_init(CHARSET_INFO *cs);	/* Should be called for multithread progs */
80
extern void my_regex_end(void);	/* If one wants a clean end */
81
82
#ifdef __cplusplus
83
}
84
#endif
85
/* ========= end header generated by ./mkh ========= */
86
#endif