File tree Expand file tree Collapse file tree 3 files changed +7
-15
lines changed Expand file tree Collapse file tree 3 files changed +7
-15
lines changed Original file line number Diff line number Diff line change @@ -132,12 +132,6 @@ ErrorOr<char32_t> CharacterConverter::pop_utf32() {
132132 return utf32;
133133}
134134
135- size_t CharacterConverter::sizeAsUTF32 () {
136- return 1 ; // a single utf-32 value can fit an entire character
137- }
138-
139- size_t CharacterConverter::sizeAsUTF8 () { return state->total_bytes ; }
140-
141135ErrorOr<char8_t > CharacterConverter::pop_utf8 () {
142136 if (isEmpty ())
143137 return Error (-1 );
Original file line number Diff line number Diff line change @@ -32,8 +32,12 @@ class CharacterConverter {
3232 bool isEmpty ();
3333 bool isValidState ();
3434
35- size_t sizeAsUTF32 ();
36- size_t sizeAsUTF8 ();
35+ template <typename CharType> size_t sizeAs () {
36+ if constexpr (cpp::is_same_v<CharType, char8_t >)
37+ return state->total_bytes ;
38+ else // char32_t
39+ return 1 ; // every character fits in a single char32_t
40+ }
3741
3842 int push (char8_t utf8_byte);
3943 int push (char32_t utf32);
Original file line number Diff line number Diff line change @@ -63,13 +63,7 @@ template <typename T> class StringConverter {
6363 if (!src_elements_read.has_value ())
6464 return Error (src_elements_read.error ());
6565
66- size_t size;
67- if constexpr (cpp::is_same_v<CharType, char8_t >)
68- size = cr.sizeAsUTF8 ();
69- else
70- size = cr.sizeAsUTF32 ();
71-
72- if (size > num_to_write) {
66+ if (cr.sizeAs <CharType>() > num_to_write) {
7367 cr.clear ();
7468 return Error (-1 );
7569 }
You can’t perform that action at this time.
0 commit comments