Gamgee
You miserable little maggot. I'll stove your head in!
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
read_bases.h
Go to the documentation of this file.
1 #ifndef __gamgee__read_bases__
2 #define __gamgee__read_bases__
3 
4 #include "htslib/sam.h"
5 
6 #include <memory>
7 #include <map>
8 
9 namespace gamgee {
10 
16 enum class Base { A = 1, C = 2, G = 4, T = 8, N = 15 };
17 
26 class ReadBases {
27 public:
28  explicit ReadBases(const std::shared_ptr<bam1_t>& sam_record);
29  ReadBases(const ReadBases& other);
30  ReadBases(ReadBases&& other) noexcept;
31  ReadBases& operator=(const ReadBases& other);
32  ReadBases& operator=(ReadBases&& other) noexcept;
33  ~ReadBases() = default;
34 
35  Base operator[](const uint32_t index) const;
36  uint32_t size() const { return m_num_bases; };
37  std::string to_string() const;
38 
39 private:
40  std::shared_ptr<bam1_t> m_sam_record;
41  uint8_t* m_bases;
42  uint32_t m_num_bases;
43 
44  static const std::map<Base, const char*> base_to_string_map;
45 };
46 
47 }
48 
49 #endif /* __gamgee__read_bases__ */
Base
simple enum to hold all valid bases in the SAM format
Definition: read_bases.h:16
std::string to_string() const
number of base qualities in the container
Definition: read_bases.cpp:88
Base operator[](const uint32_t index) const
use freely as you would an array.
Definition: read_bases.cpp:79
~ReadBases()=default
default destruction is sufficient, since our shared_ptr will handle deallocation
ReadBases(const std::shared_ptr< bam1_t > &sam_record)
creates a ReadBases object that points to htslib memory already allocated
Definition: read_bases.cpp:19
uint32_t size() const
Definition: read_bases.h:36
ReadBases & operator=(const ReadBases &other)
creates a deep copy of a ReadBases object
Definition: read_bases.cpp:52
Utility class to handle the memory management of the sam record object for read bases.
Definition: read_bases.h:26