]> git.donarmstrong.com Git - bamtools.git/blobdiff - src/api/internal/BamWriter_p.h
Major update to BamTools version 1.0
[bamtools.git] / src / api / internal / BamWriter_p.h
index d9314053e9bfd8fdee7d5134f24d02f3f3f61f49..dd2b0fe1178ce8c2c52a9b2b4b0406ba9a81c122 100644 (file)
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College
 // All rights reserved.
 // ---------------------------------------------------------------------------
-// Last modified: 19 November 2010 (DB)
+// Last modified: 24 February 2011 (DB)
 // ---------------------------------------------------------------------------
 // Provides the basic functionality for producing BAM files
 // ***************************************************************************
 // We mean it.
 
 #include <api/BamAux.h>
-#include <api/BGZF.h>
+#include <api/internal/BgzfStream_p.h>
 #include <string>
 #include <vector>
 
 namespace BamTools {
-
-class SamHeader;
-
 namespace Internal {
 
 class BamWriterPrivate {
 
     // ctor & dtor
     public:
-       BamWriterPrivate(void);
-       ~BamWriterPrivate(void);
+        BamWriterPrivate(void);
+        ~BamWriterPrivate(void);
 
-    // "public" interface to BamWriter
+    // interface methods
     public:
-       void Close(void);
-       bool Open(const std::string& filename,
-                 const std::string& samHeader,
-                 const BamTools::RefVector& referenceSequences,
-                 bool isWriteUncompressed);
-       void SaveAlignment(const BamAlignment& al);
+        void Close(void);
+        bool IsOpen(void) const;
+        bool Open(const std::string& filename,
+                  const std::string& samHeaderText,
+                  const BamTools::RefVector& referenceSequences);
+        void SaveAlignment(const BamAlignment& al);
+        void SetWriteCompressed(bool ok);
 
-    // internal methods
+    // 'internal' methods
     public:
-       const unsigned int CalculateMinimumBin(const int begin, int end) const;
-       void CreatePackedCigar(const std::vector<BamTools::CigarOp>& cigarOperations, std::string& packedCigar);
-       void EncodeQuerySequence(const std::string& query, std::string& encodedQuery);
+        unsigned int CalculateMinimumBin(const int begin, int end) const;
+        void CreatePackedCigar(const std::vector<BamTools::CigarOp>& cigarOperations, std::string& packedCigar);
+        void EncodeQuerySequence(const std::string& query, std::string& encodedQuery);
+        void WriteMagicNumber(void);
+        void WriteReferences(const BamTools::RefVector& referenceSequences);
+        void WriteSamHeaderText(const std::string& samHeaderText);
 
     // data members
-    public:
-       BgzfData mBGZF;
-       bool IsBigEndian;
+    private:
+        BgzfStream m_stream;
+        bool m_isBigEndian;
 };
 
 } // namespace Internal