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
commitdd24e21bbeadbd1c7f6954f72ebe479e7ce3dc99 (patch)
tree52cde4788556622c9e58f09a202df524e3497216 /src/CharClassify.cxx
parent9adc3c5c2f112142780c0cdd892e3ff7e338c3ad (diff)
downloadscintilla-mirror-dd24e21bbeadbd1c7f6954f72ebe479e7ce3dc99.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;
+}