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.
44 lines
1.1 KiB
44 lines
1.1 KiB
13 years ago
|
// 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++;
|
||
|
}
|
||
|
}
|
||
|
}
|