BitVecRemoveRange

Table of Contents

BitVecRemoveRange

Description

Remove multiple consecutive bits starting at a specific position. All bits after the removed range are shifted left.

Parameters

NameDirectionDescription
bvinBitvector to remove from
idxinStarting position (0-based)
countinNumber of bits to remove

Usage example (from documentation)

  BitVecRemoveRange(&flags, 2, 3);  // Remove 3 bits starting at position 2

Usage example (Cross-references)

    }
    
    void BitVecRemoveRange(BitVec *bv, u64 idx, u64 count) {
    ValidateBitVec(bv);
    if (idx >= bv->length) {
    
    // Remove old pattern
    BitVecRemoveRange(bv, pos, old_pattern->length);
    
    // Insert new pattern
    
    // Remove old pattern
    BitVecRemoveRange(bv, match_pos, old_pattern->length);
    
    // Insert new pattern
    // Test BitVecRemoveRange function
    bool test_bitvec_remove_range(void) {
    printf("Testing BitVecRemoveRange\n");
    
    BitVec bv = BitVecInit();
    
    // Remove range from index 1 to 3 (3 bits)
    BitVecRemoveRange(&bv, 1, 3);
    
    // Check result: true, false, true (removed false, true, true)
    
    bool test_bitvec_remove_range_edge_cases(void) {
    printf("Testing BitVecRemoveRange edge cases\n");
    
    BitVec bv     = BitVecInit();
    // Test remove 0 elements (should be no-op)
    BitVecPush(&bv, true);
    BitVecRemoveRange(&bv, 0, 0);
    result = result && (bv.length == 1);
    BitVecPush(&bv, i % 2 == 0);
    }
    BitVecRemoveRange(&bv, 0, 10);
    result = result && (bv.length == 0);
    BitVecPush(&bv, i % 2 == 0);
    }
    BitVecRemoveRange(&bv, 1, 5);        // Remove 5 elements starting at index 1
    result = result && (bv.length == 5); // Should have 5 elements left
    
    // Test NULL bitvec pointer - should abort
    BitVecRemoveRange(NULL, 0, 1);
    
    return false;
    
    // Test removing beyond capacity limit - should abort
    BitVecRemoveRange(&bv, SIZE_MAX, 1);
    
    BitVecDeinit(&bv);
    
    // Test remove range from empty bitvec - should abort
    BitVecRemoveRange(&bv, 0, 1);
    
    BitVecDeinit(&bv);

Share :

Related Posts

IN_RANGE

IN_RANGE Description Checks if the value x is within the inclusive range [lo, hi].

Read More

CLAMP

CLAMP Description Clamps the value of x to be within the inclusive range [lo, hi].

Read More