aboutsummaryrefslogtreecommitdiffstats
path: root/serd
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-06-15 09:26:17 -0400
committerDavid Robillard <d@drobilla.net>2020-10-27 13:13:58 +0100
commitce6fbad56fb6970fe507186d6560ad4fac981d74 (patch)
treebb08acadb802660b221fd29b322e1cb083dd17e6 /serd
parentc5fb8c6326dfe8c46fe2247e611ae1bf94275da0 (diff)
downloadserd-ce6fbad56fb6970fe507186d6560ad4fac981d74.tar.gz
serd-ce6fbad56fb6970fe507186d6560ad4fac981d74.tar.bz2
serd-ce6fbad56fb6970fe507186d6560ad4fac981d74.zip
Bring read/write interface closer to C standard
Diffstat (limited to 'serd')
-rw-r--r--serd/serd.h44
1 files changed, 23 insertions, 21 deletions
diff --git a/serd/serd.h b/serd/serd.h
index a488dad7..fa43f7c6 100644
--- a/serd/serd.h
+++ b/serd/serd.h
@@ -358,17 +358,29 @@ typedef int (*SerdStreamErrorFunc)(void* stream);
@param size Size of a single element of data in bytes (always 1).
@param nmemb Number of elements to read.
@param stream Stream to read from (FILE* for fread).
- @return Number of elements (bytes) read.
+ @return Number of elements (bytes) read, which is short on error.
*/
-typedef size_t (*SerdSource)(void* buf,
- size_t size,
- size_t nmemb,
- void* stream);
+typedef size_t (*SerdReadFunc)(void* buf,
+ size_t size,
+ size_t nmemb,
+ void* stream);
/**
Sink function for raw string output.
+
+ Identical semantics to `fwrite`, but may set errno for more informative
+ error reporting than supported by SerdStreamErrorFunc.
+
+ @param buf Input buffer.
+ @param size Size of a single element of data in bytes (always 1).
+ @param nmemb Number of elements to read.
+ @param stream Stream to write to (FILE* for fread).
+ @return Number of elements (bytes) written, which is short on error.
*/
-typedef size_t (*SerdSink)(const void* buf, size_t len, void* stream);
+typedef size_t (*SerdWriteFunc)(const void* buf,
+ size_t size,
+ size_t nmemb,
+ void* stream);
/**
@}
@@ -420,7 +432,7 @@ serd_uri_resolve(const SerdURI* r, const SerdURI* base, SerdURI* t);
*/
SERD_API
size_t
-serd_uri_serialise(const SerdURI* uri, SerdSink sink, void* stream);
+serd_uri_serialise(const SerdURI* uri, SerdWriteFunc sink, void* stream);
/**
Serialise `uri` relative to `base` with a series of calls to `sink`.
@@ -434,7 +446,7 @@ size_t
serd_uri_serialise_relative(const SerdURI* uri,
const SerdURI* base,
const SerdURI* root,
- SerdSink sink,
+ SerdWriteFunc sink,
void* stream);
/**
@@ -878,7 +890,7 @@ serd_reader_read_file(SerdReader* reader,
SERD_API
SerdStatus
serd_reader_start_stream(SerdReader* reader,
- SerdSource read_func,
+ SerdReadFunc read_func,
SerdStreamErrorFunc error_func,
void* stream,
const char* name,
@@ -950,7 +962,7 @@ serd_writer_new(SerdSyntax syntax,
SerdStyle style,
SerdEnv* env,
const SerdURI* base_uri,
- SerdSink ssink,
+ SerdWriteFunc ssink,
void* stream);
/**
@@ -968,16 +980,6 @@ SerdEnv*
serd_writer_env(SerdWriter* writer);
/**
- A convenience sink function for writing to a FILE*.
-
- This function can be used as a SerdSink when writing to a FILE*. The
- `stream` parameter must be a FILE* opened for writing.
-*/
-SERD_API
-size_t
-serd_file_sink(const void* buf, size_t len, void* stream);
-
-/**
A convenience sink function for writing to a string.
This function can be used as a SerdSink to write to a SerdBuffer which is
@@ -987,7 +989,7 @@ serd_file_sink(const void* buf, size_t len, void* stream);
*/
SERD_API
size_t
-serd_buffer_sink(const void* buf, size_t len, void* stream);
+serd_buffer_sink(const void* buf, size_t size, size_t nmemb, void* stream);
/**
Finish a serialisation to a buffer with serd_buffer_sink().