@@ -16,11 +16,11 @@ class RandomUTF8 final {
1616
1717 std::mt19937 gen;
1818 std::discrete_distribution<> bytes_count;
19- std::uniform_int_distribution<uint8_t > val_7bit{0x00 , 0x7f }; // 0b0xxxxxxx
20- std::uniform_int_distribution<uint8_t > val_6bit{0x00 , 0x3f }; // 0b10xxxxxx
21- std::uniform_int_distribution<uint8_t > val_5bit{0x00 , 0x1f }; // 0b110xxxxx
22- std::uniform_int_distribution<uint8_t > val_4bit{0x00 , 0x0f }; // 0b1110xxxx
23- std::uniform_int_distribution<uint8_t > val_3bit{0x00 , 0x07 }; // 0b11110xxx
19+ std::uniform_int_distribution<int > val_7bit{0x00 , 0x7f }; // 0b0xxxxxxx
20+ std::uniform_int_distribution<int > val_6bit{0x00 , 0x3f }; // 0b10xxxxxx
21+ std::uniform_int_distribution<int > val_5bit{0x00 , 0x1f }; // 0b110xxxxx
22+ std::uniform_int_distribution<int > val_4bit{0x00 , 0x0f }; // 0b1110xxxx
23+ std::uniform_int_distribution<int > val_3bit{0x00 , 0x07 }; // 0b11110xxx
2424};
2525
2626RandomUTF8::RandomUTF8 (std::random_device &rd, int prob_1byte, int prob_2bytes,
@@ -35,56 +35,56 @@ std::vector<uint8_t> RandomUTF8::generate(size_t output_bytes) {
3535 while (result.size () < output_bytes) {
3636 switch (bytes_count (gen)) {
3737 case 0 : // 1 byte
38- candidate = val_7bit (gen);
38+ candidate = uint8_t ( val_7bit (gen) );
3939 while (candidate == 0 ) { // though strictly speaking, a stream of nulls is
4040 // UTF8, it tends to break some code
41- candidate = val_7bit (gen);
41+ candidate = uint8_t ( val_7bit (gen) );
4242 }
4343 result.push_back (candidate);
4444 break ;
4545 case 1 : // 2 bytes
46- candidate = 0xc0 | val_5bit (gen);
46+ candidate = 0xc0 | uint8_t ( val_5bit (gen) );
4747 while (candidate < 0xC2 ) {
48- candidate = 0xc0 | val_5bit (gen);
48+ candidate = 0xc0 | uint8_t ( val_5bit (gen) );
4949 }
5050 result.push_back (candidate);
51- result.push_back (0x80 | val_6bit (gen));
51+ result.push_back (0x80 | uint8_t ( val_6bit (gen) ));
5252 break ;
5353 case 2 : // 3 bytes
54- head = 0xe0 | val_4bit (gen);
54+ head = 0xe0 | uint8_t ( val_4bit (gen) );
5555 result.push_back (head);
56- candidate = 0x80 | val_6bit (gen);
56+ candidate = 0x80 | uint8_t ( val_6bit (gen) );
5757 if (head == 0xE0 ) {
5858 while (candidate < 0xA0 ) {
59- candidate = 0x80 | val_6bit (gen);
59+ candidate = 0x80 | uint8_t ( val_6bit (gen) );
6060 }
6161 } else if (head == 0xED ) {
6262 while (candidate > 0x9F ) {
63- candidate = 0x80 | val_6bit (gen);
63+ candidate = 0x80 | uint8_t ( val_6bit (gen) );
6464 }
6565 }
6666 result.push_back (candidate);
67- result.push_back (0x80 | val_6bit (gen));
67+ result.push_back (0x80 | uint8_t ( val_6bit (gen) ));
6868 break ;
6969 case 3 : // 4 bytes
70- head = 0xf0 | val_3bit (gen);
70+ head = 0xf0 | uint8_t ( val_3bit (gen) );
7171 while (head > 0xF4 ) {
72- head = 0xf0 | val_3bit (gen);
72+ head = 0xf0 | uint8_t ( val_3bit (gen) );
7373 }
7474 result.push_back (head);
75- candidate = 0x80 | val_6bit (gen);
75+ candidate = 0x80 | uint8_t ( val_6bit (gen) );
7676 if (head == 0xF0 ) {
7777 while (candidate < 0x90 ) {
78- candidate = 0x80 | val_6bit (gen);
78+ candidate = 0x80 | uint8_t ( val_6bit (gen) );
7979 }
8080 } else if (head == 0xF4 ) {
8181 while (candidate > 0x8F ) {
82- candidate = 0x80 | val_6bit (gen);
82+ candidate = 0x80 | uint8_t ( val_6bit (gen) );
8383 }
8484 }
8585 result.push_back (candidate);
86- result.push_back (0x80 | val_6bit (gen));
87- result.push_back (0x80 | val_6bit (gen));
86+ result.push_back (0x80 | uint8_t ( val_6bit (gen) ));
87+ result.push_back (0x80 | uint8_t ( val_6bit (gen) ));
8888 break ;
8989 }
9090 }
0 commit comments