aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CharacterSet.cxx
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2021-01-29 20:51:34 +1100
committerNeil <nyamatongwe@gmail.com>2021-01-29 20:51:34 +1100
commitba8b1a91525dd90f8fdcc75480f37815fecce2d2 (patch)
tree5ebce1a7d7c25aaee80e640b8cb56cc9aa5d6d34 /src/CharacterSet.cxx
parentf8817063200055b8b9f7b9a7a83c30100f64c903 (diff)
downloadscintilla-mirror-ba8b1a91525dd90f8fdcc75480f37815fecce2d2.tar.gz
Move CharacterSet and CharacterCategory from lexlib to src as in both Lexilla and Scintilla
Diffstat (limited to 'src/CharacterSet.cxx')
-rw-r--r--src/CharacterSet.cxx52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/CharacterSet.cxx b/src/CharacterSet.cxx
new file mode 100644
index 000000000..b934c2dd4
--- /dev/null
+++ b/src/CharacterSet.cxx
@@ -0,0 +1,52 @@
+// Scintilla source code edit control
+/** @file CharacterSet.cxx
+ ** Simple case functions for ASCII.
+ ** Lexer infrastructure.
+ **/
+// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#include <cstdlib>
+#include <cassert>
+
+#include "CharacterSet.h"
+
+using namespace Scintilla;
+
+namespace Scintilla {
+
+int CompareCaseInsensitive(const char *a, const char *b) noexcept {
+ while (*a && *b) {
+ if (*a != *b) {
+ const char upperA = MakeUpperCase(*a);
+ const char upperB = MakeUpperCase(*b);
+ if (upperA != upperB)
+ return upperA - upperB;
+ }
+ a++;
+ b++;
+ }
+ // Either *a or *b is nul
+ return *a - *b;
+}
+
+int CompareNCaseInsensitive(const char *a, const char *b, size_t len) noexcept {
+ while (*a && *b && len) {
+ if (*a != *b) {
+ const char upperA = MakeUpperCase(*a);
+ const char upperB = MakeUpperCase(*b);
+ if (upperA != upperB)
+ return upperA - upperB;
+ }
+ a++;
+ b++;
+ len--;
+ }
+ if (len == 0)
+ return 0;
+ else
+ // Either *a or *b is nul
+ return *a - *b;
+}
+
+}