VecInitWithDeepCopy
- Macro
- August 22, 2025
Table of Contents
VecInitWithDeepCopy
VecInitWithDeepCopy
Description
Initialize vector. Default alignment is 1 It is mandatory to initialize vectors before use. Not doing so is undefined behaviour.
Parameters
Name | Direction | Description |
---|---|---|
ci | in | Copy init method. |
cd | in | Copy deinit method. |
Usage example (from documentation)
Vec(HttpRequest) requests = VecInitWithDeepCopy(RequestClone, RequestDeinit);
Usage example (Cross-references)
- In
Str.c:120
:
ValidateStr(s);
Strs sv = VecInitWithDeepCopy(NULL, StrDeinit);
size keylen = ZstrLen(key);
- In
MisraDoc.c:123
:
Scope(&file_paths, VecDeinit, {
// temporary vector to store all directory paths to explore files in
Strs dir_paths = VecInitWithDeepCopy(NULL, StrDeinit);
Scope(&dir_paths, VecDeinit, {
VecMerge(&dir_paths, &project.source_directories);
Str json = StrInit();
Vec(Str) languages = VecInitWithDeepCopy(NULL, StrDeinit);
// Create strings and push them properly
StrIter si = StrIterFromStr(json);
Vec(Str) languages = VecInitWithDeepCopy(NULL, StrDeinit);
JR_OBJ(si, {
Vec(i32) empty_numbers = VecInit();
Vec(Str) empty_strings = VecInitWithDeepCopy(NULL, StrDeinit);
JW_OBJ(json, {
StrIter si2 = StrIterFromStr(json2);
Vec(Str) data = VecInitWithDeepCopy(NULL, StrDeinit);
JR_OBJ(si2, {
Str json = StrInit();
ApiResponse response = {true, StrInitFromZstr("Success"), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};
// Add sample data
Str json = StrInit();
Vec(FunctionInfo) functions = VecInitWithDeepCopy(NULL, FunctionInfoDeinit);
FunctionInfo func1 = {12345, StrInitFromZstr("test_func"), 1024, 4096};
Str json = StrInit();
Vec(AnnSymbol) symbols = VecInitWithDeepCopy(NULL, AnnSymbolDeinit);
AnnSymbol sym1 = {0};
VecPushBack(&numbers, num3);
Vec(Str) strings = VecInitWithDeepCopy(NULL, StrDeinit);
// Create strings and push them properly
- In
RoundTrip.c:353
:
// Original data
Vec(i32) original_numbers = VecInit();
Vec(Str) original_strings = VecInitWithDeepCopy(NULL, StrDeinit);
// Populate arrays
- In
RoundTrip.c:381
:
// Read back from JSON
Vec(i32) parsed_numbers = VecInit();
Vec(Str) parsed_strings = VecInitWithDeepCopy(NULL, StrDeinit);
StrIter si = StrIterFromStr(json);
- In
RoundTrip.c:649
:
// Original empty data
Vec(i32) empty_numbers = VecInit();
Vec(Str) empty_strings = VecInitWithDeepCopy(NULL, StrDeinit);
Str empty_str = StrInit();
- In
RoundTrip.c:669
:
// Read back from JSON
Vec(i32) parsed_numbers = VecInit();
Vec(Str) parsed_strings = VecInitWithDeepCopy(NULL, StrDeinit);
Str parsed_str = StrInit();
bool found_empty_object = false;
typedef Vec(AnnSymbol) Symbols;
Symbols symbols = VecInitWithDeepCopy(NULL, AnnSymbolDeinit);
JR_OBJ(si, {
StrIter si = StrIterFromStr(json);
ApiResponse response = {false, StrInit(), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};
JR_OBJ(si, {
StrIter si = StrIterFromStr(json);
ApiResponse response = {false, StrInit(), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};
printf("[DEBUG] About to parse JSON...\n");
StrIter si = StrIterFromStr(json);
ApiResponse response = {false, StrInit(), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};
printf("[DEBUG] About to parse JSON...\n");
- In
Str.Type.c:45
:
// Create a Strs object (vector of strings)
Strs sv = VecInitWithDeepCopy(NULL, StrDeinit);
// Add some strings
bool test_bitvec_prefix_match_null_source(void) {
printf("Testing BitVecPrefixMatch(NULL, patterns, 1) - should fatal\n");
BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit);
BitVecPush(VecPtrAt(&vp, 0), true);
BitVecPrefixMatch(NULL, &vp);
bool test_bitvec_suffix_match_null_source(void) {
printf("Testing BitVecSuffixMatch(NULL, patterns, 1) - should fatal\n");
BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit);
BitVecPush(VecPtrAt(&vp, 0), true);
BitVecSuffixMatch(NULL, &vp);
// Create a vector of ComplexItem with deep copy functions
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
// Check initial state
// Create a vector of ComplexItem with deep copy functions
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
// Create test items
// Create a vector of ComplexItem with deep copy functions
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
// Create test items
// Create two vectors of ComplexItem with deep copy functions
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec1 = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
ComplexVec vec2 = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec1 = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
ComplexVec vec2 = VecInitWithDeepCopy(ComplexItemCopyInit, ComplexItemDeinit);
// Create test items
// Now test VecMergeL which transfers ownership
ComplexVec vec3 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
ComplexVec vec4 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Now test VecMergeL which transfers ownership
ComplexVec vec3 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
ComplexVec vec4 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Create more test items
// Create a temporary vector with no copy_init but with copy_deinit for proper cleanup
typedef Vec(ComplexItem) ComplexVec;
ComplexVec temp_vec = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Insert with L-value semantics (vector takes ownership)
// Create a vector with no copy_init but with copy_deinit for proper cleanup
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// First, create a dummy item and add it to the vector
// Create a vector with no copy_init but with copy_deinit for proper cleanup
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Make sure we have enough capacity to avoid reallocation issues
// Create a vector with no copy_init but with copy_deinit for proper cleanup
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Add a dummy item first
// Create a vector with no copy_init but with copy_deinit for proper cleanup
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec1 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
ComplexVec vec2 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec1 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
ComplexVec vec2 = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Create test items for vec2
// Create a vector with no copy_init but with copy_deinit for proper cleanup
typedef Vec(ComplexItem) ComplexVec;
ComplexVec vec = VecInitWithDeepCopy(NULL, ComplexItemDeinit);
// Create an array of complex items
- In
Vec.Init.c:103
:
// Test vector initialization with deep copy functions
bool test_vec_init_with_deep_copy(void) {
printf("Testing VecInitWithDeepCopy\n");
// Test with struct type and custom copy/deinit functions
- In
Vec.Init.c:107
:
// Test with struct type and custom copy/deinit functions
typedef Vec(TestItem) TestVec;
TestVec vec = VecInitWithDeepCopy(TestItemCopyInit, TestItemDeinit);
// Check initial state
BitVec source = BitVecInit();
BitVecs patterns = VecInitWithDeepCopy(NULL, BitVecDeinit);
bool result = true;
BitVec source = BitVecInit();
BitVecs patterns = VecInitWithDeepCopy(NULL, BitVecDeinit);
bool result = true;