Skip to content

BitVecRuns

Description

Vec-flavoured handle for a sequence of BitVecRuns. Consumed by the Vec form of BitVecRunLengths.

Usage example (Cross-references)

Usage examples (Cross-references)
        ///
        u64  bitvec_run_lengths_raw(BitVec *bv, u64 *runs, bool *values, u64 max_runs);
        bool bitvec_run_lengths_vec(BitVec *bv, BitVecRuns *out);
    
    #define BitVecRunLengths(...)                     OVERLOAD(BitVecRunLengths, __VA_ARGS__)
    }
    
    bool bitvec_run_lengths_vec(BitVec *bv, BitVecRuns *out) {
        ValidateBitVec(bv);
        if (!out || !out->allocator) {
        ValidateBitVec(bv);
        if (!out || !out->allocator) {
            LOG_FATAL("output BitVecRuns is NULL or uninitialized");
        }
        BitVecPush(&bv, true);
    
        BitVecRuns runs   = VecInitT(runs, base);
        bool       result = BitVecRunLengths(&bv, &runs);
        result            = result && VecLen(&runs) == 5;
        WriteFmt("Testing BitVecRunLengths (vec) with NULL bitvector\n");
    
        BitVecRuns runs = VecInitT(runs, base);
        BitVecRunLengths(NULL, &runs);
        return true; // Should never reach here.
Last updated on