diff options
author | nyamatongwe <unknown> | 2007-06-02 05:54:42 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2007-06-02 05:54:42 +0000 |
commit | a15c959f9db8fd6be09d492f48c40fc0f37480c2 (patch) | |
tree | 2898280ae6e6f94ab835f4bc30906470a38ee520 /src/CharacterSet.h | |
parent | d3894b8d3d1f1421acecd89fde81e21627552075 (diff) | |
download | scintilla-mirror-a15c959f9db8fd6be09d492f48c40fc0f37480c2.tar.gz |
Moving CharacterSet class into own header so can be used by more
lexers.
Updated LexCPP to match changes.
Added use of CharacterSet to LexHTML.
Diffstat (limited to 'src/CharacterSet.h')
-rw-r--r-- | src/CharacterSet.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/CharacterSet.h b/src/CharacterSet.h new file mode 100644 index 000000000..4e8ffbdf6 --- /dev/null +++ b/src/CharacterSet.h @@ -0,0 +1,58 @@ +// Scintilla source code edit control +/** @file CharacterSet.h + ** Encapsulates a set of characters. Used to test if a character is within a set. + **/ +// Copyright 2007 by Neil Hodgson <neilh@scintilla.org> +// The License.txt file describes the conditions under which this software may be distributed. + +class CharacterSet { + int size; + bool valueAfter; + bool *bset; +public: + enum setBase { + setNone=0, + setLower=1, + setUpper=2, + setDigits=4, + setAlpha=setLower|setUpper, + setAlphaNum=setAlpha|setDigits + }; + CharacterSet(setBase base=setNone, const char *initialSet="", int size_=0x80, bool valueAfter_=false) { + size = size_; + valueAfter = valueAfter_; + bset = new bool[size]; + for (int i=0; i < size; i++) { + bset[i] = false; + } + AddString(initialSet); + if (base & setLower) + AddString("abcdefghijklmnopqrstuvwxyz"); + if (base & setUpper) + AddString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + if (base & setDigits) + AddString("0123456789"); + } + ~CharacterSet() { + delete []bset; + bset = 0; + size = 0; + } + void Add(int val) { + PLATFORM_ASSERT(val >= 0); + PLATFORM_ASSERT(val < size); + bset[val] = true; + } + void AddString(const char *CharacterSet) { + for (const char *cp=CharacterSet; *cp; cp++) { + int val = static_cast<unsigned char>(*cp); + PLATFORM_ASSERT(val >= 0); + PLATFORM_ASSERT(val < size); + bset[val] = true; + } + } + bool Contains(int val) const { + PLATFORM_ASSERT(val >= 0); + return (val < size) ? bset[val] : valueAfter; + } +}; |