示例#1
0
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;
}
示例#2
0
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);
	}
}
示例#3
0
KNHAPI2(void) knh_Array_add_(CTX ctx, kArray *a, kObject *value)
{
	size_t capacity = a->dim->capacity;
	if(a->size == capacity) {
		knh_Array_grow(ctx, a, k_grow(capacity), a->size + 1);
	}
	KNH_INITv(a->list[a->size], value);
	a->size++;
}
示例#4
0
static void Farray_addN(CTX ctx, kArray *a, ksfp_t *v)
{
	size_t capacity = a->dim->capacity;
	if(!(a->size + 1 < capacity)) {
		knh_Array_grow(ctx, a, k_grow(a->size), a->size + 1);
	}
	a->nlist[a->size] = v[0].ndata;
	a->size += 1;
}
示例#5
0
static void Farray_addO(CTX ctx, kArray *a, ksfp_t *v)
{
	size_t capacity = a->dim->capacity;
	if(!(a->size + 1 < capacity)) {
		knh_Array_grow(ctx, a, k_grow(a->size), a->size + 1);
	}
	KNH_INITv_withWB(a, a->list[a->size], v[0].o);
	a->size += 1;
}
示例#6
0
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;
}
示例#7
0
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;
}
示例#8
0
static void Farray_multiaddN(CTX ctx, kArray *a, ksfp_t *v)
{
	size_t i, n = knh_stack_argc(ctx, v);
	size_t capacity = a->dim->capacity;
	if(!(a->size + n < capacity)) {
		knh_Array_grow(ctx, a, k_grow(a->size), a->size + n);
	}
	for(i = 0; i < n; i++) {
		a->nlist[a->size+i] = v[i].ndata;
	}
	a->size += n;
}
示例#9
0
static void Farray_multiaddO(CTX ctx, kArray *a, ksfp_t *v)
{
	size_t i, n = knh_stack_argc(ctx, v);
	size_t capacity = a->dim->capacity;
	if(!(a->size + n < capacity)) {
		knh_Array_grow(ctx, a, k_grow(a->size), a->size + n);
	}
	for(i = 0; i < n; i++) {
		KNH_INITv_withWB(a, a->list[a->size+i], v[i].o);
	}
	a->size += n;
}