Libecoli 0.4.0
Extensible COmmand LIne library
 
Loading...
Searching...
No Matches
Vectors

Helpers for vectors manipulation. More...

Typedefs

typedef void(* ec_vec_elt_free_t) (void *ptr)
 
typedef void(* ec_vec_elt_copy_t) (void *dst, void *src)
 

Functions

struct ec_vec * ec_vec (size_t elt_size, size_t size, ec_vec_elt_copy_t copy, ec_vec_elt_free_t free)
 
int ec_vec_add_by_ref (struct ec_vec *vec, void *ptr)
 
int ec_vec_add_ptr (struct ec_vec *vec, void *elt)
 
int ec_vec_add_u8 (struct ec_vec *vec, uint8_t elt)
 
int ec_vec_add_u16 (struct ec_vec *vec, uint16_t elt)
 
int ec_vec_add_u32 (struct ec_vec *vec, uint32_t elt)
 
int ec_vec_add_u64 (struct ec_vec *vec, uint64_t elt)
 
int ec_vec_get (void *ptr, const struct ec_vec *vec, size_t idx)
 
struct ec_vecec_vec_dup (const struct ec_vec *vec)
 
struct ec_vecec_vec_ndup (const struct ec_vec *vec, size_t off, size_t len)
 
void ec_vec_free (struct ec_vec *vec)
 

Detailed Description

Helpers for vectors manipulation.

The ec_vec API provide helpers to manipulate vectors of objects of any kind.

Typedef Documentation

◆ ec_vec_elt_free_t

typedef void(* ec_vec_elt_free_t) (void *ptr)

Custom free callback.

If NULL, default does nothing

Definition at line 26 of file ecoli_vec.h.

◆ ec_vec_elt_copy_t

typedef void(* ec_vec_elt_copy_t) (void *dst, void *src)

Custom copy callback

If NULL, default is: memcpy(dst, src, vec->elt_size)

Definition at line 33 of file ecoli_vec.h.

Function Documentation

◆ ec_vec()

struct ec_vec * ec_vec ( size_t elt_size,
size_t size,
ec_vec_elt_copy_t copy,
ec_vec_elt_free_t free )

Create a new vector.

◆ ec_vec_add_by_ref()

int ec_vec_add_by_ref ( struct ec_vec * vec,
void * ptr )

Add reference to a vector.

◆ ec_vec_add_ptr()

int ec_vec_add_ptr ( struct ec_vec * vec,
void * elt )

Add opaque element to a vector.

◆ ec_vec_add_u8()

int ec_vec_add_u8 ( struct ec_vec * vec,
uint8_t elt )

Add uint8_t value to a vector.

◆ ec_vec_add_u16()

int ec_vec_add_u16 ( struct ec_vec * vec,
uint16_t elt )

Add uint16_t value to a vector.

◆ ec_vec_add_u32()

int ec_vec_add_u32 ( struct ec_vec * vec,
uint32_t elt )

Add uint32_t value to a vector.

◆ ec_vec_add_u64()

int ec_vec_add_u64 ( struct ec_vec * vec,
uint64_t elt )

Add uint64_t value to a vector.

◆ ec_vec_get()

int ec_vec_get ( void * ptr,
const struct ec_vec * vec,
size_t idx )

Get element located at an offset.

◆ ec_vec_dup()

struct ec_vec * ec_vec_dup ( const struct ec_vec * vec)

Duplicate a vector.

◆ ec_vec_ndup()

struct ec_vec * ec_vec_ndup ( const struct ec_vec * vec,
size_t off,
size_t len )

Duplicate a portion of a vector.

◆ ec_vec_free()

void ec_vec_free ( struct ec_vec * vec)

Free a vector and all its contents.