bool vector_compact(vector_t vec) { // Reset the alloc size to its element count. assert(vec); return vector_expand(vec, vec -> count); }
bool vector_insert(vector_t vec, const void *object, size_t index) { // Insert an object. void *ptr = NULL; void *ptrnext = NULL; assert(vec); assert(object); assert(index <= vec -> count); if (index == vec -> count) return vector_append(vec, object); if (vec -> count >= vec -> alloc_size / vec -> element_size) if (!vector_expand(vec, vec -> count + 1)) // Out of room. Expand it. return false; ptr = vec -> data + vec -> element_size * index; ptrnext = ptr + vec -> element_size; memmove(ptrnext, ptr, vector_max_pointer(vec) - ptr); memcpy(ptr, object, vec -> element_size); return true; }
bool vector_append(vector_t vec, const void * object) { // Append an object to the last. assert(vec); assert(object); if (vec -> count >= vec -> alloc_size / vec -> element_size) if (!vector_expand(vec, vec -> count + 1)) // Out of room. Expand it. return false; memcpy(vector_max_pointer(vec), object, vec -> element_size); vec -> count++; return true; }
int vector_insert(vector* ar, void* item) { if(ar && item) { if(ar->size>=ar->internal_capacity) { if(!vector_expand(ar)) { return 0; } } ar->data[ar->size]=item; ar->size++; return 1; } return 0; }