OSDN Git Service

Commit DialogBox compile Okay
[tortoisegit/TortoiseGitJp.git] / ext / scintilla / src / CharacterSet.h
diff --git a/ext/scintilla/src/CharacterSet.h b/ext/scintilla/src/CharacterSet.h
new file mode 100644 (file)
index 0000000..764ee64
--- /dev/null
@@ -0,0 +1,58 @@
+// Scintilla source code edit control\r
+/** @file CharacterSet.h\r
+ ** Encapsulates a set of characters. Used to test if a character is within a set.\r
+ **/\r
+// Copyright 2007 by Neil Hodgson <neilh@scintilla.org>\r
+// The License.txt file describes the conditions under which this software may be distributed.\r
+\r
+class CharacterSet {\r
+       int size;\r
+       bool valueAfter;\r
+       bool *bset;\r
+public:\r
+       enum setBase {\r
+               setNone=0,\r
+               setLower=1,\r
+               setUpper=2,\r
+               setDigits=4,\r
+               setAlpha=setLower|setUpper,\r
+               setAlphaNum=setAlpha|setDigits\r
+       };\r
+       CharacterSet(setBase base=setNone, const char *initialSet="", int size_=0x80, bool valueAfter_=false) {\r
+               size = size_;\r
+               valueAfter = valueAfter_;\r
+               bset = new bool[size];\r
+               for (int i=0; i < size; i++) {\r
+                       bset[i] = false;\r
+               }\r
+               AddString(initialSet);\r
+               if (base & setLower)\r
+                       AddString("abcdefghijklmnopqrstuvwxyz");\r
+               if (base & setUpper)\r
+                       AddString("ABCDEFGHIJKLMNOPQRSTUVWXYZ");\r
+               if (base & setDigits)\r
+                       AddString("0123456789");\r
+       }\r
+       ~CharacterSet() {\r
+               delete []bset;\r
+               bset = 0;\r
+               size = 0;\r
+       }\r
+       void Add(int val) {\r
+               PLATFORM_ASSERT(val >= 0);\r
+               PLATFORM_ASSERT(val < size);\r
+               bset[val] = true;\r
+       }\r
+       void AddString(const char *CharacterSet) {\r
+               for (const char *cp=CharacterSet; *cp; cp++) {\r
+                       int val = static_cast<unsigned char>(*cp);\r
+                       PLATFORM_ASSERT(val >= 0);\r
+                       PLATFORM_ASSERT(val < size);\r
+                       bset[val] = true;\r
+               }\r
+       }\r
+       bool Contains(int val) const {\r
+               PLATFORM_ASSERT(val >= 0);\r
+               return (val < size) ? bset[val] : valueAfter;\r
+       }\r
+};\r