You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
43 lines
1.2 KiB
// Scintilla source code edit control |
|
/** @file CharClassify.cxx |
|
** Character classifications used by Document and RESearch. |
|
**/ |
|
// Copyright 2006 by Neil Hodgson <neilh@scintilla.org> |
|
// The License.txt file describes the conditions under which this software may be distributed. |
|
|
|
#include <ctype.h> |
|
|
|
#include "CharClassify.h" |
|
|
|
// Shut up annoying Visual C++ warnings: |
|
#ifdef _MSC_VER |
|
#pragma warning(disable: 4514) |
|
#endif |
|
|
|
CharClassify::CharClassify() { |
|
SetDefaultCharClasses(true); |
|
} |
|
|
|
void CharClassify::SetDefaultCharClasses(bool includeWordClass) { |
|
// Initialize all char classes to default values |
|
for (int ch = 0; ch < 256; ch++) { |
|
if (ch == '\r' || ch == '\n') |
|
charClass[ch] = ccNewLine; |
|
else if (ch < 0x20 || ch == ' ') |
|
charClass[ch] = ccSpace; |
|
else if (includeWordClass && (ch >= 0x80 || isalnum(ch) || ch == '_')) |
|
charClass[ch] = ccWord; |
|
else |
|
charClass[ch] = ccPunctuation; |
|
} |
|
} |
|
|
|
void CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) { |
|
// Apply the newCharClass to the specifed chars |
|
if (chars) { |
|
while (*chars) { |
|
charClass[*chars] = static_cast<unsigned char>(newCharClass); |
|
chars++; |
|
} |
|
} |
|
}
|
|
|