BitVecReverse

Table of Contents

BitVecReverse

Description

Reverse the order of all bits in bitvector. First bit becomes last, last becomes first, etc.

Parameters

NameDirectionDescription
bvinBitvector to reverse

Usage example (from documentation)

  BitVecReverse(&flags);

Usage example (Cross-references)

    }
    
    void BitVecReverse(BitVec *bv) {
    ValidateBitVec(bv);
    if (bv->length <= 1) {
    // Test BitVecReverse function
    bool test_bitvec_reverse(void) {
    printf("Testing BitVecReverse\n");
    
    BitVec bv = BitVecInit();
    
    // Reverse the bits
    BitVecReverse(&bv);
    
    // Expected result: 1101 (1011 reversed)
    
    bool test_bitvec_reverse_edge_cases(void) {
    printf("Testing BitVecReverse edge cases\n");
    
    BitVec bv     = BitVecInit();
    
    // Test reverse empty bitvec
    BitVecReverse(&bv);
    result = result && (bv.length == 0);
    // Test reverse single bit
    BitVecPush(&bv, true);
    BitVecReverse(&bv);
    result = result && (bv.length == 1);
    result = result && (BitVecGet(&bv, 0) == true);
    BitVecPush(&bv, true);
    BitVecPush(&bv, false);
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == false);
    result = result && (BitVecGet(&bv, 1) == true);
    
    // Test double reverse (should restore original)
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == true);
    result = result && (BitVecGet(&bv, 1) == false);
    
    // Test NULL pointer - should abort
    BitVecReverse(NULL);
    
    return false;
    // Test BitVecReverse function
    bool test_bitvec_reverse(void) {
    printf("Testing BitVecReverse\n");
    
    BitVec bv = BitVecInit();
    
    // Reverse the bits
    BitVecReverse(&bv);
    
    // Expected result: 1101 (1011 reversed)
    
    bool test_bitvec_reverse_edge_cases(void) {
    printf("Testing BitVecReverse edge cases\n");
    
    BitVec bv     = BitVecInit();
    
    // Test reverse empty bitvec
    BitVecReverse(&bv);
    result = result && (bv.length == 0);
    // Test reverse single bit
    BitVecPush(&bv, true);
    BitVecReverse(&bv);
    result = result && (bv.length == 1);
    result = result && (BitVecGet(&bv, 0) == true);
    BitVecPush(&bv, true);
    BitVecPush(&bv, false);
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == false);
    result = result && (BitVecGet(&bv, 1) == true);
    
    // Test double reverse (should restore original)
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == true);
    result = result && (BitVecGet(&bv, 1) == false);
    
    // Test NULL pointer - should abort
    BitVecReverse(NULL);
    
    return false;

Share :

Related Posts

BitVecBestAlignment

BitVecBestAlignment Description Find best overlapping alignment between two bitvectors. Returns the offset that gives the best alignment score.

Read More

BitVecAnd

BitVecAnd Description Perform bitwise AND operation between two bitvectors. Result is stored in the first bitvector.

Read More

BitVecShiftRight

BitVecShiftRight Description Shift all bits in bitvector to the right by specified positions. New bits on the left are filled with zeros.

Read More