mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-21 22:59:16 +02:00
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.
This commit is contained in:
parent
6858ab2033
commit
aeb41b56e1
@ -211,7 +211,7 @@ g_converter_input_stream_new (GInputStream *base_stream,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gsize
|
static gsize
|
||||||
buffer_available (Buffer *buffer)
|
buffer_data_size (Buffer *buffer)
|
||||||
{
|
{
|
||||||
return buffer->end - buffer->start;
|
return buffer->end - buffer->start;
|
||||||
}
|
}
|
||||||
@ -251,7 +251,7 @@ compact_buffer (Buffer *buffer)
|
|||||||
{
|
{
|
||||||
gsize in_buffer;
|
gsize in_buffer;
|
||||||
|
|
||||||
in_buffer = buffer_available (buffer);
|
in_buffer = buffer_data_size (buffer);
|
||||||
memmove (buffer->data,
|
memmove (buffer->data,
|
||||||
buffer->data + buffer->start,
|
buffer->data + buffer->start,
|
||||||
in_buffer);
|
in_buffer);
|
||||||
@ -271,7 +271,7 @@ grow_buffer (Buffer *buffer)
|
|||||||
size = buffer->size * 2;
|
size = buffer->size * 2;
|
||||||
|
|
||||||
data = g_malloc (size);
|
data = g_malloc (size);
|
||||||
in_buffer = buffer_available (buffer);
|
in_buffer = buffer_data_size (buffer);
|
||||||
|
|
||||||
memcpy (data,
|
memcpy (data,
|
||||||
buffer->data + buffer->start,
|
buffer->data + buffer->start,
|
||||||
@ -283,13 +283,15 @@ grow_buffer (Buffer *buffer)
|
|||||||
buffer->size = size;
|
buffer->size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ensures that the buffer can fit at_least_size bytes,
|
||||||
|
* *including* the current in-buffer data */
|
||||||
static void
|
static void
|
||||||
buffer_ensure_space (Buffer *buffer,
|
buffer_ensure_space (Buffer *buffer,
|
||||||
gsize at_least_size)
|
gsize at_least_size)
|
||||||
{
|
{
|
||||||
gsize in_buffer, left_to_fill;
|
gsize in_buffer, left_to_fill;
|
||||||
|
|
||||||
in_buffer = buffer_available (buffer);
|
in_buffer = buffer_data_size (buffer);
|
||||||
|
|
||||||
if (in_buffer >= at_least_size)
|
if (in_buffer >= at_least_size)
|
||||||
return;
|
return;
|
||||||
@ -364,7 +366,7 @@ g_converter_input_stream_read (GInputStream *stream,
|
|||||||
cstream = G_CONVERTER_INPUT_STREAM (stream);
|
cstream = G_CONVERTER_INPUT_STREAM (stream);
|
||||||
priv = cstream->priv;
|
priv = cstream->priv;
|
||||||
|
|
||||||
available = buffer_available (&priv->converted_buffer);
|
available = buffer_data_size (&priv->converted_buffer);
|
||||||
|
|
||||||
if (available > 0 &&
|
if (available > 0 &&
|
||||||
count <= available)
|
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,
|
/* If there is no data to convert, and no pre-converted data,
|
||||||
do some i/o for more input */
|
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 &&
|
total_bytes_read == 0 &&
|
||||||
!priv->at_input_end)
|
!priv->at_input_end)
|
||||||
{
|
{
|
||||||
@ -401,7 +403,7 @@ g_converter_input_stream_read (GInputStream *stream,
|
|||||||
my_error = NULL;
|
my_error = NULL;
|
||||||
res = g_converter_convert (priv->converter,
|
res = g_converter_convert (priv->converter,
|
||||||
buffer_data (&priv->input_buffer),
|
buffer_data (&priv->input_buffer),
|
||||||
buffer_available (&priv->input_buffer),
|
buffer_data_size (&priv->input_buffer),
|
||||||
buffer, count,
|
buffer, count,
|
||||||
priv->at_input_end ? G_CONVERTER_INPUT_AT_END : 0,
|
priv->at_input_end ? G_CONVERTER_INPUT_AT_END : 0,
|
||||||
&bytes_read,
|
&bytes_read,
|
||||||
@ -438,7 +440,7 @@ g_converter_input_stream_read (GInputStream *stream,
|
|||||||
/* If there is no more to convert, return EOF */
|
/* If there is no more to convert, return EOF */
|
||||||
if (priv->finished)
|
if (priv->finished)
|
||||||
{
|
{
|
||||||
g_assert (buffer_available (&priv->converted_buffer) == 0);
|
g_assert (buffer_data_size (&priv->converted_buffer) == 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,7 +460,7 @@ g_converter_input_stream_read (GInputStream *stream,
|
|||||||
my_error = NULL;
|
my_error = NULL;
|
||||||
res = g_converter_convert (priv->converter,
|
res = g_converter_convert (priv->converter,
|
||||||
buffer_data (&priv->input_buffer),
|
buffer_data (&priv->input_buffer),
|
||||||
buffer_available (&priv->input_buffer),
|
buffer_data_size (&priv->input_buffer),
|
||||||
buffer_data (&priv->converted_buffer),
|
buffer_data (&priv->converted_buffer),
|
||||||
buffer_tailspace (&priv->converted_buffer),
|
buffer_tailspace (&priv->converted_buffer),
|
||||||
priv->at_input_end ? G_CONVERTER_INPUT_AT_END : 0,
|
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);
|
buffer_consumed (&priv->input_buffer, bytes_read);
|
||||||
|
|
||||||
/* Maybe we consumed without producing any output */
|
/* 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 */
|
continue; /* Convert more */
|
||||||
|
|
||||||
if (res == G_CONVERTER_FINISHED)
|
if (res == G_CONVERTER_FINISHED)
|
||||||
priv->finished = TRUE;
|
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);
|
buffer_read (&priv->converted_buffer, buffer, total_bytes_read);
|
||||||
|
|
||||||
g_assert (priv->finished || total_bytes_read > 0);
|
g_assert (priv->finished || total_bytes_read > 0);
|
||||||
@ -495,7 +497,7 @@ g_converter_input_stream_read (GInputStream *stream,
|
|||||||
/* Need more data */
|
/* Need more data */
|
||||||
my_error2 = NULL;
|
my_error2 = NULL;
|
||||||
res = fill_input_buffer (cstream,
|
res = fill_input_buffer (cstream,
|
||||||
buffer_available (&priv->input_buffer) + 4096,
|
buffer_data_size (&priv->input_buffer) + 4096,
|
||||||
cancellable,
|
cancellable,
|
||||||
&my_error2);
|
&my_error2);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
|
@ -228,7 +228,7 @@ g_converter_output_stream_new (GOutputStream *base_stream,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gsize
|
static gsize
|
||||||
buffer_available (Buffer *buffer)
|
buffer_data_size (Buffer *buffer)
|
||||||
{
|
{
|
||||||
return buffer->end - buffer->start;
|
return buffer->end - buffer->start;
|
||||||
}
|
}
|
||||||
@ -259,7 +259,7 @@ compact_buffer (Buffer *buffer)
|
|||||||
{
|
{
|
||||||
gsize in_buffer;
|
gsize in_buffer;
|
||||||
|
|
||||||
in_buffer = buffer_available (buffer);
|
in_buffer = buffer_data_size (buffer);
|
||||||
memmove (buffer->data,
|
memmove (buffer->data,
|
||||||
buffer->data + buffer->start,
|
buffer->data + buffer->start,
|
||||||
in_buffer);
|
in_buffer);
|
||||||
@ -279,7 +279,7 @@ grow_buffer (Buffer *buffer)
|
|||||||
size = buffer->size * 2;
|
size = buffer->size * 2;
|
||||||
|
|
||||||
data = g_malloc (size);
|
data = g_malloc (size);
|
||||||
in_buffer = buffer_available (buffer);
|
in_buffer = buffer_data_size (buffer);
|
||||||
|
|
||||||
memcpy (data,
|
memcpy (data,
|
||||||
buffer->data + buffer->start,
|
buffer->data + buffer->start,
|
||||||
@ -291,13 +291,15 @@ grow_buffer (Buffer *buffer)
|
|||||||
buffer->size = size;
|
buffer->size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ensures that the buffer can fit at_least_size bytes,
|
||||||
|
* *including* the current in-buffer data */
|
||||||
static void
|
static void
|
||||||
buffer_ensure_space (Buffer *buffer,
|
buffer_ensure_space (Buffer *buffer,
|
||||||
gsize at_least_size)
|
gsize at_least_size)
|
||||||
{
|
{
|
||||||
gsize in_buffer, left_to_fill;
|
gsize in_buffer, left_to_fill;
|
||||||
|
|
||||||
in_buffer = buffer_available (buffer);
|
in_buffer = buffer_data_size (buffer);
|
||||||
|
|
||||||
if (in_buffer >= at_least_size)
|
if (in_buffer >= at_least_size)
|
||||||
return;
|
return;
|
||||||
@ -330,7 +332,7 @@ buffer_append (Buffer *buffer,
|
|||||||
gsize data_size)
|
gsize data_size)
|
||||||
{
|
{
|
||||||
buffer_ensure_space (buffer,
|
buffer_ensure_space (buffer,
|
||||||
buffer_available (buffer) + data_size);
|
buffer_data_size (buffer) + data_size);
|
||||||
memcpy (buffer->data + buffer->end, data, data_size);
|
memcpy (buffer->data + buffer->end, data, data_size);
|
||||||
buffer->end += data_size;
|
buffer->end += data_size;
|
||||||
}
|
}
|
||||||
@ -352,7 +354,7 @@ flush_buffer (GConverterOutputStream *stream,
|
|||||||
|
|
||||||
base_stream = G_FILTER_OUTPUT_STREAM (stream)->base_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)
|
if (available > 0)
|
||||||
{
|
{
|
||||||
res = g_output_stream_write_all (base_stream,
|
res = g_output_stream_write_all (base_stream,
|
||||||
@ -398,12 +400,12 @@ g_converter_output_stream_write (GOutputStream *stream,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Convert as much as possible */
|
/* Convert as much as possible */
|
||||||
if (buffer_available (&priv->output_buffer) > 0)
|
if (buffer_data_size (&priv->output_buffer) > 0)
|
||||||
{
|
{
|
||||||
converting_from_buffer = TRUE;
|
converting_from_buffer = TRUE;
|
||||||
buffer_append (&priv->output_buffer, buffer, count);
|
buffer_append (&priv->output_buffer, buffer, count);
|
||||||
to_convert = buffer_data (&priv->output_buffer);
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -427,7 +429,7 @@ g_converter_output_stream_write (GOutputStream *stream,
|
|||||||
res = g_converter_convert (priv->converter,
|
res = g_converter_convert (priv->converter,
|
||||||
to_convert + converted_bytes,
|
to_convert + converted_bytes,
|
||||||
to_convert_size - 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),
|
buffer_tailspace (&priv->converted_buffer),
|
||||||
0,
|
0,
|
||||||
&bytes_read,
|
&bytes_read,
|
||||||
@ -541,8 +543,8 @@ g_converter_output_stream_flush (GOutputStream *stream,
|
|||||||
my_error = NULL;
|
my_error = NULL;
|
||||||
res = g_converter_convert (priv->converter,
|
res = g_converter_convert (priv->converter,
|
||||||
buffer_data (&priv->output_buffer),
|
buffer_data (&priv->output_buffer),
|
||||||
buffer_available (&priv->output_buffer),
|
buffer_data_size (&priv->output_buffer),
|
||||||
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),
|
buffer_tailspace (&priv->converted_buffer),
|
||||||
is_closing ? G_CONVERTER_INPUT_AT_END : G_CONVERTER_FLUSH,
|
is_closing ? G_CONVERTER_INPUT_AT_END : G_CONVERTER_FLUSH,
|
||||||
&bytes_read,
|
&bytes_read,
|
||||||
@ -560,7 +562,7 @@ g_converter_output_stream_flush (GOutputStream *stream,
|
|||||||
res == G_CONVERTER_FLUSHED)
|
res == G_CONVERTER_FLUSHED)
|
||||||
{
|
{
|
||||||
/* Should not have retured FLUSHED with input left */
|
/* 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;
|
flushed = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user