More string usage cleanup
This commit is contained in:
parent
ff6eacffa3
commit
94cbd5a837
|
@ -420,7 +420,7 @@ public:
|
|||
|
||||
void insert(Codepoint cp)
|
||||
{
|
||||
m_line = m_line.substr(0, m_cursor_pos) + codepoint_to_str(cp)
|
||||
m_line = m_line.substr(0, m_cursor_pos) + String{cp}
|
||||
+ m_line.substr(m_cursor_pos);
|
||||
++m_cursor_pos;
|
||||
}
|
||||
|
@ -1187,7 +1187,7 @@ private:
|
|||
|
||||
void insert(Codepoint key)
|
||||
{
|
||||
auto str = codepoint_to_str(key);
|
||||
String str{key};
|
||||
context().selections().insert(str, InsertMode::InsertCursor);
|
||||
context().hooks().run_hook("InsertChar", str, context());
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ String key_to_str(Key key)
|
|||
res = "F" + to_string((int)(key.key - Key::F1 + 1));
|
||||
}
|
||||
else
|
||||
res = codepoint_to_str(key.key);
|
||||
res = String{key.key};
|
||||
|
||||
switch (key.modifiers)
|
||||
{
|
||||
|
|
|
@ -102,6 +102,7 @@ public:
|
|||
String(const char* content, ByteCount len) : m_data(content, (size_t)(int)len) {}
|
||||
explicit String(Codepoint cp, CharCount count = 1)
|
||||
{
|
||||
reserve(utf8::codepoint_size(cp) * (int)count);
|
||||
while (count-- > 0)
|
||||
utf8::dump(std::back_inserter(*this), cp);
|
||||
}
|
||||
|
@ -252,13 +253,6 @@ inline String operator"" _str(const char* str, size_t)
|
|||
return String(str);
|
||||
}
|
||||
|
||||
inline String codepoint_to_str(Codepoint cp)
|
||||
{
|
||||
String str;
|
||||
utf8::dump(std::back_inserter(str), cp);
|
||||
return str;
|
||||
}
|
||||
|
||||
int str_to_int(StringView str); // throws on error
|
||||
Optional<int> str_to_int_ifp(StringView str);
|
||||
|
||||
|
|
14
src/utf8.hh
14
src/utf8.hh
|
@ -178,6 +178,20 @@ ByteCount codepoint_size(char byte)
|
|||
|
||||
struct invalid_codepoint{};
|
||||
|
||||
inline ByteCount codepoint_size(Codepoint cp)
|
||||
{
|
||||
if (cp <= 0x7F)
|
||||
return 1;
|
||||
else if (cp <= 0x7FF)
|
||||
return 2;
|
||||
else if (cp <= 0xFFFF)
|
||||
return 3;
|
||||
else if (cp <= 0x10FFFF)
|
||||
return 4;
|
||||
else
|
||||
throw invalid_codepoint{};
|
||||
}
|
||||
|
||||
template<typename OutputIterator>
|
||||
void dump(OutputIterator&& it, Codepoint cp)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user