1 #ifndef gamgee__sam_reader__
2 #define gamgee__sam_reader__
8 #include "htslib/sam.h"
43 template<
class ITERATOR>
54 m_sam_file_ptr {sam_open(filename.empty() ?
"-" : filename.c_str(),
"r")},
59 m_sam_file_ptr {std::move(other.m_sam_file_ptr)},
60 m_sam_header_ptr {std::move(other.m_sam_header_ptr)}
67 sam_close(m_sam_file_ptr);
82 return ITERATOR{m_sam_file_ptr, m_sam_header_ptr};
97 samFile* m_sam_file_ptr;
98 const std::shared_ptr<bam_hdr_t> m_sam_header_ptr;
ITERATOR end()
creates a ITERATOR with a nullified input stream (needed by for-each loop)
Definition: sam_reader.h:90
~SamReader()
closes the file stream if there is one (in case we are reading a sam file)
Definition: sam_reader.h:66
Utility class to read a SAM/BAM/CRAM file with an appropriate Sam iterator from a stream (e...
Definition: sam_reader.h:44
shared_ptr< bam_hdr_t > make_shared_sam_header(bam_hdr_t *sam_header_ptr)
wraps a pre-allocated bam_hdr_t in a shared_ptr with correct deleter
Definition: hts_memory.cpp:22
SamHeader header()
Definition: sam_reader.h:94
SamReader(SamReader &&other)
Definition: sam_reader.h:58
ITERATOR begin()
creates a ITERATOR pointing at the start of the input stream (needed by for-each loop) ...
Definition: sam_reader.h:81
SamReader(const std::string &filename)
reads through all records in a file ( or sam) parsing them into Sam objects
Definition: sam_reader.h:53