X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2Finternal%2FBamRandomAccessController_p.h;h=43b6fb038c18c196e78b79928e3f4de35d65425b;hb=9f1ce8c47aeadb6dc1320b52ee671c3341b97935;hp=e541cdf5a332a295b2b17ec74f1d4948b0504dfa;hpb=8c80d760637f8df39262683cd2570f0589423d36;p=bamtools.git diff --git a/src/api/internal/BamRandomAccessController_p.h b/src/api/internal/BamRandomAccessController_p.h index e541cdf..43b6fb0 100644 --- a/src/api/internal/BamRandomAccessController_p.h +++ b/src/api/internal/BamRandomAccessController_p.h @@ -1,9 +1,8 @@ // *************************************************************************** // BamRandomAccessController_p.h (c) 2011 Derek Barnett // Marth Lab, Department of Biology, Boston College -// All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 24 February 2011(DB) +// Last modified: 10 October 2011(DB) // --------------------------------------------------------------------------- // Manages random access operations in a BAM file // *************************************************************************** @@ -21,8 +20,8 @@ // // We mean it. -#include -#include +#include "api/BamAux.h" +#include "api/BamIndex.h" namespace BamTools { @@ -45,47 +44,50 @@ class BamRandomAccessController { BamRandomAccessController(void); ~BamRandomAccessController(void); - // general interface + // BamRandomAccessController interface public: - void Close(void); - // index operations - public: - // + // index methods void ClearIndex(void); bool CreateIndex(BamReaderPrivate* reader, const BamIndex::IndexType& type); bool HasIndex(void) const; bool IndexHasAlignmentsForReference(const int& refId); - bool LocateIndex(const std::string& bamFilename, const BamIndex::IndexType& preferredType); - bool OpenIndex(const std::string& indexFilename); + bool LocateIndex(BamReaderPrivate* reader, const BamIndex::IndexType& preferredType); + bool OpenIndex(const std::string& indexFilename, BamReaderPrivate* reader); void SetIndex(BamIndex* index); void SetIndexCacheMode(const BamIndex::IndexCacheMode& mode); - // region operations - public: + // region methods void ClearRegion(void); bool HasRegion(void) const; RegionState AlignmentState(const BamAlignment& alignment) const; bool RegionHasAlignments(void) const; - bool SetRegion(BamReaderPrivate* reader, - const BamRegion& region, - const int& referenceCount); + bool SetRegion(const BamRegion& region, const int& referenceCount); - // 'internal' methods - public: + // general methods + void Close(void); + std::string GetErrorString(void) const; + + // internal methods + private: // adjusts requested region if necessary (depending on where data actually begins) void AdjustRegion(const int& referenceCount); + // error-string handling + void SetErrorString(const std::string& where, const std::string& what); // data members private: // index data - BamIndex* m_index; // owns index, not a copy - responsible for deleting + BamIndex* m_index; // owns the index, not a copy - responsible for deleting BamIndex::IndexCacheMode m_indexCacheMode; // region data BamRegion m_region; bool m_hasAlignmentsInRegion; + + // general data + std::string m_errorString; }; } // namespace Internal