47 static size_t _writes(
void *ip,
const uint8_t *bp,
size_t n) {
50 if (msp->size - msp->eos < n)
51 n = msp->size - msp->eos;
52 memcpy(msp->buffer + msp->eos, bp, n);
57 static size_t _reads(
void *ip, uint8_t *bp,
size_t n) {
60 if (msp->eos - msp->offset < n)
61 n = msp->eos - msp->offset;
62 memcpy(bp, msp->buffer + msp->offset, n);
67 static msg_t _put(
void *ip, uint8_t b) {
70 if (msp->size - msp->eos <= 0)
72 *(msp->buffer + msp->eos) = b;
77 static msg_t _get(
void *ip) {
81 if (msp->eos - msp->offset <= 0)
83 b = *(msp->buffer + msp->offset);
88 static msg_t _unget(
void* ip, uint8_t b)
95 *(msp->buffer + msp->offset) = b;
100 static const struct MemStreamVMT vmt = {(size_t)0, _writes, _reads, _put, _get, _unget};
117 size_t size,
size_t eos) {
120 msp->buffer = buffer;