1 // Scintilla source code edit control
\r
2 /** @file CharClassify.cxx
\r
3 ** Character classifications used by Document and RESearch.
\r
5 // Copyright 2006 by Neil Hodgson <neilh@scintilla.org>
\r
6 // The License.txt file describes the conditions under which this software may be distributed.
\r
10 #include "CharClassify.h"
\r
12 // Shut up annoying Visual C++ warnings:
\r
14 #pragma warning(disable: 4514)
\r
17 CharClassify::CharClassify() {
\r
18 SetDefaultCharClasses(true);
\r
21 void CharClassify::SetDefaultCharClasses(bool includeWordClass) {
\r
22 // Initialize all char classes to default values
\r
23 for (int ch = 0; ch < 256; ch++) {
\r
24 if (ch == '\r' || ch == '\n')
\r
25 charClass[ch] = ccNewLine;
\r
26 else if (ch < 0x20 || ch == ' ')
\r
27 charClass[ch] = ccSpace;
\r
28 else if (includeWordClass && (ch >= 0x80 || isalnum(ch) || ch == '_'))
\r
29 charClass[ch] = ccWord;
\r
31 charClass[ch] = ccPunctuation;
\r
35 void CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) {
\r
36 // Apply the newCharClass to the specifed chars
\r
39 charClass[*chars] = static_cast<unsigned char>(newCharClass);
\r