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) {
    WriteFmt("Testing BitVecReverse\n");
    
    BitVec bv = BitVecInit();
    
    // Reverse the bits
    BitVecReverse(&bv);
    
    // Expected result: 1101 (1011 reversed)
    
    bool test_bitvec_reverse_edge_cases(void) {
    WriteFmt("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) {
    WriteFmtLn("Testing BitVecReverse");
    
    BitVec bv = BitVecInit();
    
    // Reverse the bits
    BitVecReverse(&bv);
    
    // Expected result: 1101 (1011 reversed)
    
    bool test_bitvec_reverse_edge_cases(void) {
    WriteFmtLn("Testing BitVecReverse edge cases");
    
    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

BitVecNot

BitVecNot Description Perform bitwise NOT operation on a bitvector. Result is stored in the first bitvector.

Read More

BitVecXor

BitVecXor Description Perform bitwise XOR operation between two bitvectors. Result is stored in the first bitvector.

Read More

BitVecAnd

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

Read More