aboutsummaryrefslogtreecommitdiffstats
path: root/include/serd/serd.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-01-13 14:31:00 +0100
committerDavid Robillard <d@drobilla.net>2021-03-07 15:32:23 -0500
commita7be33a7640ee51066c41eded5812d9cee5ad27e (patch)
tree8c2cbe96a6973c73320ff793d452e36fe511b745 /include/serd/serd.h
parent96bcba9cd94879794de477ae7c5c04971fbd6f32 (diff)
downloadserd-a7be33a7640ee51066c41eded5812d9cee5ad27e.tar.gz
serd-a7be33a7640ee51066c41eded5812d9cee5ad27e.tar.bz2
serd-a7be33a7640ee51066c41eded5812d9cee5ad27e.zip
Add SerdBuffer type for mutable buffers
This avoids const violations from abusing SerdChunk as a mutable buffer for string sinks.
Diffstat (limited to 'include/serd/serd.h')
-rw-r--r--include/serd/serd.h22
1 files changed, 14 insertions, 8 deletions
diff --git a/include/serd/serd.h b/include/serd/serd.h
index cdcadcdb..c60bf465 100644
--- a/include/serd/serd.h
+++ b/include/serd/serd.h
@@ -198,6 +198,12 @@ typedef struct {
size_t len; ///< Length of chunk in bytes
} SerdChunk;
+/// A mutable buffer in memory
+typedef struct {
+ void* SERD_NULLABLE buf; ///< Buffer
+ size_t len; ///< Size of buffer in bytes
+} SerdBuffer;
+
/// An error description
typedef struct {
SerdStatus status; ///< Error code
@@ -900,26 +906,26 @@ serd_file_sink(const void* SERD_NONNULL buf,
/**
A convenience sink function for writing to a string
- This function can be used as a SerdSink to write to a SerdChunk which is
+ This function can be used as a SerdSink to write to a SerdBuffer which is
resized as necessary with realloc(). The `stream` parameter must point to
- an initialized SerdChunk. When the write is finished, the string should be
- retrieved with serd_chunk_sink_finish().
+ an initialized SerdBuffer. When the write is finished, the string should be
+ retrieved with serd_buffer_sink_finish().
*/
SERD_API
size_t
-serd_chunk_sink(const void* SERD_NONNULL buf,
- size_t len,
- void* SERD_NONNULL stream);
+serd_buffer_sink(const void* SERD_NONNULL buf,
+ size_t len,
+ void* SERD_NONNULL stream);
/**
- Finish a serialisation to a chunk with serd_chunk_sink().
+ Finish a serialisation to a chunk with serd_buffer_sink().
The returned string is the result of the serialisation, which is null
terminated (by this function) and owned by the caller.
*/
SERD_API
uint8_t* SERD_NULLABLE
-serd_chunk_sink_finish(SerdChunk* SERD_NONNULL stream);
+serd_buffer_sink_finish(SerdBuffer* SERD_NONNULL stream);
/**
Set a function to be called when errors occur during writing.