diff options
author | Neil <nyamatongwe@gmail.com> | 2018-04-19 22:49:44 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2018-04-19 22:49:44 +1000 |
commit | a8fed0f50f5ef7540102b03975ac4c68bc737e66 (patch) | |
tree | a438b588704daa03f5e30a8e06d83b3044191e6c | |
parent | c4025b67d3afa0de81d6f6360a8d7a49bf1406c9 (diff) | |
download | scintilla-mirror-a8fed0f50f5ef7540102b03975ac4c68bc737e66.tar.gz |
Templatize MakeUpperCase/MakeLowerCase so they work on char/int without casts.
-rw-r--r-- | lexers/LexHTML.cxx | 4 | ||||
-rw-r--r-- | lexlib/CharacterSet.cxx | 8 | ||||
-rw-r--r-- | lexlib/CharacterSet.h | 10 | ||||
-rw-r--r-- | src/EditView.cxx | 8 |
4 files changed, 16 insertions, 14 deletions
diff --git a/lexers/LexHTML.cxx b/lexers/LexHTML.cxx index e17ba116c..948617184 100644 --- a/lexers/LexHTML.cxx +++ b/lexers/LexHTML.cxx @@ -58,7 +58,7 @@ inline bool IsOperator(int ch) { static void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) { Sci_PositionU i = 0; for (; (i < end - start + 1) && (i < len-1); i++) { - s[i] = static_cast<char>(MakeLowerCase(styler[start + i])); + s[i] = MakeLowerCase(styler[start + i]); } s[i] = '\0'; } @@ -267,7 +267,7 @@ static int classifyTagHTML(Sci_PositionU start, Sci_PositionU end, for (Sci_PositionU cPos = start; cPos <= end && i < 30; cPos++) { char ch = styler[cPos]; if ((ch != '<') && (ch != '/')) { - withSpace[i++] = caseSensitive ? ch : static_cast<char>(MakeLowerCase(ch)); + withSpace[i++] = caseSensitive ? ch : MakeLowerCase(ch); } } diff --git a/lexlib/CharacterSet.cxx b/lexlib/CharacterSet.cxx index 791177fcc..2a1dabc1c 100644 --- a/lexlib/CharacterSet.cxx +++ b/lexlib/CharacterSet.cxx @@ -18,8 +18,8 @@ namespace Scintilla { int CompareCaseInsensitive(const char *a, const char *b) { while (*a && *b) { if (*a != *b) { - const char upperA = static_cast<char>(MakeUpperCase(*a)); - const char upperB = static_cast<char>(MakeUpperCase(*b)); + const char upperA = MakeUpperCase(*a); + const char upperB = MakeUpperCase(*b); if (upperA != upperB) return upperA - upperB; } @@ -33,8 +33,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) { - const char upperA = static_cast<char>(MakeUpperCase(*a)); - const char upperB = static_cast<char>(MakeUpperCase(*b)); + const char upperA = MakeUpperCase(*a); + const char upperB = MakeUpperCase(*b); if (upperA != upperB) return upperA - upperB; } diff --git a/lexlib/CharacterSet.h b/lexlib/CharacterSet.h index be906ceaa..5965f38ca 100644 --- a/lexlib/CharacterSet.h +++ b/lexlib/CharacterSet.h @@ -167,16 +167,18 @@ inline bool isoperator(int ch) { return false; } -// Simple case functions for ASCII. +// Simple case functions for ASCII supersets. -inline int MakeUpperCase(int ch) { +template <typename T> +inline T MakeUpperCase(T ch) { if (ch < 'a' || ch > 'z') return ch; else - return static_cast<char>(ch - 'a' + 'A'); + return ch - 'a' + 'A'; } -inline int MakeLowerCase(int ch) { +template <typename T> +inline T MakeLowerCase(T ch) { if (ch < 'A' || ch > 'Z') return ch; else diff --git a/src/EditView.cxx b/src/EditView.cxx index e4e82fd75..f1d607c8a 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -433,15 +433,15 @@ void EditView::LayoutLine(const EditModel &model, Sci::Line line, Surface *surfa for (int charInLine = 0; charInLine<lineLength; charInLine++) { const char chDoc = ll->chars[charInLine]; if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseUpper) - ll->chars[charInLine] = static_cast<char>(MakeUpperCase(chDoc)); + ll->chars[charInLine] = MakeUpperCase(chDoc); else if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseLower) - ll->chars[charInLine] = static_cast<char>(MakeLowerCase(chDoc)); + ll->chars[charInLine] = MakeLowerCase(chDoc); else if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseCamel) { if ((model.pdoc->IsASCIIWordByte(ll->chars[charInLine])) && ((charInLine == 0) || (!model.pdoc->IsASCIIWordByte(ll->chars[charInLine - 1])))) { - ll->chars[charInLine] = static_cast<char>(MakeUpperCase(chDoc)); + ll->chars[charInLine] = MakeUpperCase(chDoc); } else { - ll->chars[charInLine] = static_cast<char>(MakeLowerCase(chDoc)); + ll->chars[charInLine] = MakeLowerCase(chDoc); } } } |