X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2Finternal%2FBgzfStream_p.h;h=88d7472eeebfa81bed6cd2021841a2534877b7ac;hb=8b4c010999a8d0c482d84bbf17c98dc4bbae02b7;hp=7ebd647e339819e7544176a548e5694293b8f37f;hpb=2e049ed7f28881bce09653e60f5aea54bfd7afbf;p=bamtools.git diff --git a/src/api/internal/BgzfStream_p.h b/src/api/internal/BgzfStream_p.h index 7ebd647..88d7472 100644 --- a/src/api/internal/BgzfStream_p.h +++ b/src/api/internal/BgzfStream_p.h @@ -2,7 +2,7 @@ // BgzfStream_p.h (c) 2011 Derek Barnett // Marth Lab, Department of Biology, Boston College // --------------------------------------------------------------------------- -// Last modified: 5 April 2011(DB) +// Last modified: 10 October 2011(DB) // --------------------------------------------------------------------------- // Based on BGZF routines developed at the Broad Institute. // Provides the basic functionality for reading & writing BGZF files @@ -22,11 +22,8 @@ // // We mean it. -#include -#include -#include "zlib.h" -#include -#include +#include "api/api_global.h" +#include "api/IBamIODevice.h" #include namespace BamTools { @@ -43,12 +40,16 @@ class BgzfStream { public: // closes BGZF file void Close(void); - // opens the BGZF file (mode is either "rb" for reading, or "wb" for writing) - void Open(const std::string& filename, const char* mode); + // returns true if BgzfStream open for IO + bool IsOpen(void) const; + // opens the BGZF file + void Open(const std::string& filename, const IBamIODevice::OpenMode mode); // reads BGZF data into a byte buffer size_t Read(char* data, const size_t dataLength); // seek to position in BGZF file void Seek(const int64_t& position); + // sets IO device (closes previous, if any, but does not attempt to open) + void SetIODevice(IBamIODevice* device); // enable/disable compressed output void SetWriteCompressed(bool ok); // get file position in BGZF file @@ -74,22 +75,20 @@ class BgzfStream { // data members public: - unsigned int BlockLength; - unsigned int BlockOffset; - int64_t BlockAddress; - bool IsOpen; - bool IsWriteOnly; - bool IsWriteCompressed; + unsigned int m_blockLength; + unsigned int m_blockOffset; + uint64_t m_blockAddress; + + bool m_isWriteCompressed; + IBamIODevice* m_device; struct RaiiWrapper { RaiiWrapper(void); ~RaiiWrapper(void); char* UncompressedBlock; char* CompressedBlock; - FILE* Stream; }; RaiiWrapper Resources; - }; } // namespace Internal