OSDN Git Service

Commit DialogBox compile Okay
[tortoisegit/TortoiseGitJp.git] / ext / scintilla / src / CharacterSet.h
1 // Scintilla source code edit control\r
2 /** @file CharacterSet.h\r
3  ** Encapsulates a set of characters. Used to test if a character is within a set.\r
4  **/\r
5 // Copyright 2007 by Neil Hodgson <neilh@scintilla.org>\r
6 // The License.txt file describes the conditions under which this software may be distributed.\r
7 \r
8 class CharacterSet {\r
9         int size;\r
10         bool valueAfter;\r
11         bool *bset;\r
12 public:\r
13         enum setBase {\r
14                 setNone=0,\r
15                 setLower=1,\r
16                 setUpper=2,\r
17                 setDigits=4,\r
18                 setAlpha=setLower|setUpper,\r
19                 setAlphaNum=setAlpha|setDigits\r
20         };\r
21         CharacterSet(setBase base=setNone, const char *initialSet="", int size_=0x80, bool valueAfter_=false) {\r
22                 size = size_;\r
23                 valueAfter = valueAfter_;\r
24                 bset = new bool[size];\r
25                 for (int i=0; i < size; i++) {\r
26                         bset[i] = false;\r
27                 }\r
28                 AddString(initialSet);\r
29                 if (base & setLower)\r
30                         AddString("abcdefghijklmnopqrstuvwxyz");\r
31                 if (base & setUpper)\r
32                         AddString("ABCDEFGHIJKLMNOPQRSTUVWXYZ");\r
33                 if (base & setDigits)\r
34                         AddString("0123456789");\r
35         }\r
36         ~CharacterSet() {\r
37                 delete []bset;\r
38                 bset = 0;\r
39                 size = 0;\r
40         }\r
41         void Add(int val) {\r
42                 PLATFORM_ASSERT(val >= 0);\r
43                 PLATFORM_ASSERT(val < size);\r
44                 bset[val] = true;\r
45         }\r
46         void AddString(const char *CharacterSet) {\r
47                 for (const char *cp=CharacterSet; *cp; cp++) {\r
48                         int val = static_cast<unsigned char>(*cp);\r
49                         PLATFORM_ASSERT(val >= 0);\r
50                         PLATFORM_ASSERT(val < size);\r
51                         bset[val] = true;\r
52                 }\r
53         }\r
54         bool Contains(int val) const {\r
55                 PLATFORM_ASSERT(val >= 0);\r
56                 return (val < size) ? bset[val] : valueAfter;\r
57         }\r
58 };\r