54typedef struct BufChainNode BufChainNode;
55typedef struct BufChainNode {
60typedef struct BufChain {
104size_t bufchainRead(_Inout_ BufChain* chain, _Out_writes_bytes_(bytes) uint8* buf,
size_t bytes);
118 buf->len =
bufchainRead(chain, buf->data, min(buf->sz, maxbytes));
133size_t bufchainPeek(_Inout_ BufChain* chain, _Out_writes_bytes_(bytes) uint8* buf,
size_t off,
151 buf->len =
bufchainPeek(chain, buf->data, off, min(buf->sz, maxbytes));
185 _Inout_opt_
void* ctx);
196void bufchainWrite(_Inout_ BufChain* chain, _In_reads_bytes_(bytes)
const uint8* buf,
size_t bytes);
Simple buffer management.
Comparison and clamping macros.
void bufchainInit(BufChain *chain, size_t segsz)
void bufchainWrite(BufChain *chain, const uint8 *buf, size_t bytes)
size_t bufchainReadZC(BufChain *chain, size_t maxbytes, bufchainZCCB cb, void *ctx)
void bufchainWriteBuf(BufChain *chain, Buffer buf)
size_t bufchainPeekBuf(BufChain *chain, Buffer buf, size_t off, size_t maxbytes)
void bufchainWriteZC(BufChain *chain, Buffer *buf)
size_t bufchainSkip(BufChain *chain, size_t bytes)
size_t bufchainReadBuf(BufChain *chain, Buffer buf, size_t maxbytes)
void bufchainDestroy(BufChain *chain)
size_t bufchainPeek(BufChain *chain, uint8 *buf, size_t off, size_t bytes)
size_t bufchainRead(BufChain *chain, uint8 *buf, size_t bytes)
bool(* bufchainZCCB)(Buffer buf, size_t off, void *ctx)