Skip to content

BitVecMatches

Description

Match bitvector against pattern with wildcards. Wildcards allow flexible pattern matching where some positions can be “any bit”.

Parameters

Name Direction Description
bv in Bitvector to match against
pattern in Pattern bitvector to match
wildcard in Wildcard bitvector (1 = wildcard position, 0 = exact match required)

Usage example (from documentation)

  bool matches = BitVecMatches(&data, &pattern, &wildcard);

Success

true if pattern matches with wildcards

Failure

false if lengths disagree or any non-wildcard bit differs.

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    bool BitVecMatches(BitVec *bv, BitVec *pattern, BitVec *wildcard) {
        ValidateBitVec(bv);
        ValidateBitVec(pattern);
        DefaultAllocator alloc = DefaultAllocatorInit();
    
        WriteFmt("Testing BitVecMatches basic functionality\n");
    
        BitVec source   = BitVecInit(ALLOCATOR_OF(&alloc));
        BitVecPush(&wildcard, false);
    
        result = result && BitVecMatches(&source, &pattern, &wildcard);
    
        BitVecDeinit(&source);
        DefaultAllocator alloc = DefaultAllocatorInit();
    
        WriteFmt("Testing BitVecMatches(NULL, pattern, wildcard) - should fatal\n");
        BitVec pattern  = BitVecInit(ALLOCATOR_OF(&alloc));
        BitVec wildcard = BitVecInit(ALLOCATOR_OF(&alloc));
        BitVecPush(&pattern, true);
        BitVecPush(&wildcard, false);
        BitVecMatches(NULL, &pattern, &wildcard);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
Last updated on