1*8af74909SZhong Yang // Scintilla source code edit control 2*8af74909SZhong Yang /** @file CharClassify.h 3*8af74909SZhong Yang ** Character classifications used by Document and RESearch. 4*8af74909SZhong Yang **/ 5*8af74909SZhong Yang // Copyright 2006-2009 by Neil Hodgson <[email protected]> 6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed. 7*8af74909SZhong Yang 8*8af74909SZhong Yang #ifndef CHARCLASSIFY_H 9*8af74909SZhong Yang #define CHARCLASSIFY_H 10*8af74909SZhong Yang 11*8af74909SZhong Yang namespace Scintilla { 12*8af74909SZhong Yang 13*8af74909SZhong Yang class CharClassify { 14*8af74909SZhong Yang public: 15*8af74909SZhong Yang CharClassify(); 16*8af74909SZhong Yang 17*8af74909SZhong Yang enum cc { ccSpace, ccNewLine, ccWord, ccPunctuation }; 18*8af74909SZhong Yang void SetDefaultCharClasses(bool includeWordClass); 19*8af74909SZhong Yang void SetCharClasses(const unsigned char *chars, cc newCharClass); 20*8af74909SZhong Yang int GetCharsOfClass(cc characterClass, unsigned char *buffer) const noexcept; GetClass(unsigned char ch)21*8af74909SZhong Yang cc GetClass(unsigned char ch) const noexcept { return static_cast<cc>(charClass[ch]);} IsWord(unsigned char ch)22*8af74909SZhong Yang bool IsWord(unsigned char ch) const noexcept { return static_cast<cc>(charClass[ch]) == ccWord;} 23*8af74909SZhong Yang 24*8af74909SZhong Yang private: 25*8af74909SZhong Yang enum { maxChar=256 }; 26*8af74909SZhong Yang unsigned char charClass[maxChar]; // not type cc to save space 27*8af74909SZhong Yang }; 28*8af74909SZhong Yang 29*8af74909SZhong Yang } 30*8af74909SZhong Yang 31*8af74909SZhong Yang #endif 32