Home | History | Annotate | Download | only in src

Lines Matching refs:ws

38 #define ensure_writable(sz) if ((ws->offset<0) || (ws->offset + (sz) >= ws->size)) { \
39 ws->offset = -1; \
44 ws->buf[ws->offset++] = (b); \
45 memcpy(ws->buf+ws->offset, (data), (sz)); \
46 ws->offset += sz;
49 ws->buf[ws->offset++] = (b); \
79 static void _write_positive(cn_write_state *ws, cn_cbor_type typ, uint64_t val) {
86 ws->offset = -1;
116 static void _write_double(cn_write_state *ws, double val)
221 if (ws->offset < 0) { return; }
225 cn_write_state *ws = context;
233 CHECK(_write_positive(ws, CN_CBOR_ARRAY, cb->length));
240 CHECK(_write_positive(ws, CN_CBOR_MAP, cb->length/2));
250 CHECK(_write_positive(ws, cb->type, cb->length));
252 memcpy(ws->buf+ws->offset, cb->v.str, cb->length);
253 ws->offset += cb->length;
266 CHECK(_write_positive(ws, cb->type, cb->v.uint));
271 CHECK(_write_positive(ws, CN_CBOR_INT, ~(cb->v.sint)));
276 CHECK(_write_double(ws, cb->v.dbl));
281 ws->offset = -1;
288 cn_write_state *ws = context;
299 cn_write_state ws = { buf, buf_offset, buf_size };
300 _visit(cb, _encoder_visitor, _encoder_breaker, &ws);
301 if (ws.offset < 0) { return -1; }
302 return ws.offset - buf_offset;