BitVecContainsAt
- Function
- August 22, 2025
Table of Contents
BitVecContainsAt
BitVecContainsAt
Description
Check if bitvector contains the given pattern at a specific position.
Parameters
Name | Direction | Description |
---|---|---|
bv | in | Bitvector to check |
pattern | in | Pattern to match |
idx | in | Position to check at |
Usage example (from documentation)
bool at_pos = BitVecContainsAt(&flags, &pattern, 5);
Usage example (Cross-references)
- In
BitVec.c:1063
:
for (u64 i = 0; i <= bv->length - pattern->length; i++) {
if (BitVecContainsAt(bv, pattern, i)) {
return i;
}
- In
BitVec.c:1079
:
for (u64 i = bv->length - pattern->length; i < bv->length; i--) { // i < bv->length handles underflow
if (BitVecContainsAt(bv, pattern, i)) {
return i;
}
- In
BitVec.c:1103
:
for (u64 i = 0; i <= bv->length - pattern->length && found_count < max_results; i++) {
if (BitVecContainsAt(bv, pattern, i)) {
results[found_count] = i;
found_count++;
- In
BitVec.c:1407
:
}
return BitVecContainsAt(bv, prefix, 0);
}
- In
BitVec.c:1419
:
u64 start_pos = bv->length - suffix->length;
return BitVecContainsAt(bv, suffix, start_pos);
}
- In
BitVec.c:1424
:
bool BitVecContainsAt(BitVec *bv, BitVec *pattern, u64 idx) {
ValidateBitVec(bv);
ValidateBitVec(pattern);
- In
BitVec.c:1451
:
u64 count = 0;
for (u64 i = 0; i <= bv->length - pattern->length; i++) {
if (BitVecContainsAt(bv, pattern, i)) {
count++;
}
- In
BitVec.c:1471
:
for (u64 i = start + 1; i > search_end; i--) {
u64 pos = i - 1;
if (BitVecContainsAt(bv, pattern, pos)) {
return pos;
}
- In
BitVec.c:1515
:
if (search_pos + old_pattern->length <= bv->length) {
for (u64 i = search_pos; i <= bv->length - old_pattern->length; i++) {
if (BitVecContainsAt(bv, old_pattern, i)) {
match_pos = i;
found = true;
bool test_bitvec_contains_at_null_source(void) {
printf("Testing BitVecContainsAt(NULL, pattern, 0) - should fatal\n");
BitVec pattern = BitVecInit();
BitVecPush(&pattern, true);
BitVec pattern = BitVecInit();
BitVecPush(&pattern, true);
BitVecContainsAt(NULL, &pattern, 0);
BitVecDeinit(&pattern);
return true;
bool test_bitvec_contains_at_null_pattern(void) {
printf("Testing BitVecContainsAt(source, NULL, 0) - should fatal\n");
BitVec source = BitVecInit();
BitVecPush(&source, true);
BitVec source = BitVecInit();
BitVecPush(&source, true);
BitVecContainsAt(&source, NULL, 0);
BitVecDeinit(&source);
return true;
// BitVecContainsAt tests
bool test_bitvec_contains_at_basic(void) {
printf("Testing BitVecContainsAt basic functionality\n");
BitVec source = BitVecInit();
BitVecPush(&pattern, true);
result = result && BitVecContainsAt(&source, &pattern, 1); // Should match
result = result && !BitVecContainsAt(&source, &pattern, 0); // Should not match
result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
result = result && BitVecContainsAt(&source, &pattern, 1); // Should match
result = result && !BitVecContainsAt(&source, &pattern, 0); // Should not match
result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
result = result && BitVecContainsAt(&source, &pattern, 1); // Should match
result = result && !BitVecContainsAt(&source, &pattern, 0); // Should not match
result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
BitVecDeinit(&source);
bool test_bitvec_contains_at_edge_cases(void) {
printf("Testing BitVecContainsAt edge cases\n");
BitVec source = BitVecInit();
BitVecPush(&pattern, true);
result = result && !BitVecContainsAt(&source, &pattern, 0); // Pattern too long
BitVecDeinit(&source);
// BitVecContainsAt tests
bool test_bitvec_contains_at_basic(void) {
printf("Testing BitVecContainsAt basic functionality\n");
BitVec source = BitVecInit();
BitVecPush(&pattern, true);
result = result && BitVecContainsAt(&source, &pattern, 1); // Should match
result = result && !BitVecContainsAt(&source, &pattern, 0); // Should not match
result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
result = result && BitVecContainsAt(&source, &pattern, 1); // Should match
result = result && !BitVecContainsAt(&source, &pattern, 0); // Should not match
result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
result = result && BitVecContainsAt(&source, &pattern, 1); // Should match
result = result && !BitVecContainsAt(&source, &pattern, 0); // Should not match
result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
BitVecDeinit(&source);
bool test_bitvec_contains_at_edge_cases(void) {
printf("Testing BitVecContainsAt edge cases\n");
BitVec source = BitVecInit();
BitVecPush(&pattern, true);
result = result && !BitVecContainsAt(&source, &pattern, 0); // Pattern too long
BitVecDeinit(&source);
bool test_bitvec_contains_at_null_source(void) {
printf("Testing BitVecContainsAt(NULL, pattern, 0) - should fatal\n");
BitVec pattern = BitVecInit();
BitVecPush(&pattern, true);
BitVec pattern = BitVecInit();
BitVecPush(&pattern, true);
BitVecContainsAt(NULL, &pattern, 0);
BitVecDeinit(&pattern);
return true;
bool test_bitvec_contains_at_null_pattern(void) {
printf("Testing BitVecContainsAt(source, NULL, 0) - should fatal\n");
BitVec source = BitVecInit();
BitVecPush(&source, true);
BitVec source = BitVecInit();
BitVecPush(&source, true);
BitVecContainsAt(&source, NULL, 0);
BitVecDeinit(&source);
return true;