Skip to content

Commit ee2172d

Browse files
committed
Added clear() method to CharacterConverter class; updated tests to use it
1 parent db01656 commit ee2172d

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

libc/src/__support/wchar/character_converter.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ namespace internal {
2020

2121
CharacterConverter::CharacterConverter(mbstate *mbstate) { state = mbstate; }
2222

23+
void CharacterConverter::clear() {
24+
state->partial = 0;
25+
state->bytes_processed = 0;
26+
state->total_bytes = 0;
27+
}
28+
2329
bool CharacterConverter::isComplete() {
2430
return state->bytes_processed == state->total_bytes;
2531
}

libc/src/__support/wchar/character_converter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class CharacterConverter {
2525
public:
2626
CharacterConverter(mbstate *mbstate);
2727

28+
void clear();
2829
bool isComplete();
2930

3031
int push(char8_t utf8_byte);

libc/test/src/__support/wchar/utf32_to_8_test.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
#include "test/UnitTest/Test.h"
1414

1515
TEST(LlvmLibcCharacterConverterUTF32To8Test, OneByte) {
16-
LIBC_NAMESPACE::internal::mbstate state{0, 0, 0};
16+
LIBC_NAMESPACE::internal::mbstate state;
1717
LIBC_NAMESPACE::internal::CharacterConverter cr(&state);
18+
cr.clear();
1819

1920
// utf8 1-byte encodings are identical to their utf32 representations
2021
char32_t utf32_A = 0x41; // 'A'
@@ -37,8 +38,9 @@ TEST(LlvmLibcCharacterConverterUTF32To8Test, OneByte) {
3738
}
3839

3940
TEST(LlvmLibcCharacterConverterUTF32To8Test, TwoByte) {
40-
LIBC_NAMESPACE::internal::mbstate state{0, 0, 0};
41+
LIBC_NAMESPACE::internal::mbstate state;
4142
LIBC_NAMESPACE::internal::CharacterConverter cr(&state);
43+
cr.clear();
4244

4345
// testing utf32: 0xff -> utf8: 0xc3 0xbf
4446
char32_t utf32 = 0xff;
@@ -70,8 +72,9 @@ TEST(LlvmLibcCharacterConverterUTF32To8Test, TwoByte) {
7072
}
7173

7274
TEST(LlvmLibcCharacterConverterUTF32To8Test, ThreeByte) {
73-
LIBC_NAMESPACE::internal::mbstate state{0, 0, 0};
75+
LIBC_NAMESPACE::internal::mbstate state;
7476
LIBC_NAMESPACE::internal::CharacterConverter cr(&state);
77+
cr.clear();
7578

7679
// testing utf32: 0xac15 -> utf8: 0xea 0xb0 0x95
7780
char32_t utf32 = 0xac15;
@@ -111,8 +114,9 @@ TEST(LlvmLibcCharacterConverterUTF32To8Test, ThreeByte) {
111114
}
112115

113116
TEST(LlvmLibcCharacterConverterUTF32To8Test, FourByte) {
114-
LIBC_NAMESPACE::internal::mbstate state{0, 0, 0};
117+
LIBC_NAMESPACE::internal::mbstate state;
115118
LIBC_NAMESPACE::internal::CharacterConverter cr(&state);
119+
cr.clear();
116120

117121
// testing utf32: 0x1f921 -> utf8: 0xf0 0x9f 0xa4 0xa1
118122
char32_t utf32 = 0x1f921;

0 commit comments

Comments
 (0)