]> git.donarmstrong.com Git - bamtools.git/blob - src/api/BamWriter.h
56ac30142949c034c209b2e872e70aed9bebb3fa
[bamtools.git] / src / api / BamWriter.h
1 // ***************************************************************************\r
2 // BamWriter.h (c) 2009 Michael Str�mberg, Derek Barnett\r
3 // Marth Lab, Department of Biology, Boston College\r
4 // ---------------------------------------------------------------------------\r
5 // Last modified: 4 March 2011 (DB)\r
6 // ---------------------------------------------------------------------------\r
7 // Provides the basic functionality for producing BAM files\r
8 // ***************************************************************************\r
9 \r
10 #ifndef BAMWRITER_H\r
11 #define BAMWRITER_H\r
12 \r
13 #include <api/api_global.h>\r
14 #include <api/BamAux.h>\r
15 #include <string>\r
16 \r
17 namespace BamTools {\r
18 \r
19 class BamAlignment;\r
20 class SamHeader;\r
21 \r
22 namespace Internal {\r
23     class BamWriterPrivate;\r
24 } // namespace Internal\r
25 \r
26 class API_EXPORT BamWriter {\r
27 \r
28     public: enum CompressionMode { Compressed = 0\r
29                                  , Uncompressed\r
30                                  };\r
31 \r
32     // ctor & dtor\r
33     public:\r
34         BamWriter(void);\r
35         ~BamWriter(void);\r
36 \r
37     // public interface\r
38     public:\r
39         //  closes the current BAM file\r
40         void Close(void);\r
41         // returns true if BAM file is open for writing\r
42         bool IsOpen(void) const;\r
43         // opens a BAM file for writing\r
44         bool Open(const std::string& filename, \r
45                   const std::string& samHeaderText,\r
46                   const RefVector& referenceSequences);\r
47         // opens a BAM file for writing\r
48         bool Open(const std::string& filename,\r
49                   const SamHeader& samHeader,\r
50                   const RefVector& referenceSequences);\r
51         // saves the alignment to the alignment archive\r
52         void SaveAlignment(const BamAlignment& alignment);\r
53         // sets the output compression mode\r
54         void SetCompressionMode(const CompressionMode& compressionMode);\r
55 \r
56     // private implementation\r
57     private:\r
58         Internal::BamWriterPrivate* d;\r
59 };\r
60 \r
61 } // namespace BamTools\r
62 \r
63 #endif // BAMWRITER_H\r