shithub: plan9front

ref: 5a807265a819206f8342ab3a23b940a0c75049fc

View raw version
#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 *);