]> git.donarmstrong.com Git - bamtools.git/blobdiff - src/api/internal/BamHeader_p.h
Cleaned up intra-API includes & moved version numbers to 2.0.0
[bamtools.git] / src / api / internal / BamHeader_p.h
index 352ce88f53eaa9940a8eb3ec08e8397837dc1f64..499ad96deaa15571c5235d946ecf2fe20bb8ad6d 100644 (file)
@@ -1,9 +1,8 @@
 // ***************************************************************************
 // BamHeader_p.h (c) 2010 Derek Barnett
 // Marth Lab, Department of Biology, Boston College
-// All rights reserved.
 // ---------------------------------------------------------------------------
-// Last modified: 25 December 2010 (DB)
+// Last modified: 10 October 2011 (DB)
 // ---------------------------------------------------------------------------
 // Provides the basic functionality for handling BAM headers.
 // ***************************************************************************
 //
 // We mean it.
 
-#include <api/SamHeader.h>
+#include "api/SamHeader.h"
 #include <string>
 
 namespace BamTools {
-
-class BgzfData;
-
 namespace Internal {
 
+class BgzfStream;
+
 class BamHeader {
 
+    // ctor & dtor
     public:
         BamHeader(void);
         ~BamHeader(void);
 
+    // BamHeader interface
     public:
+        // clear SamHeader data
         void Clear(void);
+        // return true if SamHeader data is valid
         bool IsValid(void) const;
-        bool Load(BgzfData* stream);
-
-    public:
+        // load BAM header ('magic number' and SAM header text) from BGZF stream
+        // returns true if all OK
+        void Load(BgzfStream* stream);
+        // returns (editable) copy of SamHeader data object
         SamHeader ToSamHeader(void) const;
+        // returns SAM-formatted string of header data
         std::string ToString(void) const;
 
+    // internal methods
+    private:
+        // reads magic number from BGZF stream
+        void CheckMagicNumber(BgzfStream* stream);
+        // reads SAM header length from BGZF stream, stores it in @length
+        void ReadHeaderLength(BgzfStream* stream, uint32_t& length);
+        // reads SAM header text from BGZF stream, stores in SamHeader object
+        void ReadHeaderText(BgzfStream* stream, const uint32_t& length);
+
+    // data members
     private:
-        struct BamHeaderPrivate;
-        BamHeaderPrivate* d;
+        SamHeader m_header;
 };
 
 } // namespace Internal