/** * range.h */ #ifndef RANGE_H_ #define RANGE_H_ #include #include "assert_helpers.h" #include "btypes.h" #include "ds.h" /** * A range along with the alignment it represents. */ struct Range { Range() : top(OFF_MASK), bot(0), cost(0), stratum(0), numMms(0), fw(true), mate1(true), ebwt(NULL) { mms.clear(); refcs.clear(); } bool valid() const { return top < OFF_MASK; } void invalidate() { top = OFF_MASK; } TIndexOffU top; // top of range TIndexOffU bot; // bottom of range uint16_t cost; // cost uint32_t stratum; // stratum uint32_t numMms; // # mismatches bool fw; // the forward orientation of read aligned? bool mate1; // read aligned is #1 mate/single? EList mms; // list of positions with mismatches EList refcs; // reference characters at mismatch positions // const Ebwt > *ebwt; const Ebwt *ebwt; bool repOk() const { assert_eq(refcs.size(), mms.size()); assert_eq(numMms, mms.size()); assert_leq(stratum, numMms); return true; } }; #endif /* RANGE_H_ */