]> git.donarmstrong.com Git - bamtools.git/blob - src/api/BamWriter.h
6767a1cb9beafedb2f7f1795bb5a151dda0cf216
[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: 10 October 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 //! \cond\r
23 namespace Internal {\r
24     class BamWriterPrivate;\r
25 } // namespace Internal\r
26 //! \endcond\r
27 \r
28 class API_EXPORT BamWriter {\r
29 \r
30     // enums\r
31     public:\r
32         enum CompressionMode { Compressed = 0\r
33                              , Uncompressed\r
34                              };\r
35 \r
36     // ctor & dtor\r
37     public:\r
38         BamWriter(void);\r
39         ~BamWriter(void);\r
40 \r
41     // public interface\r
42     public:\r
43         //  closes the current BAM file\r
44         void Close(void);\r
45         // returns a human-readable description of the last error that occurred\r
46         std::string GetErrorString(void) const;\r
47         // returns true if BAM file is open for writing\r
48         bool IsOpen(void) const;\r
49         // opens a BAM file for writing\r
50         bool Open(const std::string& filename, \r
51                   const std::string& samHeaderText,\r
52                   const RefVector& referenceSequences);\r
53         // opens a BAM file for writing\r
54         bool Open(const std::string& filename,\r
55                   const SamHeader& samHeader,\r
56                   const RefVector& referenceSequences);\r
57         // saves the alignment to the alignment archive\r
58         bool SaveAlignment(const BamAlignment& alignment);\r
59         // sets the output compression mode\r
60         void SetCompressionMode(const BamWriter::CompressionMode& compressionMode);\r
61 \r
62     // private implementation\r
63     private:\r
64         Internal::BamWriterPrivate* d;\r
65 };\r
66 \r
67 } // namespace BamTools\r
68 \r
69 #endif // BAMWRITER_H\r