wget_vector*wget_vector_create(intmax,wget_vector_compare_fn*cmp)Parametersmax Initial number of pre-allocated entries.
cmp Comparison function for sorting/finding/sorted insertion or NULL.
Returns
New vector instance
Create a new vector instance, to be free'd after use with wget_vector_free().
voidwget_vector_set_resize_factor(wget_vector*v,floatfactor)Parametersv Vector
factor Vector growth factor
Set the factor for resizing the vector when it is full.
The new size is 'factor * oldsize'. If the new size is less or equal the old size, the involved insertion
function will return an error and the internal state of the vector will not change.
Default is 2.
intwget_vector_insert(wget_vector*v,constvoid*elem,intpos)Parametersv Vector where elem is inserted into
elem Element to insert into v
pos Position to insert elem at
Returns
Index of inserted element (>= 0) or WGET_E_* on error (< 0)
Insert elem of at index pos.
elem is not cloned, the vector takes 'ownership' of the element.
An error is returned if v is NULL or pos is out of range (< 0 or > # of entries).
intwget_vector_insert_sorted(wget_vector*v,constvoid*elem)Parametersv Vector where elem is inserted into
elem Element to insert into v
Returns
Index of inserted element (>= 0) or WGET_E_* on error (< 0)
Insert elem of at a position that keeps the sort order of the elements. If the vector has no comparison
function, elem will be inserted as the last element. If the elements in the vector are not sorted, they
will be sorted after returning from this function.
elem is not cloned, the vector takes 'ownership' of the element.
An error is returned if v is NULL.
intwget_vector_add_memdup(wget_vector*v,constvoid*elem,size_tsize)Parametersv Vector where elem is appended to
elem Element to append to a v
size Size of elem
Returns
Index of inserted element (>= 0) or WGET_E_* on error (< 0)
Append elem of given size to vector v.
elem is cloned / copied (shallow).
An error is returned if v is NULL.
intwget_vector_add(wget_vector*v,constvoid*elem)Parametersv Vector where elem is appended to
elem Element to append to a v
Returns
Index of inserted element (>= 0) or WGET_E_* on error (< 0)
Append elem to vector v.
elem is not cloned, the vector takes 'ownership' of the element.
An error is returned if v is NULL.
intwget_vector_add_vprintf(wget_vector*v,constchar*fmt,va_listargs)Parametersv Vector where s is appended to
fmt Printf-like format string
args Arguments for the fmt
Returns
Index of appended element (>= 0) or WGET_E_* on error (< 0)
Construct string in a printf-like manner and append it as an element to vector v.
An error is returned if v or fmt is NULL.
intwget_vector_add_printf(wget_vector*v,constchar*fmt,...)Parametersv Vector where s is appended to
fmt Printf-like format string
... Arguments for the fmt
Returns
Index of appended element (>= 0) or WGET_E_* on error (< 0)
Construct string in a printf-like manner and append it as an element to vector v.
An error is returned if v or fmt is NULL.
intwget_vector_replace(wget_vector*v,constvoid*elem,intpos)Parametersv Vector where elem is inserted
elem Element to insert into v
pos Position to insert elem at
Returns
Index of inserted element (same as pos) (>= 0) or WGET_E_* on error (< 0)
Replace the element at position pos with elem. If the vector has an element destructor function, this is
called. The old element is free'd.
elem is not cloned, the vector takes 'ownership' of the element.
An error is returned if v is NULL or pos is out of range (< 0 or > # of entries).
intwget_vector_remove(wget_vector*v,intpos)Parametersv Vector to remove an element from
pos Position of element to remove
Returns
Index of appended element (>= 0) or WGET_E_* on error (< 0)
Remove the element at position pos. If the vector has an element destructor function, this is called. The
element is free'd.
An error is returned if v is NULL or pos is out of range (< 0 or > # of entries).
intwget_vector_remove_nofree(wget_vector*v,intpos)Parametersv Vector to remove an element from
pos Position of element to remove
Returns
Index of removed element (same as pos) (>= 0) or WGET_E_* on error (< 0)
Remove the element at position pos. No element destructor function is called, the element is not free'd.
An error is returned if v is NULL or pos is out of range (< 0 or > # of entries).
intwget_vector_move(wget_vector*v,intold_pos,intnew_pos)Parametersv Vector to act on
old_pos Position to move element from
new_pos Position to move element to
Returns
Index of new position (same as new_pos) (>= 0) or WGET_E_* on error (< 0)
Move the element at position old_pos to new_pos.
Other elements may change the position.
An error is returned if v is NULL or either old_pos or new_pos is out of range (< 0 or > # of entries).
intwget_vector_swap(wget_vector*v,intpos1,intpos2)Parametersv Vector to act on
pos1 Position of element one
pos2 Position of element two
Returns
Index of second position (same as pos2) (>= 0) or WGET_E_* on error (< 0)
Swap the two elements at position pos1 and pos2.
An error is returned if v is NULL or either pos1 or pos2 is out of range (< 0 or > # of entries).
voidwget_vector_free(wget_vector**v)Parametersv Vector to be free'd
Free the vector v and it's contents.
For each element the destructor function is called and the element free'd thereafter. Then the vector
itself is free'd and set to NULL.
voidwget_vector_clear(wget_vector*v)Parametersv Vector to be cleared
Free all elements of the vector v but not the vector itself.
For each element the destructor function is called and the element free'd thereafter. The vector is then
empty and can be reused.
voidwget_vector_clear_nofree(wget_vector*v)Parametersv Vector to be cleared
Remove all elements of the vector v without free'ing them. The caller is responsible to care for the
elements.
The vector is then empty and can be reused.
intwget_vector_size(constwget_vector*v)Parametersv Vector
Returns
The number of elements in the vector v
Retrieve the number of elements of the vector v. If v is NULL, 0 is returned.
void*wget_vector_get(constwget_vector*v,intpos)Parametersv Vector
pos Position of element to retrieve
Returns
The element at position pos or NULL on error
Retrieve the element at position pos.
NULL is returned if v is NULL or pos is out of range (< 0 or > # of entries).
intwget_vector_browse(constwget_vector*v,wget_vector_browse_fn*browse,void*ctx)Parametersv Vector
browse Function to be called for each element of v
ctx Context variable use as param to browse
Returns
Return value of the last call to browse
Call function browse for each element of vector v or until browse returns a value not equal to zero.
browse is called with ctx and the pointer to the current element.
The return value of the last call to browse is returned or 0 if v is NULL.
voidwget_vector_setcmpfunc(wget_vector*v,wget_vector_compare_fn*cmp)Parametersv Vector
cmp Function to compare elements
Set the compare function used by wget_vector_sort().
voidwget_vector_set_destructor(wget_vector*v,wget_vector_destructor*destructor)Parametersv Vector
destructor Function to be called for element destruction
Set the destructor function that is called for each element to be removed. It should not free the element
(pointer) itself.
voidwget_vector_sort(wget_vector*v)Parametersv Vector
Sort the elements in vector v using the compare function. Do nothing if v is NULL or the compare function
is not set.
intwget_vector_find(constwget_vector*v,constvoid*elem)Parametersv Vector
elem Element to search for
Returns
Index of the found element, WGET_E_UNKNOWN if not found or WGET_E_INVALID if v was NULL or there was
no comparison function set
Searches for the given element using the compare function of the vector.
boolwget_vector_contains(constwget_vector*v,constvoid*elem)Parametersv Vector
elem Element to check for
Returns
True if element exists, else false
Checks whether the element elem exists or not.
intwget_vector_findext(constwget_vector*v,intstart,intdirection,wget_vector_find_fn*find)Parametersv Vector
start Index to start search from
direction Direction of search
find Function to be called for each element
Returns
Index of the found element, WGET_E_UNKNOWN if not found or WGET_E_INVALID if v was NULL or there was
no comparison function set
Call find for each element starting at start. If find returns 0 the current index is returned.