]>
git.saurik.com Git - wxWidgets.git/blob - src/stc/scintilla/src/CharClassify.cxx
bbd25a0f8db3f0011916b72ee3dec437c080a81f
1 // Scintilla source code edit control
2 /** @file CharClassify.cxx
3 ** Character classifications used by Document and RESearch.
5 // Copyright 2006 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
11 #include "CharClassify.h"
13 // Shut up annoying Visual C++ warnings:
15 #pragma warning(disable: 4514)
18 CharClassify::CharClassify() {
19 SetDefaultCharClasses(true);
22 void CharClassify::SetDefaultCharClasses(bool includeWordClass
) {
23 // Initialize all char classes to default values
24 for (int ch
= 0; ch
< 256; ch
++) {
25 if (ch
== '\r' || ch
== '\n')
26 charClass
[ch
] = ccNewLine
;
27 else if (ch
< 0x20 || ch
== ' ')
28 charClass
[ch
] = ccSpace
;
29 else if (includeWordClass
&& (ch
>= 0x80 || isalnum(ch
) || ch
== '_'))
30 charClass
[ch
] = ccWord
;
32 charClass
[ch
] = ccPunctuation
;
36 void CharClassify::SetCharClasses(const unsigned char *chars
, cc newCharClass
) {
37 // Apply the newCharClass to the specifed chars
40 charClass
[*chars
] = static_cast<unsigned char>(newCharClass
);
46 int CompareCaseInsensitive(const char *a
, const char *b
) {
49 char upperA
= MakeUpperCase(*a
);
50 char upperB
= MakeUpperCase(*b
);
52 return upperA
- upperB
;
57 // Either *a or *b is nul
61 int CompareNCaseInsensitive(const char *a
, const char *b
, size_t len
) {
62 while (*a
&& *b
&& len
) {
64 char upperA
= MakeUpperCase(*a
);
65 char upperB
= MakeUpperCase(*b
);
67 return upperA
- upperB
;
76 // Either *a or *b is nul