aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CharClassify.cxx
diff options
context:
space:
mode:
authorMook <marky@activestate.com>2012-05-29 12:44:34 -0700
committerMook <marky@activestate.com>2012-05-29 12:44:34 -0700
commit7e9e5b1e059efa957d2d7e9fa6b364706f621711 (patch)
tree24e9e113362f6a3f05f39e64ef9207f712b4e1a9 /src/CharClassify.cxx
parent08d35504786635e06b870b2674da38c0e89521cd (diff)
downloadscintilla-mirror-7e9e5b1e059efa957d2d7e9fa6b364706f621711.tar.gz
add CharClassifier::GetCharsOfClass
add SCI_GETWORDCHARS(<unused>, stringresult chars) command to get word chars add SCI_GETWHITESPACECHARS(<unused>, stringresult chars) to get whitespace chars add SCI_GETPUNCTUATIONCHARS(<unused>, stringresult chars) to get punctutation also add tests for {Set,Get}{Word,Whitespce,Punctuation}Chars, CharClassifier
Diffstat (limited to 'src/CharClassify.cxx')
-rw-r--r--src/CharClassify.cxx16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/CharClassify.cxx b/src/CharClassify.cxx
index c16af4547..7e3db737e 100644
--- a/src/CharClassify.cxx
+++ b/src/CharClassify.cxx
@@ -46,3 +46,19 @@ void CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) {
}
}
}
+
+int CharClassify::GetCharsOfClass(cc characterClass, unsigned char *buffer) {
+ // Get characters belonging to the given char class; return the number
+ // of characters (if the buffer is NULL, don't write to it).
+ int count = 0;
+ for (int ch = maxChar - 1; ch >= 0; --ch) {
+ if (charClass[ch] == characterClass) {
+ ++count;
+ if (buffer) {
+ *buffer = static_cast<unsigned char>(ch);
+ buffer++;
+ }
+ }
+ }
+ return count;
+}