X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2Finternal%2FBamHeader_p.h;h=42af68ce4f34dc1a4c2b70610469f2f2d9710d21;hb=2e1822c9ed231b25fd474117a01a1492d4209fa4;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..42af68c 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: 6 October 2011 (DB) // --------------------------------------------------------------------------- // Provides the basic functionality for handling BAM headers. // *************************************************************************** @@ -25,29 +24,43 @@ #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