soldout_array(3)

generic linear array.

Section 3 libsoldout-dev bookworm source

Description

SOLDOUT_ARRAY(3) Library Functions Manual SOLDOUT_ARRAY(3)

NAME

soldout_array, arr_adjust, arr_free, arr_grow, arr_init, arr_insert, arr_item, arr_newitem, arr_remove, arr_sorted_find, arr_sorted_find_i, parr_adjust, parr_free, parr_grow, parr_init, parr_insert, parr_pop, parr_push, parr_remove, parr_sorted_find, parr_sorted_find_i, parr_top — array handling functions for soldout

SYNOPSIS

#include <array.h>

int

(*array_cmp_fn)(void *key, void *array_entry);

int

arr_adjust(struct array *arr);

void

arr_free(struct array *arr);

int

arr_grow(struct array *arr, int need);

void

arr_init(struct array *arr, size_t unit);

int

arr_insert(struct array *arr, int nb, int n);

void *

arr_item(struct array *arr, int no);

int

arr_newitem(struct array *arr);

void

arr_remove(struct array *arr, int idx);

void *

arr_sorted_find(struct array *arr, void *key, array_cmp_fn cmp);

int

arr_sorted_find_i(struct array *arr, void *key, array_cmp_fn cmp);

int

parr_adjust(struct parray *arr);

void

parr_free(struct parray *arr);

int

parr_grow(struct parray *arr, int need);

void

parr_init(struct parray *arr);

int

parr_insert(struct parray *parr, int nb, int n);

void *

parr_pop(struct parray *arr);

int

parr_push(struct parray *arr, void *i);

void *

parr_remove(struct parray *arr, int idx);

void *

parr_sorted_find(struct parray *arr, void *key, array_cmp_fn cmp);

int

parr_sorted_find_i(struct parray *arr, void *key, array_cmp_fn cmp);

void *

parr_top(struct parray *arr);

DESCRIPTION

Types

struct array

generic linear array. Consists of the following fields:

void * base

actual array data.

int size

size of the array.

int asize

allocated size.

size_t unit

reallocation unit size.

struct parray

array of pointers. Consists of the following fields:

void ** item

actual parray data.

int size

size of the parray.

int asize

allocated size.

array_cmp_fn

comparison function for sorted arrays.

Functions

arr_adjust()

shrink the allocated memory to fit exactly the needs.

arr_free()

free the structure contents (but NOT the struct itself).

arr_grow()

increase the array size to fit the given number of elements.

arr_init()

initialize the contents of the struct.

arr_insert()

insert nb elements before the n one.

arr_item()

return a pointer to the n element.

arr_newitem()

return the index of a new element appended to the array arr.

arr_remove()

remove the n-th elements of the array.

arr_sorted_find()

O(log n) search in a sorted array, returning entry.

arr_sorted_find_i()

O(log n) search in a sorted array, returning index of the smallest element larger than the key.

parr_adjust()

shrink the allocated memory to fit exactly the needs.

parr_free()

free the structure contents (but NOT the struct itself).

parr_grow()

increase the array size to fit the given number of elements.

parr_init()

initialize the contents of the struct.

parr_insert()

insert nb elements before the n one.

parr_pop()

pop the last item of the array and return it.

parr_push()

push a pointer at the end of the array (= append).

parr_remove()

remove the idx element of the array and return it.

parr_sorted_find()

O(log n) search in a sorted array, returning entry.

parr_sorted_find_i()

O(log n) search in a sorted array, returning index of the smallest element larger than the key.

parr_top()

return the top the stack (i.e. the last element of the array).

RETURN VALUES

The arr_adjust(), arr_grow(), arr_insert(), parr_adjust(), parr_grow(), parr_insert() and parr_push() functions return on success 1; on error - 0.

The arr_free(), arr_init(), arr_remove(), parr_free() and parr_init() functions do not return a value.

The arr_item(), arr_sorted_find(), parr_pop(), parr_remove(), parr_sorted_find() and parr_top() functions return a pointer to the element on success; on error - NULL.

The arr_newitem() function returns the index on success; on error -1.

The arr_sorted_find_i() and parr_sorted_find_i() functions return an index.

SEE ALSO

soldout(3)

AUTHORS

The soldout library was written by Natasha "

Kerensikova " Porte <natacha@instinctive.eu>. Manual page was originally written by Massimo Manghi <mxmanghi@apache.org>, and rewritten to mdoc format by Svyatoslav Mishyn <juef@openmailbox.org>. GNU April 13, 2016 SOLDOUT_ARRAY(3)