diff options
| author | nyamatongwe <unknown> | 2010-07-13 21:19:35 +1000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2010-07-13 21:19:35 +1000 | 
| commit | 27a22f2c85e3aa0f540c61a0a245a0d759e706a9 (patch) | |
| tree | e69648f44945cb552d86607c4899b9d1566155bb /lexlib/CharacterSet.h | |
| parent | fd7c21165bbc5200aa24ef89560a8bb40fd37255 (diff) | |
| download | scintilla-mirror-27a22f2c85e3aa0f540c61a0a245a0d759e706a9.tar.gz | |
Creating lexlib with lexer support files.
Diffstat (limited to 'lexlib/CharacterSet.h')
| -rw-r--r-- | lexlib/CharacterSet.h | 59 | 
1 files changed, 59 insertions, 0 deletions
| diff --git a/lexlib/CharacterSet.h b/lexlib/CharacterSet.h new file mode 100644 index 000000000..9b8869635 --- /dev/null +++ b/lexlib/CharacterSet.h @@ -0,0 +1,59 @@ +// 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); +		if (val < 0) return false; +		return (val < size) ? bset[val] : valueAfter; +	} +}; | 
