ValidateVec
- Macro
- August 22, 2025
Table of Contents
ValidateVec
ValidateVec
Description
Validate whether a given Vec
object is valid. Not foolproof but will work most of the time. Aborts if provided Vec
is not valid.
Parameters
Name | Direction | Description |
---|---|---|
i | in | Pointer to Vec object to validate. |
Success
Continue execution, meaning given Vec
object is most probably a valid Vec
.
Failure
abort
Usage example (Cross-references)
- In
StrIter.h:33
:
/// FAILURE : `abort`
///
#define ValidateStrIters(siv) ValidateVec(siv);
///
- In
Foreach.h:29
:
#define VecForeachIdx(v, var, idx, body) \
do { \
ValidateVec(v); \
size idx = 0; \
VEC_DATATYPE(v) var = {0}; \
- In
Foreach.h:56
:
#define VecForeachReverseIdx(v, var, idx, body) \
do { \
ValidateVec(v); \
size idx = 0; \
VEC_DATATYPE(v) var = {0}; \
- In
Foreach.h:85
:
#define VecForeachPtrIdx(v, var, idx, body) \
do { \
ValidateVec(v); \
size idx = 0; \
VEC_DATATYPE(v) *var = NULL; \
- In
Foreach.h:111
:
#define VecForeachPtrReverseIdx(v, var, idx, body) \
do { \
ValidateVec(v); \
size idx = 0; \
VEC_DATATYPE(v) *var = {0}; \
- In
Foreach.h:228
:
#define VecForeachInRangeIdx(v, var, idx, start, end, body) \
do { \
ValidateVec(v); \
size idx = 0; \
VEC_DATATYPE(v) var = {0}; \
- In
Foreach.h:307
:
#define VecForeachPtrInRangeIdx(v, var, idx, start, end, body) \
do { \
ValidateVec(v); \
size idx = 0; \
VEC_DATATYPE(v) *var = NULL; \
- In
Vec.c:21
:
static inline size vec_aligned_size(GenericVec *v, size item_size) {
ValidateVec(v);
if (!v->alignment) {
- In
Vec.c:31
:
static inline size vec_aligned_offset_at(GenericVec *v, size idx, size item_size) {
ValidateVec(v);
return idx * vec_aligned_size(v, item_size);
- In
Vec.c:37
:
static inline char *vec_ptr_at(GenericVec *v, size idx, size item_size) {
ValidateVec(v);
return v->data + vec_aligned_offset_at(v, idx, item_size);
- In
Vec.c:43
:
void deinit_vec(GenericVec *vec, size item_size) {
ValidateVec(vec);
if (vec->data) {
- In
Vec.c:63
:
void clear_vec(GenericVec *vec, size item_size) {
ValidateVec(vec);
if (vec->data) {
- In
Vec.c:83
:
// Reserve new space if n > capacity
void reserve_vec(GenericVec *vec, size item_size, size n) {
ValidateVec(vec);
if (n > vec->capacity) {
- In
Vec.c:110
:
void reserve_pow2_vec(GenericVec *vec, size item_size, size n) {
ValidateVec(vec);
size n2 = 1;
- In
Vec.c:126
:
void reduce_space_vec(GenericVec *vec, size item_size) {
ValidateVec(vec);
if (vec->length == 0) {
- In
Vec.c:152
:
void insert_range_into_vec(GenericVec *vec, char *item_data, size item_size, size idx, size count) {
ValidateVec(vec);
if (idx > vec->length) {
- In
Vec.c:186
:
void insert_range_fast_into_vec(GenericVec *vec, char *item_data, size item_size, size idx, size count) {
ValidateVec(vec);
if (idx > vec->length) {
- In
Vec.c:222
:
void remove_range_vec(GenericVec *vec, void *removed_data, size item_size, size start, size count) {
ValidateVec(vec);
if (start + count > vec->length) {
- In
Vec.c:263
:
void fast_remove_range_vec(GenericVec *vec, void *removed_data, size item_size, size start, size count) {
ValidateVec(vec);
if (start + count > vec->length) {
- In
Vec.c:317
:
void qsort_vec(GenericVec *vec, size item_size, GenericCompare comp) {
ValidateVec(vec);
if (vec_aligned_size(vec, item_size) != item_size) {
- In
Vec.c:331
:
void swap_vec(GenericVec *vec, size item_size, size idx1, size idx2) {
ValidateVec(vec);
if (idx1 >= vec->length || idx2 >= vec->length) {
- In
Vec.c:356
:
void reverse_vec(GenericVec *vec, size item_size) {
ValidateVec(vec);
size i = vec->length / 2;
- In
Vec.c:365
:
void resize_vec(GenericVec *vec, size item_size, size new_size) {
ValidateVec(vec);
if (new_size <= vec->capacity) {
- In
Str.c:862
:
void ValidateStr(const Str* s) {
return ValidateVec(s);
}
- In
Vec.Type.c:51
:
// Test ValidateVec macro
bool test_vec_validate(void) {
printf("Testing ValidateVec macro\n");
// Create a valid vector
- In
Vec.Type.c:58
:
// This should not abort
ValidateVec(&vec);
// Clean up
- In
Str.Insert.c:255
:
// Validate both vectors
ValidateVec(&s1);
ValidateVec(&s2);
- In
Str.Insert.c:256
:
// Validate both vectors
ValidateVec(&s1);
ValidateVec(&s2);
// Check that the strings were merged correctly