Skip to content

VecDelete

Description

Delete the element at idx. Order of trailing elements is preserved.

Parameters

Name Direction Description
v in,out Vector handle.
idx in Position in [0, length).

Success

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

Failure

Function cannot fail. An out-of-range idx is a caller bug and aborts via LOG_FATAL.

Usage example (Cross-references)

Usage examples (Cross-references)
                if (VecLen(vec) > 0 && *offset + 4 <= data_size) {
                    size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
                    VecDelete(vec, index);
                    // char_ptr_deinit is called automatically by the vector
                }
                if (VecLen(vec) > 0 && *offset + 4 <= data_size) {
                    size_t index = extract_u32(data, offset, data_size) % VecLen(vec);
                    VecDelete(vec, index);
                    // StrDeinit is called automatically by the vector
                }
                uint16_t idx = extract_u16(data, offset, data_size);
                if (idx < VecLen(vec)) {
                    VecDelete(vec, idx);
                }
                break;
    // Test VecDelete function
    bool test_vec_delete(void) {
        WriteFmtLn("Testing VecDelete");
    
        // Create a vector of integers
    
        // Delete element at index 2 (value 30)
        VecDelete(&vec, 2);
    
        // Check new length
    
        // Delete element at index 0 (value 10)
        VecDelete(&vec, 0);
    
        // Check new length
        // Test L-value delete operation
        int index_to_delete = 2; // Delete 30
        VecDelete(&vec, index_to_delete);
    
        // Check vector after L-value deletion
    
        // Test R-value delete operation
        VecDelete(&vec, 2); // Delete 30
    
        // Check vector after deletion
    
        // Test VecDelete (regular delete)
        VecDelete(&vec, 2); // Delete 30
    
        // Check vector length after deletion
    
        // Use regular VecDelete with the L-value index
        VecDelete(&vec, index_to_delete);
    
        // Check vector length after deletion
    /// TAGS: Str, Delete
    ///
    #define StrDelete(str, idx) VecDelete((str), (idx))
    
    ///
Last updated on