25typedef enum vl_stream_origin_
27 VL_STREAM_SEEK_SET = 0,
28 VL_STREAM_SEEK_CUR = 1,
29 VL_STREAM_SEEK_END = 2
76typedef struct vl_stream_
struct vl_mutex_ * vl_mutex
Definition vl_mutex.h:23
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:191
vl_stream_func_read read
Reads bytes from the stream into a buffer. Returns the number of bytes actually read.
Definition vl_stream.h:82
vl_stream_func_close close
Closes the stream backend and releases associated resources.
Definition vl_stream.h:108
VL_API void vlStreamSetClose(vl_stream *stream, vl_stream_func_close func)
Definition vl_stream.c:94
VL_API vl_stream * vlStreamNew(void *userData)
Creates a new stream object on the heap.
Definition vl_stream.c:4
vl_memsize_t(* vl_stream_func_read)(void *buffer, vl_memsize_t size, void *user)
Definition vl_stream.h:33
vl_stream_func_flush flush
Flushes any buffered data to the underlying medium.
Definition vl_stream.h:103
VL_API vl_int64_t vlStreamTell(vl_stream *stream)
Returns the current position in the stream.
Definition vl_stream.c:157
VL_API vl_memsize_t vlStreamWrite(vl_stream *stream, const void *inBuffer, vl_memsize_t inLength)
Writes data to the stream.
Definition vl_stream.c:124
vl_stream_func_tell tell
Returns the current stream position, or -1 if unsupported.
Definition vl_stream.h:98
VL_API vl_bool_t vlStreamSeek(vl_stream *stream, vl_int64_t offset, vl_stream_origin origin)
Moves the stream position.
Definition vl_stream.c:141
VL_API void vlStreamSetWrite(vl_stream *stream, vl_stream_func_write func)
Definition vl_stream.c:74
vl_atomic_ularge_t totalWritten
Total number of bytes successfully written to the stream.
Definition vl_stream.h:138
void(* vl_stream_func_close)(void *user)
Definition vl_stream.h:38
VL_API void vlStreamSetRead(vl_stream *stream, vl_stream_func_read func)
Definition vl_stream.c:69
VL_API void vlStreamDelete(vl_stream *stream)
Decrements reference count and potentially deletes the stream.
Definition vl_stream.c:37
vl_stream_func_seek seek
Moves the current stream position.
Definition vl_stream.h:93
vl_stream_func_write write
Writes bytes from a buffer to the stream. Returns the number of bytes actually written.
Definition vl_stream.h:88
vl_memsize_t(* vl_stream_func_write)(const void *buffer, vl_memsize_t size, void *user)
Definition vl_stream.h:34
vl_bool_t(* vl_stream_func_seek)(vl_int64_t offset, vl_stream_origin origin, void *user)
Definition vl_stream.h:35
vl_atomic_ularge_t totalRead
Total number of bytes successfully read from the stream.
Definition vl_stream.h:133
VL_API void vlStreamSetTell(vl_stream *stream, vl_stream_func_tell func)
Definition vl_stream.c:84
void(* vl_stream_func_flush)(void *user)
Definition vl_stream.h:37
VL_API void vlStreamFlush(vl_stream *stream)
Flushes any buffered data to the underlying device.
Definition vl_stream.c:173
vl_int64_t(* vl_stream_func_tell)(void *user)
Definition vl_stream.h:36
VL_API void vlStreamSetFlush(vl_stream *stream, vl_stream_func_flush func)
Definition vl_stream.c:89
vl_atomic_ularge_t refCount
Atomic reference count.
Definition vl_stream.h:128
VL_API void vlStreamRetain(vl_stream *stream)
Increments the reference count of the stream.
Definition vl_stream.c:31
void * userData
Backend-specific context pointer.
Definition vl_stream.h:116
VL_API void vlStreamSetSeek(vl_stream *stream, vl_stream_func_seek func)
Definition vl_stream.c:79
vl_mutex lock
Mutex protecting all I/O operations on this stream.
Definition vl_stream.h:121
VL_API vl_memsize_t vlStreamRead(vl_stream *stream, void *outBuffer, vl_memsize_t outLength)
Reads data from the stream.
Definition vl_stream.c:104
Generic, thread-safe byte stream abstraction.
Definition vl_stream.h:77