// BamMultiReader_p.cpp (c) 2010 Derek Barnett, Erik Garrison
// Marth Lab, Department of Biology, Boston College
// ---------------------------------------------------------------------------
-// Last modified: 7 October 2011 (DB)
+// Last modified: 14 October 2011 (DB)
// ---------------------------------------------------------------------------
// Functionality for simultaneously reading multiple BAM files
// *************************************************************************
-#include <api/BamAlignment.h>
-#include <api/BamMultiReader.h>
-#include <api/SamConstants.h>
-#include <api/algorithms/Sort.h>
-#include <api/internal/BamMultiReader_p.h>
+#include "api/BamAlignment.h"
+#include "api/BamMultiReader.h"
+#include "api/SamConstants.h"
+#include "api/algorithms/Sort.h"
+#include "api/internal/BamMultiReader_p.h"
using namespace BamTools;
using namespace BamTools::Internal;
// returns BAM file pointers to beginning of alignment data & resets alignment cache
bool BamMultiReaderPrivate::Rewind(void) {
+ // skip if no readers open
+ if ( m_readers.empty() )
+ return true;
+
// attempt to rewind files
if ( !RewindReaders() ) {
const string currentError = m_errorString;
m_errorString = where + SEPARATOR + what;
}
-// sets the index caching mode on the readers
-void BamMultiReaderPrivate::SetIndexCacheMode(const BamIndex::IndexCacheMode mode) {
-
- // iterate over readers
- vector<MergeItem>::iterator readerIter = m_readers.begin();
- vector<MergeItem>::iterator readerEnd = m_readers.end();
- for ( ; readerIter != readerEnd; ++readerIter ) {
- MergeItem& item = (*readerIter);
- BamReader* reader = item.Reader;
- if ( reader == 0 ) continue;
-
- // set reader's index cache mode
- reader->SetIndexCacheMode(mode);
- }
-}
-
bool BamMultiReaderPrivate::SetRegion(const BamRegion& region) {
// NB: While it may make sense to track readers in which we can