summaryrefslogtreecommitdiff
path: root/sys/include/regexp.h
blob: 77094280190f7fc8693a7427d0b8c0af8d2be9bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#pragma src "/sys/src/libregexp"
#pragma lib "libregexp.a"
enum
{
	OANY = 0,
	OBOL,
	OCLASS,
	OEOL,
	OJMP,
	ONOTNL,
	ORUNE,
	OSAVE,
	OSPLIT,
	OUNSAVE,
};

typedef struct Resub Resub;
typedef struct Reinst Reinst;
typedef struct Reprog Reprog;
typedef struct Rethread Rethread;

#pragma incomplete Reinst
#pragma incomplete Rethread

struct Resub
{
	union
	{
		char *sp;
		Rune *rsp;
	};
	union
	{
		char *ep;
		Rune *rep;
	};
};
struct Reprog
{
	Reinst *startinst;
	Rethread *threads;
	char *regstr;
	int len;
	int nthr;
};

Reprog*	regcomp(char*);
Reprog*	regcomplit(char*);
Reprog*	regcompnl(char*);
void	regerror(char*);
int	regexec(Reprog*, char*, Resub*, int);
void	regsub(char*, char*, int, Resub*, int);
int	rregexec(Reprog*, Rune*, Resub*, int);
void	rregsub(Rune*, Rune*, int, Resub*, int);
int	reprogfmt(Fmt *);