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!