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