Skip to content

BitVecMatches

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);

Returns

true if pattern matches with wildcards

Usage example (Cross-references)

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