mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-06-10 18:24:19 +00:00
fpi-byte-writer: Add APIs to write and get GBytes
It makes it handier to handle data elements without having to keep size and data separated
This commit is contained in:
committed by
Marco Trevisan
parent
9c140036e9
commit
14763d29cf
@@ -220,11 +220,13 @@ fpi_byte_writer_init
|
|||||||
fpi_byte_writer_init_with_size
|
fpi_byte_writer_init_with_size
|
||||||
fpi_byte_writer_init_with_data
|
fpi_byte_writer_init_with_data
|
||||||
fpi_byte_writer_reset
|
fpi_byte_writer_reset
|
||||||
|
fpi_byte_writer_reset_and_get_bytes
|
||||||
fpi_byte_writer_reset_and_get_data
|
fpi_byte_writer_reset_and_get_data
|
||||||
fpi_byte_writer_free
|
fpi_byte_writer_free
|
||||||
fpi_byte_writer_free_and_get_data
|
fpi_byte_writer_free_and_get_data
|
||||||
fpi_byte_writer_get_remaining
|
fpi_byte_writer_get_remaining
|
||||||
fpi_byte_writer_ensure_free_space
|
fpi_byte_writer_ensure_free_space
|
||||||
|
fpi_byte_writer_put_bytes
|
||||||
fpi_byte_writer_put_uint8
|
fpi_byte_writer_put_uint8
|
||||||
fpi_byte_writer_put_uint16_be
|
fpi_byte_writer_put_uint16_be
|
||||||
fpi_byte_writer_put_uint24_be
|
fpi_byte_writer_put_uint24_be
|
||||||
|
|||||||
@@ -219,6 +219,36 @@ fpi_byte_writer_reset_and_get_data (FpiByteWriter * writer)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fpi_byte_writer_reset_and_get_bytes:
|
||||||
|
* @writer: #FpiByteWriter instance
|
||||||
|
*
|
||||||
|
* Resets @writer and returns the current data as a #GBytes.
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): the current data as a #GBytes.
|
||||||
|
*/
|
||||||
|
GBytes *
|
||||||
|
fpi_byte_writer_reset_and_get_bytes (FpiByteWriter * writer)
|
||||||
|
{
|
||||||
|
GBytes *bytes;
|
||||||
|
|
||||||
|
g_return_val_if_fail (writer != NULL, NULL);
|
||||||
|
|
||||||
|
if (!writer->owned)
|
||||||
|
{
|
||||||
|
bytes = g_bytes_new (g_steal_pointer (&writer->parent.data),
|
||||||
|
writer->parent.size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bytes = g_bytes_new_take ((gpointer) g_steal_pointer (&writer->parent.data),
|
||||||
|
writer->parent.size);
|
||||||
|
}
|
||||||
|
|
||||||
|
fpi_byte_writer_reset (writer);
|
||||||
|
return g_steal_pointer (&bytes);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fpi_byte_writer_free:
|
* fpi_byte_writer_free:
|
||||||
* @writer: (in) (transfer full): #FpiByteWriter instance
|
* @writer: (in) (transfer full): #FpiByteWriter instance
|
||||||
@@ -602,6 +632,15 @@ CREATE_WRITE_STRING_FUNC (32, guint32);
|
|||||||
*
|
*
|
||||||
* Returns: %TRUE if the value could be written
|
* Returns: %TRUE if the value could be written
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* fpi_byte_writer_put_bytes:
|
||||||
|
* @writer: #FpiByteWriter instance
|
||||||
|
* @bytes: (transfer none): Data to write
|
||||||
|
*
|
||||||
|
* Writes the contents of @bytes to @writer.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if the value could be written
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
* fpi_byte_writer_fill:
|
* fpi_byte_writer_fill:
|
||||||
* @writer: #FpiByteWriter instance
|
* @writer: #FpiByteWriter instance
|
||||||
|
|||||||
@@ -77,6 +77,9 @@ void fpi_byte_writer_reset (FpiByteWriter *writer);
|
|||||||
|
|
||||||
guint8 * fpi_byte_writer_reset_and_get_data (FpiByteWriter *writer);
|
guint8 * fpi_byte_writer_reset_and_get_data (FpiByteWriter *writer);
|
||||||
|
|
||||||
|
|
||||||
|
GBytes * fpi_byte_writer_reset_and_get_bytes (FpiByteWriter *writer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fpi_byte_writer_get_pos:
|
* fpi_byte_writer_get_pos:
|
||||||
* @writer: #FpiByteWriter instance
|
* @writer: #FpiByteWriter instance
|
||||||
@@ -204,6 +207,9 @@ gboolean fpi_byte_writer_put_float64_le (FpiByteWriter *writer, gdoubl
|
|||||||
gboolean fpi_byte_writer_put_data (FpiByteWriter *writer, const guint8 *data, guint size);
|
gboolean fpi_byte_writer_put_data (FpiByteWriter *writer, const guint8 *data, guint size);
|
||||||
|
|
||||||
|
|
||||||
|
gboolean fpi_byte_writer_put_bytes (FpiByteWriter *writer, const GBytes *bytes);
|
||||||
|
|
||||||
|
|
||||||
gboolean fpi_byte_writer_fill (FpiByteWriter *writer, guint8 value, guint size);
|
gboolean fpi_byte_writer_fill (FpiByteWriter *writer, guint8 value, guint size);
|
||||||
|
|
||||||
|
|
||||||
@@ -338,6 +344,18 @@ fpi_byte_writer_put_data_inline (FpiByteWriter * writer, const guint8 * data,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline gboolean
|
||||||
|
fpi_byte_writer_put_bytes_inline (FpiByteWriter * writer, const GBytes * bytes)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (writer != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (bytes != NULL, FALSE);
|
||||||
|
const guint8 *data;
|
||||||
|
gsize size;
|
||||||
|
|
||||||
|
data = g_bytes_get_data ((GBytes *) bytes, &size);
|
||||||
|
return fpi_byte_writer_put_data_inline (writer, data, size);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
fpi_byte_writer_fill_unchecked (FpiByteWriter * writer, guint8 value, guint size)
|
fpi_byte_writer_fill_unchecked (FpiByteWriter * writer, guint8 value, guint size)
|
||||||
{
|
{
|
||||||
@@ -413,6 +431,10 @@ fpi_byte_writer_fill_inline (FpiByteWriter * writer, guint8 value, guint size)
|
|||||||
|
|
||||||
#define fpi_byte_writer_put_data(writer, data, size) \
|
#define fpi_byte_writer_put_data(writer, data, size) \
|
||||||
G_LIKELY (fpi_byte_writer_put_data_inline (writer, data, size))
|
G_LIKELY (fpi_byte_writer_put_data_inline (writer, data, size))
|
||||||
|
#define fpi_byte_writer_put_data_static(writer, data) \
|
||||||
|
G_LIKELY (fpi_byte_writer_put_data_inline (writer, data, sizeof (data)))
|
||||||
|
#define fpi_byte_writer_put_bytes(writer, bytes) \
|
||||||
|
G_LIKELY (fpi_byte_writer_put_bytes_inline (writer, bytes))
|
||||||
#define fpi_byte_writer_fill(writer, val, size) \
|
#define fpi_byte_writer_fill(writer, val, size) \
|
||||||
G_LIKELY (fpi_byte_writer_fill_inline (writer, val, size))
|
G_LIKELY (fpi_byte_writer_fill_inline (writer, val, size))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user