piojo-0.9
 All Classes Functions Variables Typedefs Enumerations Enumerator Groups
Piojo Array

Functions

piojo_array_t * piojo_array_alloc (size_t esize)
 
piojo_array_t * piojo_array_alloc_cb (size_t esize, piojo_alloc_if allocator)
 
piojo_array_t * piojo_array_copy (const piojo_array_t *array)
 
void piojo_array_free (const piojo_array_t *array)
 
void piojo_array_clear (piojo_array_t *array)
 
void piojo_array_resize (size_t ecount, piojo_array_t *array)
 
size_t piojo_array_size (const piojo_array_t *array)
 
void piojo_array_insert (size_t idx, const void *data, piojo_array_t *array)
 
void piojo_array_set (size_t idx, const void *data, piojo_array_t *array)
 
void piojo_array_push (const void *data, piojo_array_t *array)
 
size_t * piojo_array_index (const void *data, piojo_cmp_cb cmp, const piojo_array_t *array, size_t *idx)
 
void piojo_array_sorted_insert (const void *data, piojo_cmp_cb cmp, piojo_array_t *array)
 
size_t * piojo_array_sorted_index (const void *data, piojo_cmp_cb cmp, const piojo_array_t *array, size_t *idx)
 
void piojo_array_delete (size_t idx, piojo_array_t *array)
 
void piojo_array_pop (piojo_array_t *array)
 
void * piojo_array_at (size_t idx, const piojo_array_t *array)
 
void * piojo_array_first (const piojo_array_t *array)
 
void * piojo_array_last (const piojo_array_t *array)
 

Variables

const size_t piojo_array_sizeof
 

Detailed Description

Piojo Array implementation.

Function Documentation

piojo_array_t* piojo_array_alloc ( size_t  esize)

Allocates a new array. Uses default allocator.

Parameters
[in]esizeEntry size in bytes.
Returns
New array.
piojo_array_t* piojo_array_alloc_cb ( size_t  esize,
piojo_alloc_if  allocator 
)

Allocates a new array.

Parameters
[in]esizeEntry size in bytes.
[in]allocatorAllocator to be used.
Returns
New array.
void* piojo_array_at ( size_t  idx,
const piojo_array_t *  array 
)

Reads an entry.

Parameters
[in]idxIndex of entry being read (from 0 to array_size - 1).
[in]arrayNon-empty array.
Returns
Entry value.
void piojo_array_clear ( piojo_array_t *  array)

Deletes all entries in array.

Parameters
[out]arrayArray being cleared.
piojo_array_t* piojo_array_copy ( const piojo_array_t *  array)

Copies array and all its entries.

Parameters
[in]arrayArray being copied.
Returns
New array.
void piojo_array_delete ( size_t  idx,
piojo_array_t *  array 
)

Deletes an entry.

Parameters
[in]idxIndex of entry being deleted (from 0 to array_size - 1).
[out]arrayNon-empty array.
void* piojo_array_first ( const piojo_array_t *  array)

Reads first entry.

Parameters
[in]arrayNon-empty array.
Returns
Entry value.
void piojo_array_free ( const piojo_array_t *  array)

Frees array and all its entries.

Parameters
[in]arrayArray being freed.
size_t* piojo_array_index ( const void *  data,
piojo_cmp_cb  cmp,
const piojo_array_t *  array,
size_t *  idx 
)

Searches index of an entry (linear search).

Parameters
[in]dataEntry value.
[in]cmpEntry comparison function.
[in]arrayArray.
[out]idxIndex of data inside array.
Returns
idx if data is present, NULL otherwise.
void piojo_array_insert ( size_t  idx,
const void *  data,
piojo_array_t *  array 
)

Inserts a new entry.

Parameters
[in]idxIndex of entry being inserted (from 0 to array_size)
[in]dataEntry value.
[out]arrayArray being modified.
void* piojo_array_last ( const piojo_array_t *  array)

Reads last entry.

Parameters
[in]arrayNon-empty array.
Returns
Entry value.
void piojo_array_pop ( piojo_array_t *  array)

Deletes the last entry.

Parameters
[out]arrayNon-empty array.
void piojo_array_push ( const void *  data,
piojo_array_t *  array 
)

Inserts a new entry at the end of array.

Parameters
[in]dataEntry value.
[out]arrayArray being modified.
void piojo_array_resize ( size_t  ecount,
piojo_array_t *  array 
)

Expands or shrinks allocated memory for ecount entries.

Parameters
[in]ecountMust be equal or greater than the current size.
[out]arrayArray being modified.
void piojo_array_set ( size_t  idx,
const void *  data,
piojo_array_t *  array 
)

Replaces an entry.

Parameters
[in]idxIndex of entry being replaced (from 0 to array_size - 1)
[in]dataEntry value.
[out]arrayArray being modified.
size_t piojo_array_size ( const piojo_array_t *  array)

Returns number of entries.

Parameters
[in]array
Returns
Number of entries in array.
size_t* piojo_array_sorted_index ( const void *  data,
piojo_cmp_cb  cmp,
const piojo_array_t *  array,
size_t *  idx 
)

Searches index of an entry (binary search).

Parameters
[in]dataEntry value.
[in]cmpEntry comparison function.
[in]arrayArray.
[out]idxIndex of data inside array.
Returns
idx if data is present, NULL otherwise.
void piojo_array_sorted_insert ( const void *  data,
piojo_cmp_cb  cmp,
piojo_array_t *  array 
)

Inserts a new entry in order given by cmp.

Parameters
[in]dataEntry value.
[in]cmpEntry comparison function.
[out]arrayArray being modified.

Variable Documentation

const size_t piojo_array_sizeof

Size of array in bytes