From aeb41b56e123a4946fd76e89b2cf47a46e6411f6 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 11 Jun 2010 09:59:56 +0200 Subject: [PATCH] converter streams: make code more readable The name buffer_availabile was kinda confusing, so its been renamed to buffer_data_size() to match buffer_data(). Also I added a comment to buffer_ensure_space because its behaviour wasn't obvious. --- gio/gconverterinputstream.c | 26 ++++++++++++++------------ gio/gconverteroutputstream.c | 26 ++++++++++++++------------ 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/gio/gconverterinputstream.c b/gio/gconverterinputstream.c index 5dad35dc3..d571f07d1 100644 --- a/gio/gconverterinputstream.c +++ b/gio/gconverterinputstream.c @@ -211,7 +211,7 @@ g_converter_input_stream_new (GInputStream *base_stream, } static gsize -buffer_available (Buffer *buffer) +buffer_data_size (Buffer *buffer) { return buffer->end - buffer->start; } @@ -251,7 +251,7 @@ compact_buffer (Buffer *buffer) { gsize in_buffer; - in_buffer = buffer_available (buffer); + in_buffer = buffer_data_size (buffer); memmove (buffer->data, buffer->data + buffer->start, in_buffer); @@ -271,7 +271,7 @@ grow_buffer (Buffer *buffer) size = buffer->size * 2; data = g_malloc (size); - in_buffer = buffer_available (buffer); + in_buffer = buffer_data_size (buffer); memcpy (data, buffer->data + buffer->start, @@ -283,13 +283,15 @@ grow_buffer (Buffer *buffer) buffer->size = size; } +/* Ensures that the buffer can fit at_least_size bytes, + * *including* the current in-buffer data */ static void buffer_ensure_space (Buffer *buffer, gsize at_least_size) { gsize in_buffer, left_to_fill; - in_buffer = buffer_available (buffer); + in_buffer = buffer_data_size (buffer); if (in_buffer >= at_least_size) return; @@ -364,7 +366,7 @@ g_converter_input_stream_read (GInputStream *stream, cstream = G_CONVERTER_INPUT_STREAM (stream); priv = cstream->priv; - available = buffer_available (&priv->converted_buffer); + available = buffer_data_size (&priv->converted_buffer); if (available > 0 && count <= available) @@ -384,7 +386,7 @@ g_converter_input_stream_read (GInputStream *stream, /* If there is no data to convert, and no pre-converted data, do some i/o for more input */ - if (buffer_available (&priv->input_buffer) == 0 && + if (buffer_data_size (&priv->input_buffer) == 0 && total_bytes_read == 0 && !priv->at_input_end) { @@ -401,7 +403,7 @@ g_converter_input_stream_read (GInputStream *stream, my_error = NULL; res = g_converter_convert (priv->converter, buffer_data (&priv->input_buffer), - buffer_available (&priv->input_buffer), + buffer_data_size (&priv->input_buffer), buffer, count, priv->at_input_end ? G_CONVERTER_INPUT_AT_END : 0, &bytes_read, @@ -438,7 +440,7 @@ g_converter_input_stream_read (GInputStream *stream, /* If there is no more to convert, return EOF */ if (priv->finished) { - g_assert (buffer_available (&priv->converted_buffer) == 0); + g_assert (buffer_data_size (&priv->converted_buffer) == 0); return 0; } @@ -458,7 +460,7 @@ g_converter_input_stream_read (GInputStream *stream, my_error = NULL; res = g_converter_convert (priv->converter, buffer_data (&priv->input_buffer), - buffer_available (&priv->input_buffer), + buffer_data_size (&priv->input_buffer), buffer_data (&priv->converted_buffer), buffer_tailspace (&priv->converted_buffer), priv->at_input_end ? G_CONVERTER_INPUT_AT_END : 0, @@ -471,13 +473,13 @@ g_converter_input_stream_read (GInputStream *stream, buffer_consumed (&priv->input_buffer, bytes_read); /* Maybe we consumed without producing any output */ - if (buffer_available (&priv->converted_buffer) == 0 && res != G_CONVERTER_FINISHED) + if (buffer_data_size (&priv->converted_buffer) == 0 && res != G_CONVERTER_FINISHED) continue; /* Convert more */ if (res == G_CONVERTER_FINISHED) priv->finished = TRUE; - total_bytes_read = MIN (count, buffer_available (&priv->converted_buffer)); + total_bytes_read = MIN (count, buffer_data_size (&priv->converted_buffer)); buffer_read (&priv->converted_buffer, buffer, total_bytes_read); g_assert (priv->finished || total_bytes_read > 0); @@ -495,7 +497,7 @@ g_converter_input_stream_read (GInputStream *stream, /* Need more data */ my_error2 = NULL; res = fill_input_buffer (cstream, - buffer_available (&priv->input_buffer) + 4096, + buffer_data_size (&priv->input_buffer) + 4096, cancellable, &my_error2); if (res < 0) diff --git a/gio/gconverteroutputstream.c b/gio/gconverteroutputstream.c index f59733d30..4e1951b5e 100644 --- a/gio/gconverteroutputstream.c +++ b/gio/gconverteroutputstream.c @@ -228,7 +228,7 @@ g_converter_output_stream_new (GOutputStream *base_stream, } static gsize -buffer_available (Buffer *buffer) +buffer_data_size (Buffer *buffer) { return buffer->end - buffer->start; } @@ -259,7 +259,7 @@ compact_buffer (Buffer *buffer) { gsize in_buffer; - in_buffer = buffer_available (buffer); + in_buffer = buffer_data_size (buffer); memmove (buffer->data, buffer->data + buffer->start, in_buffer); @@ -279,7 +279,7 @@ grow_buffer (Buffer *buffer) size = buffer->size * 2; data = g_malloc (size); - in_buffer = buffer_available (buffer); + in_buffer = buffer_data_size (buffer); memcpy (data, buffer->data + buffer->start, @@ -291,13 +291,15 @@ grow_buffer (Buffer *buffer) buffer->size = size; } +/* Ensures that the buffer can fit at_least_size bytes, + * *including* the current in-buffer data */ static void buffer_ensure_space (Buffer *buffer, gsize at_least_size) { gsize in_buffer, left_to_fill; - in_buffer = buffer_available (buffer); + in_buffer = buffer_data_size (buffer); if (in_buffer >= at_least_size) return; @@ -330,7 +332,7 @@ buffer_append (Buffer *buffer, gsize data_size) { buffer_ensure_space (buffer, - buffer_available (buffer) + data_size); + buffer_data_size (buffer) + data_size); memcpy (buffer->data + buffer->end, data, data_size); buffer->end += data_size; } @@ -352,7 +354,7 @@ flush_buffer (GConverterOutputStream *stream, base_stream = G_FILTER_OUTPUT_STREAM (stream)->base_stream; - available = buffer_available (&priv->converted_buffer); + available = buffer_data_size (&priv->converted_buffer); if (available > 0) { res = g_output_stream_write_all (base_stream, @@ -398,12 +400,12 @@ g_converter_output_stream_write (GOutputStream *stream, return 0; /* Convert as much as possible */ - if (buffer_available (&priv->output_buffer) > 0) + if (buffer_data_size (&priv->output_buffer) > 0) { converting_from_buffer = TRUE; buffer_append (&priv->output_buffer, buffer, count); to_convert = buffer_data (&priv->output_buffer); - to_convert_size = buffer_available (&priv->output_buffer); + to_convert_size = buffer_data_size (&priv->output_buffer); } else { @@ -427,7 +429,7 @@ g_converter_output_stream_write (GOutputStream *stream, res = g_converter_convert (priv->converter, to_convert + converted_bytes, to_convert_size - converted_bytes, - buffer_data (&priv->converted_buffer) + buffer_available (&priv->converted_buffer), + buffer_data (&priv->converted_buffer) + buffer_data_size (&priv->converted_buffer), buffer_tailspace (&priv->converted_buffer), 0, &bytes_read, @@ -541,8 +543,8 @@ g_converter_output_stream_flush (GOutputStream *stream, my_error = NULL; res = g_converter_convert (priv->converter, buffer_data (&priv->output_buffer), - buffer_available (&priv->output_buffer), - buffer_data (&priv->converted_buffer) + buffer_available (&priv->converted_buffer), + buffer_data_size (&priv->output_buffer), + buffer_data (&priv->converted_buffer) + buffer_data_size (&priv->converted_buffer), buffer_tailspace (&priv->converted_buffer), is_closing ? G_CONVERTER_INPUT_AT_END : G_CONVERTER_FLUSH, &bytes_read, @@ -560,7 +562,7 @@ g_converter_output_stream_flush (GOutputStream *stream, res == G_CONVERTER_FLUSHED) { /* Should not have retured FLUSHED with input left */ - g_assert (buffer_available (&priv->output_buffer) == 0); + g_assert (buffer_data_size (&priv->output_buffer) == 0); flushed = TRUE; } }