diff options
author | crupest <crupest@outlook.com> | 2021-10-30 21:08:43 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-10-30 21:08:43 +0800 |
commit | e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef (patch) | |
tree | 92c7efcef195da667e54566fb41ed16bf1975649 /src/common/String.cpp | |
parent | 562092ce48d586c786a0649a80ae0b42a301c0b5 (diff) | |
download | cru-e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef.tar.gz cru-e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef.tar.bz2 cru-e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef.zip |
...
Diffstat (limited to 'src/common/String.cpp')
-rw-r--r-- | src/common/String.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/common/String.cpp b/src/common/String.cpp index 699d807f..ba31e6f6 100644 --- a/src/common/String.cpp +++ b/src/common/String.cpp @@ -1,4 +1,5 @@ #include "cru/common/String.hpp" +#include "cru/common/Exception.hpp" #include "cru/common/StringUtil.hpp" #include <gsl/gsl> @@ -214,6 +215,13 @@ std::string String::ToUtf8() const { return cru::ToUtf8(std::u16string_view(data(), size())); } +void String::AppendCodePoint(CodePoint code_point) { + if (!Utf16EncodeCodePointAppendWithFunc( + code_point, [this](char16_t c) { this->push_back(c); })) { + throw TextEncodeException(u"Code point out of range."); + } +} + Index String::IndexFromCodeUnitToCodePoint(Index code_unit_index) const { auto iter = CodePointIterator(); Index result = 0; |