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