Skip to content

VecCopyDeinit

Description

Deep-copy deinit callback wired into the vector, or NULL if the vector was initialised without deep-copy semantics.

Parameters

Name Direction Description
v in Vector to query.

Usage example (Cross-references)

Usage examples (Cross-references)
                                   .capacity    = 0,                                                                       \
                                   .copy_init   = VecCopyInit(vs),                                                         \
                                   .copy_deinit = VecCopyDeinit(vs),                                                       \
                                   .data        = NULL,                                                                    \
                                   .allocator   = VecAllocator(vs),                                                        \
            (VecLen(&vec) == 0 && VecCapacity(&vec) == 0 && VecBegin(&vec) == NULL &&
             VecCopyInit(&vec) == (GenericCopyInit)ComplexItemCopyInit &&
             VecCopyDeinit(&vec) == (GenericCopyDeinit)ComplexItemDeinit);
    
        // Create a test item
        bool result =
            (VecLen(&vec) == 0 && VecCapacity(&vec) == 0 && VecBegin(&vec) == NULL && VecAllocator(&vec)->alignment == 1 &&
             VecCopyInit(&vec) == NULL && VecCopyDeinit(&vec) == NULL);
    
        // Clean up
        result = result && (VecLen(&test_vec) == 0 && VecCapacity(&test_vec) == 0 && VecBegin(&test_vec) == NULL &&
                            VecAllocator(&test_vec)->alignment == 1 && VecCopyInit(&test_vec) == NULL &&
                            VecCopyDeinit(&test_vec) == NULL);
    
        // Clean up
        bool result =
            (VecLen(&vec) == 0 && VecCapacity(&vec) == 0 && VecBegin(&vec) == NULL && VecAllocator(&vec)->alignment == 4 &&
             VecCopyInit(&vec) == NULL && VecCopyDeinit(&vec) == NULL);
    
        // Clean up
        result = result && (VecLen(&test_vec) == 0 && VecCapacity(&test_vec) == 0 && VecBegin(&test_vec) == NULL &&
                            VecAllocator(&test_vec)->alignment == 16 && VecCopyInit(&test_vec) == NULL &&
                            VecCopyDeinit(&test_vec) == NULL);
    
        // Clean up
            (VecLen(&vec) == 0 && VecCapacity(&vec) == 0 && VecBegin(&vec) == NULL && VecAllocator(&vec)->alignment == 1 &&
             VecCopyInit(&vec) == (GenericCopyInit)TestItemCopyInit &&
             VecCopyDeinit(&vec) == (GenericCopyDeinit)TestItemDeinit);
    
        // Clean up
            (VecLen(&vec) == 0 && VecCapacity(&vec) == 0 && VecBegin(&vec) == NULL && VecAllocator(&vec)->alignment == 8 &&
             VecCopyInit(&vec) == (GenericCopyInit)TestItemCopyInit &&
             VecCopyDeinit(&vec) == (GenericCopyDeinit)TestItemDeinit);
    
        // Clean up
        result      = result && (VecAllocator(&vec_g)->alignment == 32) && (VecAllocator(&vec_h)->alignment == 64);
        result      = result && (VecCopyInit(&vec_c) == (GenericCopyInit)TestItemCopyInit);
        result      = result && (VecCopyDeinit(&vec_d) == (GenericCopyDeinit)TestItemDeinit);
    
        VecDeinit(&vec_a);
        bool allocator_matches = VecAllocator(&dst) == VecAllocator(&src);
    
        bool result = cloned && VecCopyInit(&dst) == VecCopyInit(&src) && VecCopyDeinit(&dst) == VecCopyDeinit(&src) &&
                      VecAllocator(&dst)->effort == ALLOCATOR_EFFORT_RETRY_FALLBACK &&
                      VecAllocator(&dst)->retry_limit == 11 && allocator_matches && VecLen(&src) == 3 &&
        bool result =
            (VecLen(&vec) == 0 && VecCapacity(&vec) == 0 && VecBegin(&vec) == NULL && VecAllocator(&vec)->alignment == 1 &&
             VecCopyInit(&vec) == NULL && VecCopyDeinit(&vec) == NULL);
    
        // Clean up
        result = result && (VecLen(&test_vec) == 0 && VecCapacity(&test_vec) == 0 && VecBegin(&test_vec) == NULL &&
                            VecAllocator(&test_vec)->alignment == 1 && VecCopyInit(&test_vec) == NULL &&
                            VecCopyDeinit(&test_vec) == NULL);
    
        // Clean up
Last updated on