Skip to content

BitVecReverse

BitVecReverse

Description

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

Parameters

Name Direction Description
bv in Bitvector to reverse

Usage example (from documentation)

  BitVecReverse(&flags);

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    void BitVecReverse(BitVec *bv) {
        ValidateBitVec(bv);
        if (bv->length <= 1) {
    
        // Test NULL pointer - should abort
        BitVecReverse(NULL);
    
        return false;
    // 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 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;
Last updated on