예제 #1
0
파일: jzon.c 프로젝트: KarlZylinski/Bowtie
void arr_add(Array* arr, void* e, JzonAllocator* allocator)
{
	if (arr->size == arr->capacity)
		arr_grow(arr, allocator);

	arr->arr[arr->size] = e;
	++arr->size;
}
예제 #2
0
파일: jzon.c 프로젝트: KarlZylinski/Bowtie
void arr_insert(Array* arr, void* e, unsigned index, JzonAllocator* allocator)
{
	if (arr->size == arr->capacity)
		arr_grow(arr, allocator);

	memmove(arr->arr + index + 1, arr->arr + index, (arr->size - index) * sizeof(void**));
	arr->arr[index] = e;
	++arr->size;
}
예제 #3
0
/* arr_insert • inserting nb elements before the nth one */
int
arr_insert(struct array *arr, int nb, int n) {
	char *src, *dst;
	size_t len;
	if (!arr || nb <= 0 || n < 0
	|| !arr_grow(arr, arr->size + nb))
		return 0;
	if (n < arr->size) {
		src = arr->base;
		src += n * arr->unit;
		dst = src + nb * arr->unit;
		len = (arr->size - n) * arr->unit;
		memmove(dst, src, len); }
	arr->size += nb;
	return 1; }
예제 #4
0
/* arr_newitem • returns the index of a new element appended to the array */
int
arr_newitem(struct array *arr) {
	if (!arr_grow(arr, arr->size + 1)) return -1;
	arr->size += 1;
	return arr->size - 1; }