diff options
author | Neil <nyamatongwe@gmail.com> | 2021-01-29 20:51:34 +1100 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2021-01-29 20:51:34 +1100 |
commit | ba8b1a91525dd90f8fdcc75480f37815fecce2d2 (patch) | |
tree | 5ebce1a7d7c25aaee80e640b8cb56cc9aa5d6d34 /src/CharacterSet.cxx | |
parent | f8817063200055b8b9f7b9a7a83c30100f64c903 (diff) | |
download | scintilla-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.cxx | 52 |
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; +} + +} |