VecPtrAt
- Macro
- October 8, 2025
Table of Contents
VecPtrAt
VecPtrAt
Description
Value at given index in a vector. It’s strongly recommended to always use this instead of directly accessing the data.
Parameters
Name | Direction | Description |
---|---|---|
v | in | Vector to get data from |
idx | in | Index to get data at |
Usage example (Cross-references)
- In
Vec.Access.c:51
:
// Test VecPtrAt function
bool test_vec_ptr_at(void) {
WriteFmt("Testing VecPtrAt\n");
// Create a vector of integers
- In
Vec.Access.c:63
:
// Get pointers to elements
int *ptr0 = VecPtrAt(&vec, 0);
int *ptr1 = VecPtrAt(&vec, 1);
int *ptr2 = VecPtrAt(&vec, 2);
- In
Vec.Access.c:64
:
// Get pointers to elements
int *ptr0 = VecPtrAt(&vec, 0);
int *ptr1 = VecPtrAt(&vec, 1);
int *ptr2 = VecPtrAt(&vec, 2);
- In
Vec.Access.c:65
:
int *ptr0 = VecPtrAt(&vec, 0);
int *ptr1 = VecPtrAt(&vec, 1);
int *ptr2 = VecPtrAt(&vec, 2);
// Check values through pointers
WriteFmt("Testing BitVecPrefixMatch(NULL, patterns, 1) - should fatal\n");
BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit);
BitVecPush(VecPtrAt(&vp, 0), true);
BitVecPrefixMatch(NULL, &vp);
VecDeinit(&vp);
WriteFmt("Testing BitVecSuffixMatch(NULL, patterns, 1) - should fatal\n");
BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit);
BitVecPush(VecPtrAt(&vp, 0), true);
BitVecSuffixMatch(NULL, &vp);
VecDeinit(&vp);
BitVecPush(&source, true);
BitVec *p0 = VecPtrAt(&patterns, 0);
BitVec *p1 = VecPtrAt(&patterns, 1);
BitVec *p2 = VecPtrAt(&patterns, 2);
BitVec *p0 = VecPtrAt(&patterns, 0);
BitVec *p1 = VecPtrAt(&patterns, 1);
BitVec *p2 = VecPtrAt(&patterns, 2);
BitVec *p0 = VecPtrAt(&patterns, 0);
BitVec *p1 = VecPtrAt(&patterns, 1);
BitVec *p2 = VecPtrAt(&patterns, 2);
*p0 = BitVecInit();
BitVecPush(&source, true);
BitVec *p0 = VecPtrAt(&patterns, 0);
BitVec *p1 = VecPtrAt(&patterns, 1);
BitVec *p2 = VecPtrAt(&patterns, 2);
BitVec *p0 = VecPtrAt(&patterns, 0);
BitVec *p1 = VecPtrAt(&patterns, 1);
BitVec *p2 = VecPtrAt(&patterns, 2);
BitVec *p0 = VecPtrAt(&patterns, 0);
BitVec *p1 = VecPtrAt(&patterns, 1);
BitVec *p2 = VecPtrAt(&patterns, 2);
*p0 = BitVecInit();
- In
Foreach.h:63
:
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); \
idx++)
- In
Foreach.h:83
:
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) \
for (VEC_DATATYPE(UNPL(pv)) *var = VecPtrAt(UNPL(pv), idx); UNPL(run_once); UNPL(run_once) = 0)
///
- In
Foreach.h:201
:
idx >= UNPL(s) && idx < UNPL(e) && idx < UNPL(pv)->length && UNPL(s) <= UNPL(e); \
++idx, UNPL(d) = 1) \
for (VEC_DATATYPE(UNPL(pv)) *var = VecPtrAt(UNPL(pv), idx); UNPL(d); UNPL(d) = 0)
///
- In
Access.h:44
:
/// Get pointer to character at given index
///
#define StrCharPtrAt(str, idx) VecPtrAt(str, idx)
#ifdef __cplusplus
- In
VecInt.c:319
:
uint16_t idx = extract_u16(data, offset, size);
if (idx < VecLen(vec)) {
volatile i32 *ptr = VecPtrAt(vec, idx);
volatile i32 val = *ptr;
(void)val;
- In
VecStr.c:341
:
if (VecLen(vec) > 0 && *offset + 4 <= size) {
size_t index = extract_u32(data, offset, size) % VecLen(vec);
Str *ptr = VecPtrAt(vec, index);
(void)ptr; // Use the result to avoid warnings
}
- In
VecCharPtr.c:369
:
if (VecLen(vec) > 0 && *offset + 4 <= size) {
size_t index = extract_u32(data, offset, size) % VecLen(vec);
char **ptr = VecPtrAt(vec, index);
(void)ptr; // Use the result to avoid warnings
}