Skip to content

Commit 3b0a568

Browse files
committed
Use std::array.
1 parent c651a66 commit 3b0a568

1 file changed

Lines changed: 30 additions & 29 deletions

File tree

recode_cpp.cpp

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,14 @@ void
5656
convert_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
138137
convert_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

Comments
 (0)