- // TODO perhaps, for legibility, I should use a struct to wrap them all up\r
- // But this may actually make things more confusing, as I'm only\r
- // operating on them all simultaneously during GetNextAlignment\r
- // calls.\r
- // all these vectors are ordered the same\r
- // readers.at(N) refers to the same reader as alignments.at(N) and readerStates.at(N)\r
- vector<BamReader*> readers; // the set of readers which we operate on\r
- vector<BamAlignment*> alignments; // the equivalent set of alignments we use to step through the files\r
- vector<BamReaderState> readerStates; // states of the various readers\r
- // alignment position?\r
+\r
+ // the set of readers and alignments which we operate on, maintained throughout the life of this class\r
+ vector<pair<BamReader*, BamAlignment*> > readers;\r
+\r
+ // readers and alignments sorted by reference id and position, to keep track of the lowest (next) alignment\r
+ // when a reader reaches EOF, its entry is removed from this index\r
+ AlignmentIndex alignments;\r
+\r