ValidateVec
- Macro
- October 8, 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
Str.c:859
:
void ValidateStr(const Str *s) {
return ValidateVec(s);
}
- In
Str.c:863
:
void ValidateStrs(const Strs *vs) {
ValidateVec(vs);
VecForeachPtr(vs, sp) {
ValidateStr(sp);
- 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:106
:
void reserve_pow2_vec(GenericVec *vec, size item_size, size n) {
ValidateVec(vec);
size n2 = 1;
- In
Vec.c:122
:
void reduce_space_vec(GenericVec *vec, size item_size) {
ValidateVec(vec);
if (vec->length == 0) {
- In
Vec.c:148
:
}
ValidateVec(vec);
if (idx > vec->length) {
- In
Vec.c:186
:
}
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
Vec.Type.c:51
:
// Test ValidateVec macro
bool test_vec_validate(void) {
WriteFmt("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
- In
StrIter.h:33
:
/// FAILURE : `abort`
///
#define ValidateStrIters(siv) ValidateVec(siv);
///
- In
Insert.h:48
:
#define VecInsertL(v, lval, idx) \
do { \
ValidateVec(v); \
VEC_DATATYPE(v) *__ptr__val_##__LINE__ = &(lval); \
VEC_DATATYPE(v) __tmp__val_##__LINE__ = (lval); \
- In
Insert.h:87
:
#define VecInsertR(v, rval, idx) \
do { \
ValidateVec(v); \
VEC_DATATYPE(v) __tmp__val_##__LINE__ = (rval); \
insert_range_into_vec(GENERIC_VEC(v), (char *)&__tmp__val_##__LINE__, sizeof(VEC_DATATYPE(v)), (idx), 1); \
- In
Insert.h:130
:
#define VecInsertFastL(v, val, idx) \
do { \
ValidateVec(v); \
VEC_DATATYPE(v) *__ptr_val_##__LINE__ = &(val); \
{ \
- In
Insert.h:161
:
#define VecInsertFastR(v, val, idx) \
do { \
ValidateVec(v); \
VEC_DATATYPE(v) *__ptr_val_##__LINE__ = &(val); \
{ \
- In
Insert.h:204
:
#define VecInsertRangeL(v, varr, idx, count) \
do { \
ValidateVec(v); \
{ \
if (varr == NULL) { \
- In
Insert.h:241
:
#define VecInsertRangeR(v, varr, idx, count) \
do { \
ValidateVec(v); \
{ \
if (varr == NULL) { \
- In
Insert.h:300
:
#define VecInsertRangeFastL(v, varr, idx, count) \
do { \
ValidateVec(v); \
{ \
if (varr == NULL) { \
- In
Insert.h:345
:
#define VecInsertRangeFastR(v, varr, idx, count) \
do { \
ValidateVec(v); \
{ \
if (varr == NULL) { \
- In
Foreach.h:24
:
#define VecForeachIdx(v, var, idx) \
for (TYPE_OF(v) UNPL(pv) = (v); UNPL(pv); UNPL(pv) = NULL) \
if ((ValidateVec(UNPL(pv)), 1) && UNPL(pv)->length > 0) \
for (u64 idx = 0, UNPL(d) = 1; UNPL(d); UNPL(d)--) \
for (VEC_DATATYPE(UNPL(pv)) var = {0}; idx < UNPL(pv)->length && (var = VecAt(UNPL(pv), idx), 1); idx++)
- In
Foreach.h:42
:
#define VecForeachReverseIdx(v, var, idx) \
for (TYPE_OF(v) UNPL(pv) = (v); UNPL(pv); UNPL(pv) = NULL) \
if ((ValidateVec(UNPL(pv)), 1) && UNPL(pv)->length > 0) \
for (u64 idx = UNPL(pv)->length; idx-- > 0 && idx < UNPL(pv)->length;) \
for (u8 UNPL(run_once) = 1; UNPL(run_once); UNPL(run_once) = 0) \
- In
Foreach.h:61
:
#define VecForeachPtrIdx(v, var, idx) \
for (TYPE_OF(v) UNPL(pv) = (v); UNPL(pv); UNPL(pv) = NULL) \
if ((ValidateVec(UNPL(pv)), 1) && UNPL(pv)->length > 0) \
for (u64 idx = 0, UNPL(d) = 1; UNPL(d); UNPL(d)--) \
for (VEC_DATATYPE(UNPL(pv)) *var = NULL; idx < UNPL(pv)->length && (var = VecPtrAt(UNPL(pv), idx), 1); \
- In
Foreach.h:80
:
#define VecForeachPtrReverseIdx(v, var, idx) \
for (TYPE_OF(v) UNPL(pv) = (v); UNPL(pv); UNPL(pv) = NULL) \
if ((ValidateVec(UNPL(pv)), 1) && UNPL(pv)->length > 0) \
for (u64 idx = UNPL(pv)->length; idx-- > 0 && idx < UNPL(pv)->length;) \
for (u8 UNPL(run_once) = 1; UNPL(run_once); UNPL(run_once) = 0) \
- In
Foreach.h:161
:
#define VecForeachInRangeIdx(v, var, idx, start, end) \
for (TYPE_OF(v) UNPL(pv) = (v); UNPL(pv); UNPL(pv) = NULL) \
if ((ValidateVec(UNPL(pv)), 1) && UNPL(pv)->length > 0) \
for (u64 UNPL(s) = (start), UNPL(e) = (end), idx = UNPL(s), UNPL(d) = 1; \
UNPL(s) <= idx && idx < UNPL(e) && idx < UNPL(pv)->length && UNPL(s) <= UNPL(e); \
- In
Foreach.h:197
:
#define VecForeachPtrInRangeIdx(v, var, idx, start, end) \
for (TYPE_OF(v) UNPL(pv) = (v); UNPL(pv); UNPL(pv) = NULL) \
if ((ValidateVec(UNPL(pv)), 1) && UNPL(pv)->length > 0) \
for (u64 UNPL(s) = (start), UNPL(e) = (end), idx = UNPL(s), UNPL(d) = 1; \
idx >= UNPL(s) && idx < UNPL(e) && idx < UNPL(pv)->length && UNPL(s) <= UNPL(e); \