X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2FBamIndex.h;h=067244ec2d2fd845458d7868dbee553771388be7;hb=2e1822c9ed231b25fd474117a01a1492d4209fa4;hp=a52922e76b6d3f0bc4272ba142b7215a02b9c765;hpb=72f5b82ad353b4cc9d6f8153f1ad19cc387b9597;p=bamtools.git diff --git a/src/api/BamIndex.h b/src/api/BamIndex.h index a52922e..067244e 100644 --- a/src/api/BamIndex.h +++ b/src/api/BamIndex.h @@ -2,7 +2,7 @@ // BamIndex.h (c) 2009 Derek Barnett // Marth Lab, Department of Biology, Boston College // --------------------------------------------------------------------------- -// Last modified: 5 April 2011 (DB) +// Last modified: 6 October 2011 (DB) // --------------------------------------------------------------------------- // Provides basic BAM index interface // *************************************************************************** @@ -56,22 +56,36 @@ class API_EXPORT BamIndex { // index interface public: // builds index from associated BAM file & writes out to index file - virtual bool Create(void) =0; // creates index file from BAM file + virtual bool Create(void) =0; + + // returns a human-readable description of the last error encountered + std::string GetErrorString(void) { return m_errorString; } + // returns whether reference has alignments or no virtual bool HasAlignments(const int& referenceID) const =0; + // attempts to use index data to jump to @region, returns success/fail // a "successful" jump indicates no error, but not whether this region has data // * thus, the method sets a flag to indicate whether there are alignments // available after the jump position virtual bool Jump(const BamTools::BamRegion& region, bool* hasAlignmentsInRegion) =0; + // loads existing data from file into memory virtual bool Load(const std::string& filename) =0; + // change the index caching behavior virtual void SetCacheMode(const BamIndex::IndexCacheMode& mode) =0; + // internal methods + protected: + void SetErrorString(const std::string& where, const std::string& what) const { + m_errorString = where + ": " + what; + } + // data members protected: - Internal::BamReaderPrivate* m_reader; // copy, not ownedprivate: + Internal::BamReaderPrivate* m_reader; // copy, not owned + mutable std::string m_errorString; }; } // namespace BamTools