dynamic_array.h v0.3.1
Reference-counted dynamic arrays for C
Loading...
Searching...
No Matches
Functions
Builder Lifecycle

Functions for creating and managing ArrayBuffer-style builders. More...

Functions

DA_DEF da_builder da_builder_create (int element_size)
 Creates a new array builder for efficient construction.
 
DA_DEF da_array da_builder_to_array (da_builder *builder, void(*retain_fn)(void *), void(*release_fn)(void *))
 Converts builder to a ref-counted array with exact capacity.
 
DA_DEF void da_builder_clear (da_builder builder)
 Removes all elements from the builder.
 
DA_DEF void da_builder_destroy (da_builder *builder)
 Destroys a builder and frees its memory.
 

Detailed Description

Functions for creating and managing ArrayBuffer-style builders.

Function Documentation

◆ da_builder_clear()

DA_DEF void da_builder_clear ( da_builder  builder)

Removes all elements from the builder.

Parameters
builderBuilder to clear (must not be NULL)
Note
Sets length to 0 but preserves capacity
Allows reusing builder for multiple constructions
assert(da_builder_length(builder) == 0);
DA_DEF void da_builder_clear(da_builder builder)
Removes all elements from the builder.
Definition dynamic_array.h:1951
DA_DEF int da_builder_length(da_builder builder)
Gets the current number of elements in the builder.
Definition dynamic_array.h:1967

◆ da_builder_create()

DA_DEF da_builder da_builder_create ( int  element_size)

Creates a new array builder for efficient construction.

Parameters
element_sizeSize in bytes of each element (must be > 0)
Returns
New builder with length = 0 and capacity = 0
Note
Builders always use doubling growth strategy for fast construction
Not thread-safe
Use da_builder_to_array() to convert to ref-counted array
Asserts on allocation failure
da_builder builder = da_builder_create(sizeof(int));
DA_BUILDER_APPEND(builder, 42);
da_array arr = da_builder_to_array(&builder);
DA_DEF da_array da_builder_to_array(da_builder *builder, void(*retain_fn)(void *), void(*release_fn)(void *))
Converts builder to a ref-counted array with exact capacity.
Definition dynamic_array.h:1908
DA_DEF da_builder da_builder_create(int element_size)
Creates a new array builder for efficient construction.
Definition dynamic_array.h:1845
#define DA_BUILDER_APPEND(builder, val, T)
Type-safe element append to builder (adaptive macro)
Definition dynamic_array.h:1439
Reference-counted dynamic array structure.
Definition dynamic_array.h:192
ArrayBuffer-style builder for efficient array construction.
Definition dynamic_array.h:208

◆ da_builder_destroy()

DA_DEF void da_builder_destroy ( da_builder builder)

Destroys a builder and frees its memory.

Parameters
builderPointer to builder pointer (will be set to NULL)
Note
Use this if you don't want to convert to da_array
Always sets *builder to NULL
da_builder builder = da_builder_create(sizeof(int));
// ... use builder ...
da_builder_destroy(&builder); // builder becomes NULL
DA_DEF void da_builder_destroy(da_builder *builder)
Destroys a builder and frees its memory.
Definition dynamic_array.h:1956

◆ da_builder_to_array()

DA_DEF da_array da_builder_to_array ( da_builder builder,
void(*)(void *)  retain_fn,
void(*)(void *)  release_fn 
)

Converts builder to a ref-counted array with exact capacity.

Parameters
builderPointer to builder pointer (will be set to NULL)
destructorOptional destructor function for the resulting array (NULL if not needed)
Returns
New da_array with capacity = length (no wasted memory)
Note
Builder is consumed and *builder is set to NULL
Resulting array has ref_count = 1
Memory is reallocated to exact size for efficiency
Perfect for microcontroller memory optimization
DA_BUILDER_APPEND(builder, 42);
da_array arr = da_builder_to_array(&builder, NULL); // Simple types
// For complex types:
da_array cells = da_builder_to_array(&builder, (void(*)(void*))cell_release);
#define DA_BUILDER_CREATE(T)
Type-safe builder creation.
Definition dynamic_array.h:1423