Structure for storing a linear and compact array of values.
More...
|
|
#define | MDATA_VECTOR_FLAG_IS_LOCKED 0x02 |
| |
|
#define | mdata_vector_get(v, idx, type) ((type*)mdata_vector_get_void( v, idx )) |
| |
| #define | mdata_vector_get_last(v, type) |
| |
| #define | mdata_vector_remove_last(v) |
| |
|
#define | mdata_vector_set_ct_step(v, step) (v)->ct_step = step; |
| |
| #define | mdata_vector_is_locked(v) |
| |
|
#define | mdata_vector_insert_sort(v, i, t, field) |
| |
|
#define | mdata_vector_sort(v, t, field) |
| |
|
#define | _mdata_vector_item_ptr(v, idx) (&((v)->data_bytes[((idx) * ((v)->item_sz))])) |
| |
|
#define | mdata_vector_set_flag(v, flag) (v)->flags |= (flag) |
| |
|
#define | mdata_vector_get_flag(v, flag) ((flag) == ((v)->flags & (flag))) |
| |
|
|
ssize_t | mdata_vector_insert (struct MDATA_VECTOR *v, const void *item, ssize_t idx, size_t item_sz) |
| |
|
MERROR_RETVAL | mdata_vector_copy (struct MDATA_VECTOR *v_dest, struct MDATA_VECTOR *v_src) |
| |
| MERROR_RETVAL | mdata_vector_alloc (struct MDATA_VECTOR *v, size_t item_sz, size_t item_ct_init) |
| |
|
void | mdata_vector_free (struct MDATA_VECTOR *v) |
| |
| ssize_t | mdata_vector_append (struct MDATA_VECTOR *v, const void *item, size_t item_sz) |
| | Append an item to the specified vector. More...
|
| |
| MERROR_RETVAL | mdata_vector_remove (struct MDATA_VECTOR *v, size_t idx) |
| | Remove item at the given index, shifting subsequent items up by 1. More...
|
| |
| void * | mdata_vector_get_void (const struct MDATA_VECTOR *v, size_t idx) |
| | Get a generic pointer to an item in the MDATA_VECTOR. More...
|
| |
Structure for storing a linear and compact array of values.
◆ mdata_vector_get_last
| #define mdata_vector_get_last |
( |
|
v, |
|
|
|
type |
|
) |
| |
Value:
void * mdata_vector_get_void(const struct MDATA_VECTOR *v, size_t idx)
Get a generic pointer to an item in the MDATA_VECTOR.
#define mdata_vector_ct(v)
Number of items of MDATA_VECTOR::item_sz bytes actively stored in this vector.
Definition: mdata.h:396
◆ mdata_vector_is_locked
| #define mdata_vector_is_locked |
( |
|
v | ) |
|
Value: (MDATA_VECTOR_FLAG_IS_LOCKED == \
(MDATA_VECTOR_FLAG_IS_LOCKED & (v)->flags))
◆ mdata_vector_remove_last
| #define mdata_vector_remove_last |
( |
|
v | ) |
|
Value:
MERROR_RETVAL mdata_vector_remove(struct MDATA_VECTOR *v, size_t idx)
Remove item at the given index, shifting subsequent items up by 1.
◆ mdata_vector_alloc()
- Warning
- The vector must not be locked before an append or allocate! Reallocation could change pointers gotten during a lock!
◆ mdata_vector_append()
| ssize_t mdata_vector_append |
( |
struct MDATA_VECTOR * |
v, |
|
|
const void * |
item, |
|
|
size_t |
item_sz |
|
) |
| |
|
related |
Append an item to the specified vector.
- Parameters
-
| v | The vector to append to. |
| item | The address of an item to copy to the newly-created vector slow, or NULL to not copy anything. |
| item_sz | Size (in bytes) of the item to append. If the item is sized differently from the first item appended, MERROR_OVERFLOW will be returned and the item will not be appended. |
- Returns
- Index of the appended item or MERROR_RETVAL * -1 if append fails.
- Warning
- The vector must not be locked before an append or allocate! Reallocation could change pointers gotten during a lock!
◆ mdata_vector_get_void()
| void * mdata_vector_get_void |
( |
const struct MDATA_VECTOR * |
v, |
|
|
size_t |
idx |
|
) |
| |
|
related |
Get a generic pointer to an item in the MDATA_VECTOR.
- Parameters
-
| v | Vector to request the item from. Should be locked! |
| idx | Index of item to retrieve. |
- Returns
- Return a generic pointer to the item at the requested index, or NULL if the index is outside of the vector bounds.
◆ mdata_vector_remove()
Remove item at the given index, shifting subsequent items up by 1.
- Warning
- The vector must not be locked before a removal!