14#include <interface99.h>
17#include <compy/priv/compiler_attrs.h>
22#define Compy_Writer_IFACE \
31 vfunc99(ssize_t, write, VSelf99, CharSlice99 data) \
36 vfunc99(void, lock, VSelf99) \
41 vfunc99(void, unlock, VSelf99) \
46 vfunc99(size_t, filled, VSelf99) \
55 vfunc99(int, writef, VSelf99, const char *restrict fmt, ...) \
60 vfunc99(int, vwritef, VSelf99, const char *restrict fmt, va_list ap)
74#define COMPY_WRITE_SLICES(w, ...) \
76 w, SLICE99_ARRAY_LEN((const CharSlice99[])__VA_ARGS__), \
77 (const CharSlice99[])__VA_ARGS__)
91 Compy_Writer w,
size_t len,
92 const CharSlice99 data[restrict
static len]) COMPY_PRIV_MUST_USE;
interface99(Compy_Writer)
Defines the Compy_Writer interface.
Compy_Writer compy_file_writer(FILE *stream) COMPY_PRIV_MUST_USE
A writer that invokes fwrite on a provided file pointer.
Definition file.c:62
Compy_Writer compy_string_writer(char *buffer) COMPY_PRIV_MUST_USE
A writer that invokes strncat on a provided buffer.
Definition string.c:58
ssize_t compy_write_slices(Compy_Writer w, size_t len, const CharSlice99 data[restrict static len]) COMPY_PRIV_MUST_USE
Sequentially writes all items in data to w.
Definition writer.c:7
Compy_Writer compy_fd_writer(int *fd) COMPY_PRIV_MUST_USE
A writer that invokes write on a provided file descriptor.
Definition fd.c:56