]> git.donarmstrong.com Git - bamtools.git/blobdiff - src/api/internal/BamReader_p.cpp
Minor cleanup
[bamtools.git] / src / api / internal / BamReader_p.cpp
index 441e8c0d7cc1f0b63c27aaaceb383044c83cfec7..65b19f330a60c7fe9ac00cc1b992a98ce7b186d6 100644 (file)
@@ -1,9 +1,8 @@
 // ***************************************************************************
 // BamReader_p.cpp (c) 2009 Derek Barnett
 // Marth Lab, Department of Biology, Boston College
-// All rights reserved.
 // ---------------------------------------------------------------------------
-// Last modified: 21 March 2011 (DB)
+// Last modified: 10 May 2011 (DB)
 // ---------------------------------------------------------------------------
 // Provides the basic functionality for reading BAM files
 // ***************************************************************************
@@ -295,7 +294,7 @@ bool BamReaderPrivate::LoadReferenceData(void) {
 }
 
 bool BamReaderPrivate::LocateIndex(const BamIndex::IndexType& preferredType) {
-    return m_randomAccessController.LocateIndex(m_filename, preferredType);
+    return m_randomAccessController.LocateIndex(this, preferredType);
 }
 
 // opens BAM file (and index)
@@ -306,16 +305,24 @@ bool BamReaderPrivate::Open(const string& filename) {
         Close();
 
     // attempt to open BgzfStream for reading
-    if ( !m_stream.Open(filename, "rb") )
+    if ( !m_stream.Open(filename, "rb") ) {
+        cerr << "BamReader ERROR: Could not open BGZF stream for " << filename << endl;
         return false;
+    }
 
     // attempt to load header data
-    if ( !LoadHeaderData() )
+    if ( !LoadHeaderData() ) {
+        cerr << "BamReader ERROR: Could not load header data for " << filename << endl;
+        Close();
         return false;
+    }
 
     // attempt to load reference data
-    if ( !LoadReferenceData() )
+    if ( !LoadReferenceData() ) {
+        cerr << "BamReader ERROR: Could not load reference data for " << filename << endl;
+        Close();
         return false;
+    }
 
     // if all OK, store filename & offset of first alignment
     m_filename = filename;
@@ -326,7 +333,7 @@ bool BamReaderPrivate::Open(const string& filename) {
 }
 
 bool BamReaderPrivate::OpenIndex(const std::string& indexFilename) {
-    return m_randomAccessController.OpenIndex(indexFilename);
+    return m_randomAccessController.OpenIndex(indexFilename, this);
 }
 
 // returns BAM file pointer to beginning of alignment data
@@ -349,6 +356,10 @@ bool BamReaderPrivate::Rewind(void) {
     return m_stream.Seek(m_alignmentsBeginOffset);
 }
 
+bool BamReaderPrivate::Seek(const int64_t& position) {
+    return m_stream.Seek(position);
+}
+
 void BamReaderPrivate::SetIndex(BamIndex* index) {
     m_randomAccessController.SetIndex(index);
 }
@@ -364,7 +375,6 @@ bool BamReaderPrivate::SetRegion(const BamRegion& region) {
     return m_randomAccessController.SetRegion(this, region, m_references.size());
 }
 
-// returns handle to internal BgzfStream
-BgzfStream* BamReaderPrivate::Stream(void) {
-    return &m_stream;
+int64_t BamReaderPrivate::Tell(void) const {
+    return m_stream.Tell();
 }