diff options
Diffstat (limited to 'src/RESearch.h')
| -rw-r--r-- | src/RESearch.h | 54 | 
1 files changed, 54 insertions, 0 deletions
| diff --git a/src/RESearch.h b/src/RESearch.h new file mode 100644 index 000000000..f9cf7fdc5 --- /dev/null +++ b/src/RESearch.h @@ -0,0 +1,54 @@ +// Scintilla source code edit control +/** @file RESearch.h + ** Interface to the regular expression search library. + **/ +// Written by Neil Hodgson <neilh@scintilla.org> +// Based on the work of Ozan S. Yigit. +// This file is in the public domain. + +#ifndef RESEARCH_H +#define RESEARCH_H + +/* + * The following defines are not meant to be changeable. + * They are for readability only. + */ +#define MAXCHR	128 +#define CHRBIT	8 +#define BITBLK	MAXCHR/CHRBIT + +class CharacterIndexer { +public:  +	virtual char CharAt(int index)=0; +}; + +class RESearch { + +public: +	RESearch(); +	void ChSet(char c); +	const char *Compile(char *pat); +	int Execute(CharacterIndexer &ci, int lp); +	void ModifyWord(char *s); +	int Substitute(CharacterIndexer &ci, char *src, char *dst); + +	enum {MAXTAG=10}; +	enum {MAXNFA=1024}; +	enum {NOTFOUND=-1}; + +	int bopat[MAXTAG]; +	int eopat[MAXTAG]; + +private: +	int PMatch(CharacterIndexer &ci, int lp, char *ap); + +	int bol; +	int  tagstk[MAXTAG];             /* subpat tag stack..*/ +	char nfa[MAXNFA];		/* automaton..       */ +	int sta; +	char bittab[BITBLK];		/* bit table for CCL */ +						/* pre-set bits...   */ +	int failure; +}; + +#endif | 
