aboutsummaryrefslogtreecommitdiff
path: root/src/common/String.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-10-30 21:08:43 +0800
committercrupest <crupest@outlook.com>2021-10-30 21:08:43 +0800
commite68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef (patch)
tree92c7efcef195da667e54566fb41ed16bf1975649 /src/common/String.cpp
parent562092ce48d586c786a0649a80ae0b42a301c0b5 (diff)
downloadcru-e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef.tar.gz
cru-e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef.tar.bz2
cru-e68e0d9a5130e8bc0b634572b7fd44b9bfc0f8ef.zip
...
Diffstat (limited to 'src/common/String.cpp')
-rw-r--r--src/common/String.cpp8
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;