Skip to content
VecDeleteRange

VecDeleteRange

Description

Delete count elements starting at start. Order of trailing elements is preserved.

Parameters

Name Direction Description
v in,out Vector handle.
start in First deleted index.
count in Number of elements to delete.

Success

Returns to the caller. The vector length shrinks by count; elements previously at indices >= start + count have shifted left by count. When copy_deinit is configured it is invoked on each dropped element.

Failure

Function cannot fail. start + count exceeding length is a caller bug and aborts via LOG_FATAL.

Usage example (Cross-references)

Usage examples (Cross-references)
                    size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
                    size_t count = extract_u32(data, offset, data_size) % (VecLen(vec) - index + 1);
                    VecDeleteRange(vec, index, count);
                }
                break;
                    size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
                    size_t count = extract_u32(data, offset, data_size) % (VecLen(vec) - index + 1);
                    VecDeleteRange(vec, index, count);
                }
                break;
                uint64_t len = VecLen(vec);
                if (len > 0 && start < len && count > 0 && start + count <= len) {
                    VecDeleteRange(vec, start, count);
                }
                break;
            // When we reach idx=3, delete several elements
            if (idx == 3) {
                VecDeleteRange(&vec, 0, 6); // Remove first 6 elements
                WriteFmt("Deleted first 6 elements, new length={}, idx = {}\n", VecLen(&vec), original_length, idx);
            }
    // Test VecDeleteRange function
    bool test_vec_delete_range(void) {
        WriteFmtLn("Testing VecDeleteRange");
    
        // Create a vector of integers
    
        // Delete range from index 2 to 4 (values 30, 40, 50)
        VecDeleteRange(&vec, 2, 3);
    
        // Check new length
        int start_index = 2;
        int count       = 3;
        VecDeleteRange(&vec, start_index, count); // Delete 30, 40, 50
    
        // Check vector after L-value range deletion
    
        // Test R-value delete range operation
        VecDeleteRange(&vec, 2, 3); // Delete 30, 40, 50
    
        // Check vector after R-value range deletion
    
        // Test VecDeleteRange (regular delete range)
        VecDeleteRange(&vec, 0, 2); // Delete 10 and 20
    
        // Check vector length after range deletion
    /// TAGS: Str, Delete, Range
    ///
    #define StrDeleteRange(str, start, count) VecDeleteRange((str), (start), (count))
    
    ///
Last updated on