aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CharacterType.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/CharacterType.cxx')
-rw-r--r--src/CharacterType.cxx51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/CharacterType.cxx b/src/CharacterType.cxx
new file mode 100644
index 000000000..04d6a2abe
--- /dev/null
+++ b/src/CharacterType.cxx
@@ -0,0 +1,51 @@
+// Scintilla source code edit control
+/** @file CharacterType.cxx
+ ** Tests for character type and case-insensitive comparisons.
+ **/
+// 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 "CharacterType.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;
+}
+
+}