diff options
author | Neil <nyamatongwe@gmail.com> | 2018-05-14 16:14:00 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2018-05-14 16:14:00 +1000 |
commit | 1877c3dbf8b5132d3b7f95fe373d1d97961e4129 (patch) | |
tree | 9aeac19749bf95010bf6a542e5088caaa8aaad93 /src/CaseConvert.cxx | |
parent | 8c5c845e2fb26e5b4b10b8d882b02b39bdb39454 (diff) | |
download | scintilla-mirror-1877c3dbf8b5132d3b7f95fe373d1d97961e4129.tar.gz |
Remove dependency on StringCopy and simplify constructor.
Diffstat (limited to 'src/CaseConvert.cxx')
-rw-r--r-- | src/CaseConvert.cxx | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/CaseConvert.cxx b/src/CaseConvert.cxx index 8f5a25aa4..6228f89d3 100644 --- a/src/CaseConvert.cxx +++ b/src/CaseConvert.cxx @@ -8,6 +8,7 @@ // Copyright 2013 by Neil Hodgson <neilh@scintilla.org> // The License.txt file describes the conditions under which this software may be distributed. +#include <cassert> #include <cstring> #include <stdexcept> @@ -16,7 +17,6 @@ #include <vector> #include <algorithm> -#include "StringCopy.h" #include "CaseConvert.h" #include "UniConversion.h" @@ -572,8 +572,12 @@ class CaseConverter : public ICaseConverter { struct CharacterConversion { int character; ConversionString conversion; - CharacterConversion(int character_=0, const char *conversion_="") noexcept : character(character_) { - StringCopy(conversion.conversion, conversion_); + CharacterConversion() noexcept : character(0) { + // Empty case: NUL -> "". + } + CharacterConversion(int character_, std::string_view conversion_) noexcept : character(character_) { + assert(conversion_.length() <= maxConversionLength); + std::copy(std::begin(conversion_), std::end(conversion_), conversion.conversion); } bool operator<(const CharacterConversion &other) const noexcept { return character < other.character; @@ -685,7 +689,7 @@ void AddSymmetric(enum CaseConversion conversion, int lower,int upper) { void SetupConversions(enum CaseConversion conversion) { // First initialize for the symmetric ranges - for (size_t i=0; i<ELEMENTS(symmetricCaseConversionRanges);) { + for (size_t i=0; i<std::size(symmetricCaseConversionRanges);) { const int lower = symmetricCaseConversionRanges[i++]; const int upper = symmetricCaseConversionRanges[i++]; const int length = symmetricCaseConversionRanges[i++]; @@ -695,7 +699,7 @@ void SetupConversions(enum CaseConversion conversion) { } } // Add the symmetric singletons - for (size_t i=0; i<ELEMENTS(symmetricCaseConversions);) { + for (size_t i=0; i<std::size(symmetricCaseConversions);) { const int lower = symmetricCaseConversions[i++]; const int upper = symmetricCaseConversions[i++]; AddSymmetric(conversion, lower, upper); |