Skip to content

BitVecDeinit

BitVecDeinit

Description

Deinitialize bitvector and free all allocated memory. After calling this, the bitvector should not be used unless re-initialized.

Parameters

Name Direction Description
bv in Pointer to bitvector to deinitialize

Usage example (from documentation)

  BitVecDeinit(&flags);

Usage example (Cross-references)

Usage examples (Cross-references)
    #define BYTES_FOR_BITS(bits) (((bits) + BITS_PER_BYTE - 1) / BITS_PER_BYTE)
    
    void BitVecDeinit(BitVec *bitvec) {
        ValidateBitVec(bitvec);
        if (bitvec->data) {
        }
    
        BitVecDeinit(&temp);
    }
        }
    
        BitVecDeinit(&temp);
    }
        BitVecFindPattern(NULL, &pattern); // Should cause LOG_FATAL
    
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecFindPattern(&source, NULL); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        return true;
    }
        BitVecFindLastPattern(NULL, &pattern); // Should cause LOG_FATAL
    
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecFindLastPattern(&source, NULL); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        return true;
    }
        BitVecFindAllPattern(&source, NULL, results, 10); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        return true;
    }
        BitVecFindAllPattern(&source, &pattern, NULL, 10); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecFindAllPattern(&source, &pattern, results, 0); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecPush(&prefix, true);
        BitVecStartsWith(NULL, &prefix);
        BitVecDeinit(&prefix);
        return true;
    }
        BitVecPush(&source, true);
        BitVecStartsWith(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&suffix, true);
        BitVecEndsWith(NULL, &suffix);
        BitVecDeinit(&suffix);
        return true;
    }
        BitVecPush(&source, true);
        BitVecEndsWith(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&pattern, true);
        BitVecContainsAt(NULL, &pattern, 0);
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecPush(&source, true);
        BitVecContainsAt(&source, NULL, 0);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&wildcard, false);
        BitVecMatches(NULL, &pattern, &wildcard);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return true;
        BitVecMatches(NULL, &pattern, &wildcard);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return true;
    }
        BitVecPush(&source, true);
        BitVecRegexMatch(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
    bool test_bitvec_prefix_match_null_source(void) {
        WriteFmt("Testing BitVecPrefixMatch(NULL, patterns, 1) - should fatal\n");
        BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit);
        BitVecPush(VecPtrAt(&vp, 0), true);
        BitVecPrefixMatch(NULL, &vp);
        BitVecPush(&source, true);
        BitVecPrefixMatch(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
    bool test_bitvec_suffix_match_null_source(void) {
        WriteFmt("Testing BitVecSuffixMatch(NULL, patterns, 1) - should fatal\n");
        BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit);
        BitVecPush(VecPtrAt(&vp, 0), true);
        BitVecSuffixMatch(NULL, &vp);
        BitVecPush(&source, true);
        BitVecSuffixMatch(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
        );
        StrDeinit(&result1);
        BitVecDeinit(&bv1);
    
        // Test 2: Reading hex format
        success    = success && (value2 == 0xDEAD);
        WriteFmt("Test 2 - Hex: {}, Success: {}\n", value2, (value2 == 0xDEAD) ? "true" : "false");
        BitVecDeinit(&bv2);
    
        // Test 3: Reading octal format
        success    = success && (value3 == 0755);
        WriteFmt("Test 3 - Octal: {}, Success: {}\n", value3, (value3 == 0755) ? "true" : "false");
        BitVecDeinit(&bv3);
    
        // Test 4: Reading with whitespace
        );
        StrDeinit(&result4);
        BitVecDeinit(&bv4);
    
        // Test 5: Reading zero values
        WriteFmt("Test 5 - Zero: {}, Success: {}\n", result5, (ZstrCompare(result5.data, "0") == 0) ? "true" : "false");
        StrDeinit(&result5);
        BitVecDeinit(&bv5);
    
        WriteFmt("Overall BitVec reading success: {}\n", success ? "true" : "false");
                      (BitVecGet(&bv, 3) == false);
    
        BitVecDeinit(&bv);
        return result;
    }
                      (BitVecGet(&bv, 3) == false);
    
        BitVecDeinit(&bv);
        return result;
    }
                      (BitVecGet(&bv, 3) == false);   // unchanged
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecCapacity(&bv) >= 100);
    
        BitVecDeinit(&bv);
        return result;
    }
        bool result = (BitVecCountOnes(&bv) == 3) && (BitVecCountZeros(&bv) == 2);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 63) == false); // 63 % 2 == 1, so i%2==0 is false for i=63
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 0) == false);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 0) == false);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecCountZeros(&bv) == 0);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecCountZeros(&bv) == 0);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecCountZeros(&bv) == 500);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecCountZeros(&bv) == 1);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecFindLast(&bv, false) == SIZE_MAX);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && !BitVecNone(&bv, false);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecLongestRun(&bv, false) == 1);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecFindLast(&bv, true) == 999);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && BitVecAny(&bv, false);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecLongestRun(&bv, false) == 1);
    
        BitVecDeinit(&bv);
        return result;
    }
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
        result = result && (count == 1000);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (count == 2); // Should iterate over indices 8,9
    
        BitVecDeinit(&bv);
        return result;
    }
            result = result && (count4 == sz);
    
            BitVecDeinit(&bv);
        }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        u64    count = BitVecRunLengths(&empty_bv, runs, values, 5);
        result       = result && (count == 0);
        BitVecDeinit(&empty_bv);
    
        // Test 2: Single bit (true)
        result = result && (count == 1);
        result = result && (runs[0] == 1 && values[0] == true);
        BitVecDeinit(&single_bv);
    
        // Test 3: Single bit (false)
        result = result && (count == 1);
        result = result && (runs[0] == 1 && values[0] == false);
        BitVecDeinit(&single_false_bv);
    
        // Test 4: All same bits (all true)
        result = result && (count == 1);
        result = result && (runs[0] == 10 && values[0] == true);
        BitVecDeinit(&all_true_bv);
    
        // Test 5: Alternating bits (0101010)
            result = result && (alt_values[i] == (i % 2 == 0));
        }
        BitVecDeinit(&alternating_bv);
    
        return result;
        result = result && (count == 8);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&large_bv);
        return result;
    }
        BitVecRunLengths(&bv, NULL, values, 5);
    
        BitVecDeinit(&bv);
        return true; // Should never reach here
    }
        BitVecRunLengths(&bv, runs, NULL, 5);
    
        BitVecDeinit(&bv);
        return true; // Should never reach here
    }
        BitVecRunLengths(&bv, runs, values, 0);
    
        BitVecDeinit(&bv);
        return true; // Should never reach here
    }
        BitVecGet(&bv, 0);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecSet(&bv, 0, true);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecFlip(&bv, 0);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecGet(&bv, 1000);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecSet(&bv, 500, true);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecFlip(&bv, 10);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecGet(&bv, SIZE_MAX);
    
        BitVecDeinit(&bv);
        return false;
    }
    
        // Cleanup
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv_empty);
        BitVecDeinit(&bv2);
        // Cleanup
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv_empty);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv_empty);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv_zero);
        BitVecDeinit(&bv_empty);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv_zero);
        StrDeinit(&output);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv_zero);
        StrDeinit(&output);
        return success;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
        result = result && (count == 1000);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (count == 2); // Should iterate over indices 8,9
    
        BitVecDeinit(&bv);
        return result;
    }
            result = result && (count4 == sz);
    
            BitVecDeinit(&bv);
        }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        u64    count = BitVecRunLengths(&empty_bv, runs, values, 5);
        result       = result && (count == 0);
        BitVecDeinit(&empty_bv);
    
        // Test 2: Single bit (true)
        result = result && (count == 1);
        result = result && (runs[0] == 1 && values[0] == true);
        BitVecDeinit(&single_bv);
    
        // Test 3: Single bit (false)
        result = result && (count == 1);
        result = result && (runs[0] == 1 && values[0] == false);
        BitVecDeinit(&single_false_bv);
    
        // Test 4: All same bits (all true)
        result = result && (count == 1);
        result = result && (runs[0] == 10 && values[0] == true);
        BitVecDeinit(&all_true_bv);
    
        // Test 5: Alternating bits (0101010)
            result = result && (alt_values[i] == (i % 2 == 0));
        }
        BitVecDeinit(&alternating_bv);
    
        return result;
        result = result && (count == 8);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&large_bv);
        return result;
    }
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        result  = result && (bv.length == 999);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv.length == 5); // Should have 5 elements left
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (found == true) && (bv.length == 999);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (count == 500) && (bv.length == 500);
    
        BitVecDeinit(&bv);
        return result;
    }
        BitVecRemoveRange(&bv, SIZE_MAX, 1);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecPop(&bv);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecRemove(&bv, 0);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecRemoveRange(&bv, 0, 1);
    
        BitVecDeinit(&bv);
        return false;
    }
        result   = result && (distance == 1);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result   = result && (distance == 2); // Length of bv1
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result     = result && (fabs(similarity - 0.5) < 0.001);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result     = result && (fabs(similarity - 1.0) < 0.001);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result     = result && (fabs(similarity - 0.0) < 0.001);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result     = result && (similarity == 0.0);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result  = result && (product == 0);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result  = result && (product == 1); // Only first position counts
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result   = result && (distance == 1);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result   = result && (distance == 2);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result      = result && (fabs(correlation + 1.0) < 0.001);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result      = result && (correlation == 0.0); // No variance
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result  = result && (entropy == 0.0);
    
        BitVecDeinit(&bv);
        return result;
    }
        result  = result && (entropy == 0.0);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (score == -3); // 3 mismatches * -1
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result = result && (score == 2); // 2 matches
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result       = result && (best_pos == 0 || best_pos == 4);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result   = result && (best_pos == 0);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result = result && (edit_dist < 100);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&small1);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&small1);
        BitVecDeinit(&small2);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&small1);
        BitVecDeinit(&small2);
        return result;
        BitVecDeinit(&bv2);
        BitVecDeinit(&small1);
        BitVecDeinit(&small2);
        return result;
    }
        BitVecPush(&bv2, true);
        BitVecHammingDistance(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecHammingDistance(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecJaccardSimilarity(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecJaccardSimilarity(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecCosineSimilarity(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecCosineSimilarity(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecDotProduct(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecDotProduct(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecEditDistance(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecEditDistance(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecCorrelation(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecCorrelation(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecAlignmentScore(NULL, &bv2, 1, -1);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecAlignmentScore(&bv1, NULL, 1, -1);
        BitVecDeinit(&bv1);
        return true;
    }
        BitVecPush(&bv2, true);
        BitVecBestAlignment(NULL, &bv2);
        BitVecDeinit(&bv2);
        return true;
    }
        BitVecPush(&bv1, true);
        BitVecBestAlignment(&bv1, NULL);
        BitVecDeinit(&bv1);
        return true;
    }
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&subset);
        BitVecDeinit(&superset);
        // Clean up
        BitVecDeinit(&subset);
        BitVecDeinit(&superset);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
    
        return result;
    
        // Clean up
        BitVecDeinit(&superset);
        BitVecDeinit(&subset);
        // Clean up
        BitVecDeinit(&superset);
        BitVecDeinit(&subset);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
        result = result && BitVecIsSubset(&bv1, &bv2); // Empty is subset of empty
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result = result && BitVecOverlaps(&bv1, &bv2);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&subset);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&subset);
        BitVecDeinit(&superset);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&subset);
        BitVecDeinit(&superset);
        BitVecDeinit(&bv3);
        BitVecDeinit(&subset);
        BitVecDeinit(&superset);
    
        return result;
    
        // Clean up
        BitVecDeinit(&large1);
        BitVecDeinit(&large2);
        BitVecDeinit(&pos);
        // Clean up
        BitVecDeinit(&large1);
        BitVecDeinit(&large2);
        BitVecDeinit(&pos);
        BitVecDeinit(&neg);
        BitVecDeinit(&large1);
        BitVecDeinit(&large2);
        BitVecDeinit(&pos);
        BitVecDeinit(&neg);
        BitVecDeinit(&large2);
        BitVecDeinit(&pos);
        BitVecDeinit(&neg);
    
        return result;
        BitVecEquals(NULL, &bv);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecEqualsRange(NULL, 0, &bv, 0, 1);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecEqualsRange(&bv1, 0, &bv2, 0, 5); // Range exceeds length
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return false;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return false;
    }
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    // Test BitVecDeinit function
    bool test_bitvec_deinit(void) {
        WriteFmt("Testing BitVecDeinit\n");
    
        BitVec bv = BitVecInit();
    
        // Deinitialize
        BitVecDeinit(&bv);
    
        // After deinitialization, the bitvector should be in a safe state
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up all
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        // Clean up all
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
    
        return result;
        result = result && (bv.capacity == cap_before);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv.length == 10);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv.length == 0);
    
        BitVecDeinit(&bv);
        return result;
    }
    
            result = result && (bv.length == (size)(cycle % 10));
            BitVecDeinit(&bv);
        }
    
        // Test NULL bitvec pointer - should abort
        BitVecDeinit(NULL);
    
        // If we reach here, validation didn't work as expected
    
        // If we reach here, validation didn't work as expected
        BitVecDeinit(&bv);
        return false;
    }
    
        // If we reach here, validation didn't work as expected
        BitVecDeinit(&bv);
        return false;
    }
        BitVecAnd(NULL, &bv, &bv2);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
        return false;
    
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
        return false;
    }
        BitVecAnd(NULL, &bv1, &bv2);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return false;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return false;
    }
        BitVecOr(&result, &bv1, NULL);
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    }
        BitVecXor(&result, NULL, &bv1);
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    }
        BitVecNot(&result, NULL);
    
        BitVecDeinit(&result);
        return false;
    }
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
        result = result && (bv.length == 1000);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv.length == 2);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&result_bv, 0) == false);
    
        BitVecDeinit(&result_bv);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&result_bv);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result = result && (BitVecGet(&bv, 1) == false);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
    }
        result = result && (BitVecGet(&bv, 2) == true);  // original bit 0
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    }
        result = result && (BitVecGet(&bv, 4) == false);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    }
        test_result = test_result && or_ones;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
    }
        test_result = test_result && xor_commutative;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
        BitVecDeinit(&result2);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
        BitVecDeinit(&result2);
        return test_result;
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
        BitVecDeinit(&result2);
        return test_result;
    }
        }
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
    }
    
        // Clean up
        BitVecDeinit(&bitvec);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bitvec);
    
        // Note: We can't easily test the negative case (invalid bitvector)
        BitVecRunLengths(&bv, NULL, values, 5);
    
        BitVecDeinit(&bv);
        return true; // Should never reach here
    }
        BitVecRunLengths(&bv, runs, NULL, 5);
    
        BitVecDeinit(&bv);
        return true; // Should never reach here
    }
        BitVecRunLengths(&bv, runs, values, 0);
    
        BitVecDeinit(&bv);
        return true; // Should never reach here
    }
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&original);
        BitVecDeinit(&clone);
        // Clean up
        BitVecDeinit(&original);
        BitVecDeinit(&clone);
    
        return result;
        result = result && (bv.length == 0);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv.capacity >= 10000);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv1.length == 2);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        BitVec clone1 = BitVecClone(&bv);
        result        = result && (clone1.length == 0);
        BitVecDeinit(&clone1);
    
        // Test clone single element
        result        = result && (clone2.length == 1);
        result        = result && (BitVecGet(&clone2, 0) == true);
        BitVecDeinit(&clone2);
    
        // Test clone large data
        result = result && (BitVecGet(&clone3, 0) != BitVecGet(&bv, 0));
    
        BitVecDeinit(&clone3);
        BitVecDeinit(&bv);
        return result;
    
        BitVecDeinit(&clone3);
        BitVecDeinit(&bv);
        return result;
    }
            }
    
            BitVecDeinit(&bv1);
            BitVecDeinit(&bv2);
            BitVecDeinit(&clone);
    
            BitVecDeinit(&bv1);
            BitVecDeinit(&bv2);
            BitVecDeinit(&clone);
        }
            BitVecDeinit(&bv1);
            BitVecDeinit(&bv2);
            BitVecDeinit(&clone);
        }
        BitVecSwap(NULL, &bv);
    
        BitVecDeinit(&bv);
        return false;
    }
        // Clean up
        StrDeinit(&str);
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&empty_bv);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&empty_bv);
    
        return result;
            result = result && (bytes[0] == 0xCD || bytes[0] == 0xB3);
        }
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&zero_bv);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&zero_bv);
    
        return result;
        StrDeinit(&str_obj);
    
        BitVecDeinit(&bv);
        return result;
    }
        BitVec bv1 = BitVecFromStr("");
        result     = result && (bv1.length == 0);
        BitVecDeinit(&bv1);
    
        // Test single character
        result     = result && (bv2.length == 1);
        result     = result && (BitVecGet(&bv2, 0) == true);
        BitVecDeinit(&bv2);
    
        // Test long string
        result     = result && (BitVecGet(&bv3, 0) == true);
        result     = result && (BitVecGet(&bv3, 1) == false);
        BitVecDeinit(&bv3);
    
        return result;
        BitVec bv2            = BitVecFromBytes(empty_bytes, 0); // 0 bits
        result                = result && (bv2.length == 0);
        BitVecDeinit(&bv2);
    
        // Test single byte
        BitVec bv3            = BitVecFromBytes(single_byte, 8); // 8 bits from 1 byte
        result                = result && (bv3.length == 8);
        BitVecDeinit(&bv3);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&bv3);
    
        BitVecDeinit(&bv);
        return result;
    }
        BitVec bv2 = BitVecFromInteger(0, 8);     // 8 bits for zero
        result     = result && (bv2.length == 8); // Should be 8 bits
        BitVecDeinit(&bv2);
    
        // Test large integer
        BitVec bv3 = BitVecFromInteger(UINT64_MAX, 64); // 64 bits for max value
        result     = result && (bv3.length == 64);
        BitVecDeinit(&bv3);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&bv3);
    
        BitVecDeinit(&bv);
        return result;
    }
    
            StrDeinit(&str);
            BitVecDeinit(&bv);
        }
                result = result && (recovered == value);
    
                BitVecDeinit(&bv);
            }
        }
            result = result && (recovered_byte == test_bytes[i]);
    
            BitVecDeinit(&bv);
        }
        u64 large_value = BitVecToInteger(&large_bv);
        result          = result && (large_value == 0xFFFFFFFFFFFFFFFF);
        BitVecDeinit(&large_bv);
    
        // Test oversized bitvec to integer (should handle gracefully)
        // Should return some value or 0, but not crash
        result = result && (oversized_value >= 0); // Always true for u64, but documents intent
        BitVecDeinit(&oversized);
    
        // Test zero-length conversions
        result             = result && (empty_bytes[0] == 0xFF); // Should be unchanged
    
        BitVecDeinit(&empty);
    
        return result;
            result       = result && (written == test_cases[i].byte_count);
    
            BitVecDeinit(&bv);
        }
        StrDeinit(&str2);
        StrDeinit(&str3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        StrDeinit(&str3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&bv3);
    
        return result;
        result = result && recovered_pattern_correct;
    
        BitVecDeinit(&large_bv);
        BitVecDeinit(&recovered_bv);
    
        BitVecDeinit(&large_bv);
        BitVecDeinit(&recovered_bv);
    
        // Test string to bitvec with large patterns
        result = result && large_pattern_correct;
    
        BitVecDeinit(&large_from_str);
    
        return result;
    
        // Should handle gracefully
        BitVecDeinit(&bv);
    
        // Test fromBytes with 0 bit length - should return empty bitvec
        BitVec empty_bv       = BitVecFromBytes(dummy_bytes, 0);
        bool   result         = (empty_bv.length == 0);
        BitVecDeinit(&empty_bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&result);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&result);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return test_result;
        result = result && (bv.length == 1000);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (bv.length == 2);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&result_bv, 0) == false);
    
        BitVecDeinit(&result_bv);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&result_bv);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return result;
    }
        result = result && (BitVecGet(&bv, 1) == false);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
    }
        result = result && (BitVecGet(&bv, 2) == true);  // original bit 0
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    }
        result = result && (BitVecGet(&bv, 4) == false);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    
        BitVecDeinit(&bv);
        BitVecDeinit(&original);
        return result;
    }
        test_result = test_result && or_ones;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
    }
        test_result = test_result && xor_commutative;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
        BitVecDeinit(&result2);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
        BitVecDeinit(&result2);
        return test_result;
        BitVecDeinit(&bv2);
        BitVecDeinit(&result1);
        BitVecDeinit(&result2);
        return test_result;
    }
        }
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        BitVecDeinit(&result);
        return test_result;
    }
        BitVecAnd(NULL, &bv, &bv2);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
        return false;
    
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
        return false;
    }
        BitVecAnd(NULL, &bv1, &bv2);
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return false;
    
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        return false;
    }
        BitVecOr(&result, &bv1, NULL);
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    }
        BitVecXor(&result, NULL, &bv1);
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    
        BitVecDeinit(&result);
        BitVecDeinit(&bv1);
        return false;
    }
        BitVecNot(&result, NULL);
    
        BitVecDeinit(&result);
        return false;
    }
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&source);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&source);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
        // Clean up
        BitVecDeinit(&bv);
        BitVecDeinit(&bv2);
    
        return result;
        result = result && (BitVecGet(&bv, 999) == true);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 500) == false);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&empty);
        BitVecDeinit(&source);
    
        BitVecDeinit(&bv);
        BitVecDeinit(&empty);
        BitVecDeinit(&source);
        return result;
        BitVecDeinit(&bv);
        BitVecDeinit(&empty);
        BitVecDeinit(&source);
        return result;
    }
        result = result && (BitVecGet(&bv, 1) == true);  // Second bit
    
        BitVecDeinit(&bv);
        return result;
    }
        BitVecInsertRange(&bv, SIZE_MAX, 1, true);
    
        BitVecDeinit(&bv);
        return false;
    }
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
    
        // Clean up
        BitVecDeinit(&bv);
    
        return result;
        result = result && (BitVecGet(&bv, 999) == (999 % 3 == 0)); // Last
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 0) == true);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 0) == true);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecCountZeros(&bv) == 0);
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, bv.length - 1) == true); // Last bit
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecByteSize(&bv) >= 8); // At least 8 bytes for 64 bits
    
        BitVecDeinit(&bv);
        return result;
    }
        }
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecGet(&bv, 4) == true);  // F(4) = 0 XOR 1 = 1
    
        BitVecDeinit(&bv);
        return result;
    }
        BitVecGet(&bv, 0);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecSet(&bv, 0, true);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecFlip(&bv, 0);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecGet(&bv, 1000);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecSet(&bv, 500, true);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecFlip(&bv, 10);
    
        BitVecDeinit(&bv);
        return false;
    }
        BitVecGet(&bv, SIZE_MAX);
    
        BitVecDeinit(&bv);
        return false;
    }
        result = result && (BitVecFindLast(&bv, false) == SIZE_MAX);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && !BitVecNone(&bv, false);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecLongestRun(&bv, false) == 1);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecFindLast(&bv, true) == 999);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && BitVecAny(&bv, false);
    
        BitVecDeinit(&bv);
        return result;
    }
        result = result && (BitVecLongestRun(&bv, false) == 1);
    
        BitVecDeinit(&bv);
        return result;
    }
        result    = result && (index == 1); // Should find pattern at index 1 (101...)
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        // Depending on the exact source pattern, adjust this test
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (index == 2); // Only occurrence at index 2
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (count == 3); // Should find at 0, 3, 6
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result    = result && (results[0] == 0);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result     = result && (count > 0); // Should find at least some patterns
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        BitVecFindPattern(NULL, &pattern); // Should cause LOG_FATAL
    
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecFindPattern(&source, NULL); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        return true;
    }
        BitVecFindLastPattern(NULL, &pattern); // Should cause LOG_FATAL
    
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecFindLastPattern(&source, NULL); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        return true;
    }
        BitVecFindAllPattern(&source, NULL, results, 10); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        return true;
    }
        BitVecFindAllPattern(&source, &pattern, NULL, 10); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecFindAllPattern(&source, &pattern, results, 0); // Should cause LOG_FATAL
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return true;
    }
        result = result && !BitVecStartsWith(&source, &prefix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    }
        result = result && BitVecStartsWith(&source, &prefix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    }
        result = result && !BitVecEndsWith(&source, &suffix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    }
        result = result && !BitVecEndsWith(&source, &suffix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    }
        result = result && !BitVecContains(&source, &pattern);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && BitVecContainsAt(&source, &pattern, 3);  // Should match
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && !BitVecContainsAt(&source, &pattern, 0); // Pattern too long
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (count == 3);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (pos == 3); // Should find at position 3
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (BitVecGet(&source, 2) == true);
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
    }
        result = result && (BitVecLen(&source) == 6); // 3 * 2 = 6
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
    }
        result = result && BitVecMatches(&source, &pattern, &wildcard);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return result;
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return result;
    }
        result = result && (pos == 0); // Should match 110 with 1 error
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && !BitVecRegexMatch(&source, "111");
    
        BitVecDeinit(&source);
        return result;
    }
    
        for (int i = 0; i < 3; i++) {
            BitVecDeinit(&patterns[i]);
        }
        BitVecDeinit(&source);
            BitVecDeinit(&patterns[i]);
        }
        BitVecDeinit(&source);
        return result;
    }
    
        for (int i = 0; i < 3; i++) {
            BitVecDeinit(&patterns[i]);
        }
        BitVecDeinit(&source);
            BitVecDeinit(&patterns[i]);
        }
        BitVecDeinit(&source);
        return result;
    }
        BitVecPush(&prefix, true);
        BitVecStartsWith(NULL, &prefix);
        BitVecDeinit(&prefix);
        return true;
    }
        BitVecPush(&source, true);
        BitVecStartsWith(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&suffix, true);
        BitVecEndsWith(NULL, &suffix);
        BitVecDeinit(&suffix);
        return true;
    }
        BitVecPush(&source, true);
        BitVecEndsWith(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&pattern, true);
        BitVecContainsAt(NULL, &pattern, 0);
        BitVecDeinit(&pattern);
        return true;
    }
        BitVecPush(&source, true);
        BitVecContainsAt(&source, NULL, 0);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&wildcard, false);
        BitVecMatches(NULL, &pattern, &wildcard);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return true;
        BitVecMatches(NULL, &pattern, &wildcard);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return true;
    }
        BitVecPush(&source, true);
        BitVecRegexMatch(&source, NULL);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&patterns[0], true);
        BitVecPrefixMatch(NULL, patterns, 1);
        BitVecDeinit(&patterns[0]);
        return true;
    }
        BitVecPush(&source, true);
        BitVecPrefixMatch(&source, NULL, 1);
        BitVecDeinit(&source);
        return true;
    }
        BitVecPush(&patterns[0], true);
        BitVecSuffixMatch(NULL, patterns, 1);
        BitVecDeinit(&patterns[0]);
        return true;
    }
        BitVecPush(&source, true);
        BitVecSuffixMatch(&source, NULL, 1);
        BitVecDeinit(&source);
        return true;
    }
        result    = result && (index == 1); // Should find pattern at index 1 (101...)
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        // Depending on the exact source pattern, adjust this test
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (index == 2); // Only occurrence at index 2
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (count == 3); // Should find at 0, 3, 6
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result    = result && (results[0] == 0);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result     = result && (count > 0); // Should find at least some patterns
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && !BitVecStartsWith(&source, &prefix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    }
        result = result && BitVecStartsWith(&source, &prefix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&prefix);
        return result;
    }
        result = result && !BitVecEndsWith(&source, &suffix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    }
        result = result && !BitVecEndsWith(&source, &suffix);
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&suffix);
        return result;
    }
        result = result && (BitVecFindPattern(&source, &pattern) == SIZE_MAX);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && BitVecContainsAt(&source, &pattern, 3);  // Should match
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && !BitVecContainsAt(&source, &pattern, 0); // Pattern too long
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (count == 3);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (pos == 3); // Should find at position 3
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && (BitVecGet(&source, 2) == true);
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
    }
        result = result && (BitVecLen(&source) == 6); // 3 * 2 = 6
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
    
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
        BitVecDeinit(&source);
        BitVecDeinit(&old_pattern);
        BitVecDeinit(&new_pattern);
        return result;
    }
        result = result && BitVecMatches(&source, &pattern, &wildcard);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return result;
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        BitVecDeinit(&wildcard);
        return result;
    }
        result = result && (pos == 0); // Should match 110 with 1 error
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    
        BitVecDeinit(&source);
        BitVecDeinit(&pattern);
        return result;
    }
        result = result && !BitVecRegexMatch(&source, "111");
    
        BitVecDeinit(&source);
        return result;
    }
    
        BitVec  source   = BitVecInit();
        BitVecs patterns = VecInitWithDeepCopy(NULL, BitVecDeinit);
        bool    result   = true;
    
        VecDeinit(&patterns);
        BitVecDeinit(&source);
        return result;
    }
    
        BitVec  source   = BitVecInit();
        BitVecs patterns = VecInitWithDeepCopy(NULL, BitVecDeinit);
        bool    result   = true;
    
        VecDeinit(&patterns);
        BitVecDeinit(&source);
        return result;
    }
    static inline void IntDeinit(Int *value) {
        ValidateInt(value);
        BitVecDeinit(&value->bits);
    }
Last updated on