- Dynarr creation process
- Author
- Evgeni Semenov
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
void default_create(void);
void explicit_opts_create(void);
void extended_header(void);
void cloning(void);
int main(void)
{
default_create();
explicit_opts_create();
extended_header();
cloning();
return 0;
}
void default_create(void)
{
if (!dynarr)
{
perror("dynarr_create");
abort();
}
}
void explicit_opts_create(void)
{
(
.element_size = sizeof(float),
.initial_cap = 100,
.grow_factor = 1.5f,
.grow_threshold = 0.8,
.shrink_threshold = 0.2
);
assert(dynarr && "Buy more RAM!");
}
void extended_header(void)
{
typedef struct
{
size_t meta;
}
ext_t;
(
.ext_header_size = sizeof(ext_t),
.element_size = sizeof(long)
);
*header = (ext_t) {0};
}
void cloning(void)
{
}
Describes dynarr public interface.
void * dynarr_get_ext_header(const dynarr_t *const dynarr)
Retrieve a location of extended header.
#define dynarr_create(...)
Dynarr constructor.
dynarr_t * dynarr_clone(const dynarr_t *const dynarr)
Duplicate a dynarr.
dynarr_t * dynarr_create_(const dynarr_opts_t *const opts)
Constructor of the dynamic array.
void dynarr_destroy(dynarr_t *const dynarr)
Deallocates a dynamic array.