X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2Finternal%2FBamHeader_p.h;h=499ad96deaa15571c5235d946ecf2fe20bb8ad6d;hb=9f1ce8c47aeadb6dc1320b52ee671c3341b97935;hp=352ce88f53eaa9940a8eb3ec08e8397837dc1f64;hpb=90f57dc99f0af143f50a0afef447b50048a556f3;p=bamtools.git diff --git a/src/api/internal/BamHeader_p.h b/src/api/internal/BamHeader_p.h index 352ce88..499ad96 100644 --- a/src/api/internal/BamHeader_p.h +++ b/src/api/internal/BamHeader_p.h @@ -1,9 +1,8 @@ // *************************************************************************** // BamHeader_p.h (c) 2010 Derek Barnett // Marth Lab, Department of Biology, Boston College -// All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 25 December 2010 (DB) +// Last modified: 10 October 2011 (DB) // --------------------------------------------------------------------------- // Provides the basic functionality for handling BAM headers. // *************************************************************************** @@ -21,33 +20,47 @@ // // We mean it. -#include +#include "api/SamHeader.h" #include namespace BamTools { - -class BgzfData; - namespace Internal { +class BgzfStream; + class BamHeader { + // ctor & dtor public: BamHeader(void); ~BamHeader(void); + // BamHeader interface public: + // clear SamHeader data void Clear(void); + // return true if SamHeader data is valid bool IsValid(void) const; - bool Load(BgzfData* stream); - - public: + // load BAM header ('magic number' and SAM header text) from BGZF stream + // returns true if all OK + void Load(BgzfStream* stream); + // returns (editable) copy of SamHeader data object SamHeader ToSamHeader(void) const; + // returns SAM-formatted string of header data std::string ToString(void) const; + // internal methods + private: + // reads magic number from BGZF stream + void CheckMagicNumber(BgzfStream* stream); + // reads SAM header length from BGZF stream, stores it in @length + void ReadHeaderLength(BgzfStream* stream, uint32_t& length); + // reads SAM header text from BGZF stream, stores in SamHeader object + void ReadHeaderText(BgzfStream* stream, const uint32_t& length); + + // data members private: - struct BamHeaderPrivate; - BamHeaderPrivate* d; + SamHeader m_header; }; } // namespace Internal