BitVecReverse
- Function
- August 22, 2025
Table of Contents
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)
- In
BitVec.c:961
:
}
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;