Пример #1
0
bool vector_compact(vector_t vec)
{
    // Reset the alloc size to its element count.
    assert(vec);
    
    return vector_expand(vec, vec -> count);
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
    
}