5656convert_via_utf8 (Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
5757 bool last)
5858{
59- uint8_t input_buffer[ INPUT_BUFFER_SIZE] ;
60- uint8_t intermediate_buffer[ UTF8_INTERMEDIATE_BUFFER_SIZE] ;
61- uint8_t output_buffer[ OUTPUT_BUFFER_SIZE] ;
59+ std::array< uint8_t , INPUT_BUFFER_SIZE> input_buffer ;
60+ std::array< uint8_t , UTF8_INTERMEDIATE_BUFFER_SIZE> intermediate_buffer ;
61+ std::array< uint8_t , OUTPUT_BUFFER_SIZE> output_buffer ;
6262
6363 bool current_input_ended = false ;
6464 while (!current_input_ended) {
65- size_t decoder_input_end = fread (input_buffer, 1 , INPUT_BUFFER_SIZE, read);
65+ size_t decoder_input_end =
66+ fread (input_buffer.data (), 1 , input_buffer.size (), read);
6667 if (ferror (read)) {
6768 fprintf (stderr, " Error reading input." );
6869 exit (-5 );
@@ -77,11 +78,10 @@ convert_via_utf8(Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
7778
7879 std::tie (decoder_result, decoder_read, decoder_written, std::ignore) =
7980 decoder.decode_to_utf8_with_replacement (
80- gsl::span<const uint8_t >(input_buffer + decoder_input_start,
81- decoder_input_end - decoder_input_start),
82- gsl::span<uint8_t >(intermediate_buffer,
83- UTF8_INTERMEDIATE_BUFFER_SIZE),
84- input_ended);
81+ gsl::as_span (input_buffer)
82+ .subspan (decoder_input_start,
83+ decoder_input_end - decoder_input_start),
84+ intermediate_buffer, input_ended);
8585 decoder_input_start += decoder_read;
8686
8787 bool last_output = (input_ended && (decoder_result == INPUT_EMPTY));
@@ -93,7 +93,7 @@ convert_via_utf8(Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
9393 if (encoder.encoding () == UTF_8_ENCODING) {
9494 // If the target is UTF-8, optimize out the encoder.
9595 size_t file_written =
96- fwrite (intermediate_buffer, 1 , decoder_written, write);
96+ fwrite (intermediate_buffer. data () , 1 , decoder_written, write);
9797 if (file_written != decoder_written) {
9898 fprintf (stderr, " Error writing output." );
9999 exit (-7 );
@@ -107,14 +107,13 @@ convert_via_utf8(Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
107107
108108 std::tie (encoder_result, encoder_read, encoder_written, std::ignore) =
109109 encoder.encode_from_utf8_with_replacement (
110- gsl::span<const uint8_t >(intermediate_buffer +
111- encoder_input_start,
112- decoder_written - encoder_input_start),
113- gsl::span<uint8_t >(output_buffer, OUTPUT_BUFFER_SIZE),
114- last_output);
110+ gsl::as_span (intermediate_buffer)
111+ .subspan (encoder_input_start,
112+ decoder_written - encoder_input_start),
113+ output_buffer, last_output);
115114 encoder_input_start += encoder_read;
116115 size_t file_written =
117- fwrite (output_buffer, 1 , encoder_written, write);
116+ fwrite (output_buffer. data () , 1 , encoder_written, write);
118117 if (file_written != encoder_written) {
119118 fprintf (stderr, " Error writing output." );
120119 exit (-6 );
@@ -138,13 +137,14 @@ void
138137convert_via_utf16 (Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
139138 bool last)
140139{
141- uint8_t input_buffer[ INPUT_BUFFER_SIZE] ;
142- char16_t intermediate_buffer[ UTF16_INTERMEDIATE_BUFFER_SIZE] ;
143- uint8_t output_buffer[ OUTPUT_BUFFER_SIZE] ;
140+ std::array< uint8_t , INPUT_BUFFER_SIZE> input_buffer ;
141+ std::array< char16_t , UTF16_INTERMEDIATE_BUFFER_SIZE> intermediate_buffer ;
142+ std::array< uint8_t , OUTPUT_BUFFER_SIZE> output_buffer ;
144143
145144 bool current_input_ended = false ;
146145 while (!current_input_ended) {
147- size_t decoder_input_end = fread (input_buffer, 1 , INPUT_BUFFER_SIZE, read);
146+ size_t decoder_input_end =
147+ fread (input_buffer.data (), 1 , input_buffer.size (), read);
148148 if (ferror (read)) {
149149 fprintf (stderr, " Error reading input." );
150150 exit (-5 );
@@ -159,11 +159,10 @@ convert_via_utf16(Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
159159
160160 std::tie (decoder_result, decoder_read, decoder_written, std::ignore) =
161161 decoder.decode_to_utf16_with_replacement (
162- gsl::span<const uint8_t >(input_buffer + decoder_input_start,
163- decoder_input_end - decoder_input_start),
164- gsl::span<char16_t >(intermediate_buffer,
165- UTF16_INTERMEDIATE_BUFFER_SIZE),
166- input_ended);
162+ gsl::as_span (input_buffer)
163+ .subspan (decoder_input_start,
164+ decoder_input_end - decoder_input_start),
165+ intermediate_buffer, input_ended);
167166 decoder_input_start += decoder_read;
168167
169168 bool last_output = (input_ended && (decoder_result == INPUT_EMPTY));
@@ -180,11 +179,13 @@ convert_via_utf16(Decoder& decoder, Encoder& encoder, FILE* read, FILE* write,
180179
181180 std::tie (encoder_result, encoder_read, encoder_written, std::ignore) =
182181 encoder.encode_from_utf16_with_replacement (
183- gsl::span<const char16_t >(intermediate_buffer + encoder_input_start,
184- decoder_written - encoder_input_start),
185- gsl::span<uint8_t >(output_buffer, OUTPUT_BUFFER_SIZE), last_output);
182+ gsl::as_span (intermediate_buffer)
183+ .subspan (encoder_input_start,
184+ decoder_written - encoder_input_start),
185+ output_buffer, last_output);
186186 encoder_input_start += encoder_read;
187- size_t file_written = fwrite (output_buffer, 1 , encoder_written, write);
187+ size_t file_written =
188+ fwrite (output_buffer.data (), 1 , encoder_written, write);
188189 if (file_written != encoder_written) {
189190 fprintf (stderr, " Error writing output." );
190191 exit (-6 );
0 commit comments