array man page

array — The array library interface


#include <array.h>


An allocated array variable keeps track of

There are two other possibilities for the state of an array variable: unallocated and failed.  In both cases, there is no dynamically allocated region of memory.

A new array variable is normally created as a static variable:

 #include "array.h"

 static array x;

At this point it is unallocated.  The array library provides various allocation and inspection functions.

A new array variable can also be created dynamically. It must be initialized to all-0, meaning unallocated, before it is given to any of the array functions. It must be returned to the unallocated (or failed) state, for example with array_reset, before it is destroyed. These rules prevent all memory leaks.

Expansion and inspection

 array x;

 t* p1 = array_allocate(&x,sizeof(t),pos);

 t* p2 = array_get(&x,sizeof(t),pos);

 t* p3 = array_start(&x);

 int64 len = array_length(&x,sizeof(t));

 int64 bytes = array_bytes(&x);

Truncation and deallocation

 array x;






 array x;
 array y;

 if (array_equal(&x,&y))
   /* arrays are equal... */


 array x;
 array y;




 array_cats0(&x,"fnord"); /* also append the \0 */

 array_cat0(&x); /* append \0 */

 array_cate(&x,"fnord",1,4); /* append "nor" */

Original API Definition

See Also

array_get(3), array_start(3), array_fail(3)