aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lexlib/CharacterSet.cxx8
-rw-r--r--lexlib/CharacterSet.h9
-rw-r--r--lexlib/StyleContext.cxx17
-rw-r--r--lexlib/StyleContext.h23
4 files changed, 30 insertions, 27 deletions
diff --git a/lexlib/CharacterSet.cxx b/lexlib/CharacterSet.cxx
index 0ab2cc0cc..55602af30 100644
--- a/lexlib/CharacterSet.cxx
+++ b/lexlib/CharacterSet.cxx
@@ -25,8 +25,8 @@ namespace Scintilla {
int CompareCaseInsensitive(const char *a, const char *b) {
while (*a && *b) {
if (*a != *b) {
- char upperA = MakeUpperCase(*a);
- char upperB = MakeUpperCase(*b);
+ char upperA = static_cast<char>(MakeUpperCase(*a));
+ char upperB = static_cast<char>(MakeUpperCase(*b));
if (upperA != upperB)
return upperA - upperB;
}
@@ -40,8 +40,8 @@ int CompareCaseInsensitive(const char *a, const char *b) {
int CompareNCaseInsensitive(const char *a, const char *b, size_t len) {
while (*a && *b && len) {
if (*a != *b) {
- char upperA = MakeUpperCase(*a);
- char upperB = MakeUpperCase(*b);
+ char upperA = static_cast<char>(MakeUpperCase(*a));
+ char upperB = static_cast<char>(MakeUpperCase(*b));
if (upperA != upperB)
return upperA - upperB;
}
diff --git a/lexlib/CharacterSet.h b/lexlib/CharacterSet.h
index a0c45b2fb..183fbe421 100644
--- a/lexlib/CharacterSet.h
+++ b/lexlib/CharacterSet.h
@@ -160,13 +160,20 @@ inline bool isoperator(int ch) {
// Simple case functions for ASCII.
-inline char MakeUpperCase(char ch) {
+inline int MakeUpperCase(int ch) {
if (ch < 'a' || ch > 'z')
return ch;
else
return static_cast<char>(ch - 'a' + 'A');
}
+inline int MakeLowerCase(int ch) {
+ if (ch < 'A' || ch > 'Z')
+ return ch;
+ else
+ return ch - 'A' + 'a';
+}
+
int CompareCaseInsensitive(const char *a, const char *b);
int CompareNCaseInsensitive(const char *a, const char *b, size_t len);
diff --git a/lexlib/StyleContext.cxx b/lexlib/StyleContext.cxx
index 5bcacb018..f9f15be2e 100644
--- a/lexlib/StyleContext.cxx
+++ b/lexlib/StyleContext.cxx
@@ -16,11 +16,28 @@
#include "LexAccessor.h"
#include "Accessor.h"
#include "StyleContext.h"
+#include "CharacterSet.h"
#ifdef SCI_NAMESPACE
using namespace Scintilla;
#endif
+bool StyleContext::MatchIgnoreCase(const char *s) {
+ if (MakeLowerCase(ch) != static_cast<unsigned char>(*s))
+ return false;
+ s++;
+ if (MakeLowerCase(chNext) != static_cast<unsigned char>(*s))
+ return false;
+ s++;
+ for (int n = 2; *s; n++) {
+ if (static_cast<unsigned char>(*s) !=
+ MakeLowerCase(static_cast<unsigned char>(styler.SafeGetCharAt(currentPos + n, 0))))
+ return false;
+ s++;
+ }
+ return true;
+}
+
static void getRange(Sci_PositionU start,
Sci_PositionU end,
LexAccessor &styler,
diff --git a/lexlib/StyleContext.h b/lexlib/StyleContext.h
index c8aa4ab02..6cbda358e 100644
--- a/lexlib/StyleContext.h
+++ b/lexlib/StyleContext.h
@@ -12,13 +12,6 @@
namespace Scintilla {
#endif
-static inline int MakeLowerCase(int ch) {
- if (ch < 'A' || ch > 'Z')
- return ch;
- else
- return ch - 'A' + 'a';
-}
-
// All languages handled so far can treat all characters >= 0x80 as one class
// which just continues the current token or starts an identifier if in default.
// DBCS treated specially as the second character can be < 0x80 and hence
@@ -204,22 +197,8 @@ public:
}
return true;
}
- bool MatchIgnoreCase(const char *s) {
- if (MakeLowerCase(ch) != static_cast<unsigned char>(*s))
- return false;
- s++;
- if (MakeLowerCase(chNext) != static_cast<unsigned char>(*s))
- return false;
- s++;
- for (int n=2; *s; n++) {
- if (static_cast<unsigned char>(*s) !=
- MakeLowerCase(static_cast<unsigned char>(styler.SafeGetCharAt(currentPos+n, 0))))
- return false;
- s++;
- }
- return true;
- }
// Non-inline
+ bool MatchIgnoreCase(const char *s);
void GetCurrent(char *s, Sci_PositionU len);
void GetCurrentLowered(char *s, Sci_PositionU len);
};