Dynarr 0.0.1
C dynamic array
Loading...
Searching...
No Matches
dynarr.c File Reference

Contains implementation of the dynarr. More...

#include "dynarr.h"
Include dependency graph for dynarr.c:

Go to the source code of this file.

Data Structures

struct  dynarr_header_t
 

Functions

static dynarr_opts_t get_opts (const dynarr_t *const dynarr)
 
static dynarr_header_tget_dynarr_header (const dynarr_t *const dynarr)
 
static dynarr_status_t grow (dynarr_t **const dynarr, const size_t amount_to_add)
 
static dynarr_status_t shrink (dynarr_t **const dynarr, const size_t amount_to_remove)
 
static void free_space_at (dynarr_t *const dynarr, const size_t index, const size_t amount)
 
static void make_space_at (dynarr_t *const dynarr, const size_t index, size_t amount)
 
static size_t binary_find_insert_place (const dynarr_t *const dynarr, const void *value, const size_t start, const size_t end, const compare_t cmp, void *param)
 
dynarr_t * dynarr_create_ (const dynarr_opts_t *const opts)
 Constructor of the dynamic array.
 
void * dynarr_get_ext_header (const dynarr_t *const dynarr)
 Retrieve a location of extended header.
 
dynarr_t * dynarr_clone (const dynarr_t *const dynarr)
 Duplicate a dynarr.
 
void dynarr_destroy (dynarr_t *const dynarr)
 Deallocates a dynamic array.
 
void dynarr_clear (dynarr_t *const dynarr)
 Clean (reset) contents of the dynarr.
 
size_t dynarr_size (const dynarr_t *const dynarr)
 Access size property of a dynarr.
 
size_t dynarr_initial_capacity (const dynarr_t *const dynarr)
 Access initial capacity property.
 
size_t dynarr_capacity (const dynarr_t *const dynarr)
 Access current capacity of the dynarr.
 
void * dynarr_get (const dynarr_t *const dynarr, const size_t index)
 Returns pointer for the element at index.
 
void dynarr_set (dynarr_t *const dynarr, const size_t index, const void *value)
 Sets element at given index to a value.
 
void dynarr_set_zero (dynarr_t *const dynarr, const size_t index)
 Sets element at given index to a zero value.
 
void * dynarr_first (const dynarr_t *const dynarr)
 Access first element of a dynarr.
 
void * dynarr_last (const dynarr_t *const dynarr)
 Access last element if a dynarr.
 
void * dynarr_binary_find (const dynarr_t *const dynarr, const void *const value, const compare_t cmp, void *const param)
 Binary search for the element with matching value.
 
ssize_t dynarr_binary_find_index (const dynarr_t *const dynarr, const void *const value, const compare_t cmp, void *const param)
 Binary search for the element with matching value.
 
dynarr_status_t dynarr_append (dynarr_t **const dynarr, const void *const value)
 Appends an element to the tail of a dynarr.
 
dynarr_status_t dynarr_prepend (dynarr_t **const dynarr, const void *const value)
 Prepends an element to the head of a dynarr.
 
dynarr_status_t dynarr_pop_back (dynarr_t **const dynarr)
 Removes an element from the tail of a dynarr.
 
dynarr_status_t dynarr_pop_front (dynarr_t **const dynarr)
 Removes an element from the head of a dynarr.
 
dynarr_status_t dynarr_insert (dynarr_t **const dynarr, const size_t index, const void *value)
 Inserts new element into a dynarr.
 
dynarr_status_t dynarr_spread_insert (dynarr_t **const dynarr, const size_t index, const size_t amount, const void *const value)
 Insert single value as an element range.
 
size_t dynarr_binary_find_insert_place (const dynarr_t *const dynarr, const void *const value, const compare_t cmp, void *param)
 Binary search for binary insert support.
 
dynarr_status_t dynarr_binary_insert (dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *param, size_t *const index)
 Binary insert.
 
dynarr_status_t dynarr_binary_insert_uniq (dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *param, size_t *const index)
 Binary unique insert.
 
dynarr_status_t dynarr_binary_reserve (dynarr_t **const dynarr, const void *const value, const compare_t cmp, void *const param, size_t *const index)
 Reserve space for an element in sorted dynarr.
 
dynarr_status_t dynarr_remove (dynarr_t **const dynarr, const size_t index)
 Removes an element from a dynarr.
 
dynarr_status_t dynarr_remove_range (dynarr_t **const dynarr, const size_t index, const size_t amount)
 Removes range of elements from a dynarr.
 
dynarr_status_t dynarr_remove_if (dynarr_t **const dynarr, const predicate_t predicate, const size_t limit, void *const param)
 Removes limit elements that match predicate.
 
dynarr_t * dynarr_binary_merge (const dynarr_t *const first, const dynarr_t *const second, const compare_t cmp, void *const param)
 Non-destructive merge of two sorted dynarrs.
 
int dynarr_foreach (const dynarr_t *const dynarr, const foreach_t func, void *const param)
 
int dynarr_aggregate (const dynarr_t *const dynarr, const aggregate_t func, void *const acc, void *const param)
 
int dynarr_transform (dynarr_t *const dynarr, const transform_t func, void *const param)
 

Detailed Description

Contains implementation of the dynarr.

Author
Evgeni Semenov

Definition in file dynarr.c.

Function Documentation

◆ get_opts()

static dynarr_opts_t get_opts ( const dynarr_t *const dynarr)
static

Sometimes its necessary to reproduce dynarr options.

Definition at line 542 of file dynarr.c.

Here is the call graph for this function:

◆ get_dynarr_header()

static dynarr_header_t * get_dynarr_header ( const dynarr_t *const dynarr)
static

Access a vector structure where dynarr_header_t is located.

Definition at line 557 of file dynarr.c.

Here is the call graph for this function:

◆ binary_find_insert_place()

static size_t binary_find_insert_place ( const dynarr_t *const dynarr,
const void * value,
const size_t start,
const size_t end,
const compare_t cmp,
void * param )
static

Support for binary insertion.

Definition at line 664 of file dynarr.c.

Here is the call graph for this function: