summaryrefslogtreecommitdiffstats
path: root/scintilla/src/CaseFolder.cxx
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@users.sourceforge.net>2013-07-15 18:57:42 +0300
committerXhmikosR <xhmikosr@users.sourceforge.net>2013-07-18 05:20:16 +0300
commit4064119f44e17baf01cc4a00a5062d173965e86c (patch)
treea6fab3caacb3d26c53bd472a1add87cf7895e58c /scintilla/src/CaseFolder.cxx
parent12e4cc85f793ec12c58074359bc53724dbf43ff3 (diff)
downloadnotepad2-mod-4064119f44e17baf01cc4a00a5062d173965e86c.zip
notepad2-mod-4064119f44e17baf01cc4a00a5062d173965e86c.tar.gz
notepad2-mod-4064119f44e17baf01cc4a00a5062d173965e86c.tar.bz2
update Scintilla to v3.3.4 [e074c3]
Diffstat (limited to 'scintilla/src/CaseFolder.cxx')
-rw-r--r--scintilla/src/CaseFolder.cxx68
1 files changed, 68 insertions, 0 deletions
diff --git a/scintilla/src/CaseFolder.cxx b/scintilla/src/CaseFolder.cxx
new file mode 100644
index 0000000..44a94da
--- /dev/null
+++ b/scintilla/src/CaseFolder.cxx
@@ -0,0 +1,68 @@
+// Scintilla source code edit control
+/** @file CaseFolder.cxx
+ ** Classes for case folding.
+ **/
+// Copyright 1998-2013 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#include <vector>
+#include <algorithm>
+
+#include "CaseConvert.h"
+#include "UniConversion.h"
+#include "CaseFolder.h"
+
+#ifdef SCI_NAMESPACE
+using namespace Scintilla;
+#endif
+
+CaseFolder::~CaseFolder() {
+}
+
+CaseFolderTable::CaseFolderTable() {
+ for (size_t iChar=0; iChar<sizeof(mapping); iChar++) {
+ mapping[iChar] = static_cast<char>(iChar);
+ }
+}
+
+CaseFolderTable::~CaseFolderTable() {
+}
+
+size_t CaseFolderTable::Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) {
+ if (lenMixed > sizeFolded) {
+ return 0;
+ } else {
+ for (size_t i=0; i<lenMixed; i++) {
+ folded[i] = mapping[static_cast<unsigned char>(mixed[i])];
+ }
+ return lenMixed;
+ }
+}
+
+void CaseFolderTable::SetTranslation(char ch, char chTranslation) {
+ mapping[static_cast<unsigned char>(ch)] = chTranslation;
+}
+
+void CaseFolderTable::StandardASCII() {
+ for (size_t iChar=0; iChar<sizeof(mapping); iChar++) {
+ if (iChar >= 'A' && iChar <= 'Z') {
+ mapping[iChar] = static_cast<char>(iChar - 'A' + 'a');
+ } else {
+ mapping[iChar] = static_cast<char>(iChar);
+ }
+ }
+}
+
+CaseFolderUnicode::CaseFolderUnicode() {
+ StandardASCII();
+ converter = ConverterFor(CaseConversionFold);
+}
+
+size_t CaseFolderUnicode::Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) {
+ if ((lenMixed == 1) && (sizeFolded > 0)) {
+ folded[0] = mapping[static_cast<unsigned char>(mixed[0])];
+ return 1;
+ } else {
+ return converter->CaseConvertString(folded, sizeFolded, mixed, lenMixed);
+ }
+}