OSDN Git Service

Commit DialogBox compile Okay
[tortoisegit/TortoiseGitJp.git] / ext / scintilla / src / RESearch.h
1 // Scintilla source code edit control\r
2 /** @file RESearch.h\r
3  ** Interface to the regular expression search library.\r
4  **/\r
5 // Written by Neil Hodgson <neilh@scintilla.org>\r
6 // Based on the work of Ozan S. Yigit.\r
7 // This file is in the public domain.\r
8 \r
9 #ifndef RESEARCH_H\r
10 #define RESEARCH_H\r
11 \r
12 #ifdef SCI_NAMESPACE\r
13 namespace Scintilla {\r
14 #endif\r
15 \r
16 /*\r
17  * The following defines are not meant to be changeable.\r
18  * They are for readability only.\r
19  */\r
20 #define MAXCHR  256\r
21 #define CHRBIT  8\r
22 #define BITBLK  MAXCHR/CHRBIT\r
23 \r
24 class CharacterIndexer {\r
25 public:\r
26         virtual char CharAt(int index)=0;\r
27         virtual ~CharacterIndexer() {\r
28         }\r
29 };\r
30 \r
31 class RESearch {\r
32 \r
33 public:\r
34         RESearch(CharClassify *charClassTable);\r
35         ~RESearch();\r
36         bool GrabMatches(CharacterIndexer &ci);\r
37         const char *Compile(const char *pattern, int length, bool caseSensitive, bool posix);\r
38         int Execute(CharacterIndexer &ci, int lp, int endp);\r
39         int Substitute(CharacterIndexer &ci, char *src, char *dst);\r
40 \r
41         enum { MAXTAG=10 };\r
42         enum { MAXNFA=2048 };\r
43         enum { NOTFOUND=-1 };\r
44 \r
45         int bopat[MAXTAG];\r
46         int eopat[MAXTAG];\r
47         char *pat[MAXTAG];\r
48 \r
49 private:\r
50         void Init();\r
51         void Clear();\r
52         void ChSet(unsigned char c);\r
53         void ChSetWithCase(unsigned char c, bool caseSensitive);\r
54         int GetBackslashExpression(const char *pattern, int &incr);\r
55 \r
56         int PMatch(CharacterIndexer &ci, int lp, int endp, char *ap);\r
57 \r
58         int bol;\r
59         int tagstk[MAXTAG];  /* subpat tag stack */\r
60         char nfa[MAXNFA];    /* automaton */\r
61         int sta;\r
62         unsigned char bittab[BITBLK]; /* bit table for CCL pre-set bits */\r
63         int failure;\r
64         CharClassify *charClass;\r
65         bool iswordc(unsigned char x) {\r
66                 return charClass->IsWord(x);\r
67         }\r
68 };\r
69 \r
70 #ifdef SCI_NAMESPACE\r
71 }\r
72 #endif\r
73 \r
74 #endif\r
75 \r