BitVecContainsAt

Table of Contents

BitVecContainsAt

Description

Check if bitvector contains the given pattern at a specific position.

Parameters

NameDirectionDescription
bvinBitvector to check
patterninPattern to match
idxinPosition to check at

Usage example (from documentation)

  bool at_pos = BitVecContainsAt(&flags, &pattern, 5);

Usage example (Cross-references)

    
    for (u64 i = 0; i <= bv->length - pattern->length; i++) {
    if (BitVecContainsAt(bv, pattern, i)) {
    return i;
    }
    
    for (u64 i = bv->length - pattern->length; i < bv->length; i--) { // i < bv->length handles underflow
    if (BitVecContainsAt(bv, pattern, i)) {
    return i;
    }
    
    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++;
    }
    
    return BitVecContainsAt(bv, prefix, 0);
    }
    
    u64 start_pos = bv->length - suffix->length;
    return BitVecContainsAt(bv, suffix, start_pos);
    }
    
    
    bool BitVecContainsAt(BitVec *bv, BitVec *pattern, u64 idx) {
    ValidateBitVec(bv);
    ValidateBitVec(pattern);
    u64 count = 0;
    for (u64 i = 0; i <= bv->length - pattern->length; i++) {
    if (BitVecContainsAt(bv, pattern, i)) {
    count++;
    }
    for (u64 i = start + 1; i > search_end; i--) {
    u64 pos = i - 1;
    if (BitVecContainsAt(bv, pattern, pos)) {
    return pos;
    }
    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;

Share :

Related Posts

BitVecFromStr

BitVecFromStr Description Create bitvector from string representation. String should contain only ‘1’ and ‘0’ characters.

Read More

BitVecToBytes

BitVecToBytes Description Export bitvector to byte array. Copies the internal bit representation to the provided byte array.

Read More

BitVecEndsWith

BitVecEndsWith Description Check if bitvector ends with the given bit pattern.

Read More