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
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
18 setAlpha=setLower|setUpper,
\r
19 setAlphaNum=setAlpha|setDigits
\r
21 CharacterSet(setBase base=setNone, const char *initialSet="", int size_=0x80, bool valueAfter_=false) {
\r
23 valueAfter = valueAfter_;
\r
24 bset = new bool[size];
\r
25 for (int i=0; i < size; i++) {
\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
42 PLATFORM_ASSERT(val >= 0);
\r
43 PLATFORM_ASSERT(val < size);
\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
54 bool Contains(int val) const {
\r
55 PLATFORM_ASSERT(val >= 0);
\r
56 return (val < size) ? bset[val] : valueAfter;
\r