void knh_Bytes_putc(Ctx *ctx, knh_Bytes_t *ba, int ch) { if(BA_size(ba) == ba->capacity) { knh_Bytes_expands(ctx, ba, ba->capacity * 2); } ba->bu.ubuf[BA_size(ba)] = ch; BA_size(ba) += 1; }
void knh_Bytes_ensureSize(Ctx *ctx, knh_Bytes_t *ba, size_t len) { DBG_ASSERT(!knh_Bytes_isStatic(ba)); if(ba->capacity < len) { knh_Bytes_expands(ctx, ba, len); } BA_size(ba) = len; }
knh_Bytes_t* new_Bytes(Ctx *ctx, size_t capacity) { knh_Bytes_t *ba = new_(Bytes); if(capacity > 0) { knh_Bytes_expands(ctx, ba, capacity); } return ba; }
void knh_Bytes_putc(CTX ctx, knh_Bytes_t *ba, int ch) { size_t capacity = ba->dim->capacity; if(BA_size(ba) == capacity) { knh_Bytes_expands(ctx, ba, k_grow(capacity)); } ba->bu.ubuf[BA_size(ba)] = ch; BA_size(ba) += 1; }
void knh_Bytes_ensureSize(CTX ctx, knh_Bytes_t *ba, size_t len) { size_t blen = ba->bu.len + len; if(ba->dim->capacity < blen) { size_t newsize = k_grow(ba->dim->capacity); if(newsize < blen) newsize = k_goodsize(blen); knh_Bytes_expands(ctx, ba, newsize); } }
knh_Bytes_t* new_Bytes(CTX ctx, const char *name, size_t capacity) { knh_Bytes_t *ba = new_(Bytes); ba->DBG_name = name; if(capacity > 0) { knh_Bytes_expands(ctx, ba, capacity); } return ba; }
const char *knh_Bytes_ensureZero(CTX ctx, knh_Bytes_t *ba) { size_t size = BA_size(ba); size_t capacity = ba->dim->capacity; if(size == capacity) { knh_Bytes_expands(ctx, ba, k_grow(capacity)); } ba->bu.ubuf[BA_size(ba)] = 0; return ba->bu.text; }
void knh_Bytes_write(Ctx *ctx, knh_Bytes_t *ba, knh_bytes_t t) { if(t.len == 0) return ; if(BA_size(ba) + t.len >= ba->capacity) { size_t newsize = ba->capacity * 2; if(newsize < BA_size(ba) + t.len) newsize = knh_good_size(BA_size(ba) + t.len); knh_Bytes_expands(ctx, ba, newsize); } knh_memcpy(ba->bu.ubuf + BA_size(ba), t.ustr, t.len); BA_size(ba) += t.len; }
knh_path_t* knh_path_open_(CTX ctx, const char *scheme, knh_bytes_t t, knh_path_t *ph) { knh_Bytes_t *ba = ctx->bufa; ph->pstart = ba->bu.len; if(!(ba->bu.len + K_PATHMAX < ba->dim->capacity)) { knh_Bytes_expands(ctx, ba, K_PAGESIZE); // K_PATHMAX < KPAGESIZE; } ba->bu.len += K_PATHMAX; knh_path_reset(ctx, ph, scheme, t); return ph; }
void knh_Bytes_write(CTX ctx, knh_Bytes_t *ba, knh_bytes_t t) { size_t capacity = ba->dim->capacity; if(t.len == 0) return ; if(BA_size(ba) + t.len >= capacity) { size_t newsize = k_grow(capacity); if(newsize < BA_size(ba) + t.len) newsize = k_goodsize(BA_size(ba) + t.len); knh_Bytes_expands(ctx, ba, newsize); } knh_memcpy(ba->bu.ubuf + BA_size(ba), t.utext, t.len); BA_size(ba) += t.len; }
const char *knh_Bytes_ensureZero(Ctx *ctx, knh_Bytes_t *ba) { DBG_ASSERT(!knh_Bytes_isStatic(ba)); size_t size = BA_size(ba); if(size == ba->capacity) { knh_Bytes_expands(ctx, ba, ba->capacity * 2); } ba->bu.ubuf[BA_size(ba)] = 0; // if(ba->bu.text[size] != 0) { // DBG_P("@@@@ pos=%d, ch=%d, %c", size, ba->bu.ubuf[size], ba->bu.ubuf[size]); // knh_bzero(ba->bu.ubuf + size, ba->capacity - size); // } return ba->bu.text; }