OSDN Git Service

Enable X64 Build
[tortoisegit/TortoiseGitJp.git] / ext / scintilla / src / CharClassify.cxx
1 // Scintilla source code edit control\r
2 /** @file CharClassify.cxx\r
3  ** Character classifications used by Document and RESearch.\r
4  **/\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
7 \r
8 #include <ctype.h>\r
9 \r
10 #include "CharClassify.h"\r
11 \r
12 // Shut up annoying Visual C++ warnings:\r
13 #ifdef _MSC_VER\r
14 #pragma warning(disable: 4514)\r
15 #endif\r
16 \r
17 CharClassify::CharClassify() {\r
18         SetDefaultCharClasses(true);\r
19 }\r
20 \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
30                 else\r
31                         charClass[ch] = ccPunctuation;\r
32         }\r
33 }\r
34 \r
35 void CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) {\r
36         // Apply the newCharClass to the specifed chars\r
37         if (chars) {\r
38                 while (*chars) {\r
39                         charClass[*chars] = static_cast<unsigned char>(newCharClass);\r
40                         chars++;\r
41                 }\r
42         }\r
43 }\r