X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2FBamIndex.h;h=fd41f6912b0fd6006be53ef5bce55d715ca05056;hb=1dd0e1cb8a8557dfb463bf4323f121614cb6fcb2;hp=a52922e76b6d3f0bc4272ba142b7215a02b9c765;hpb=c1fc1c5423ca73a1b5bcbe790650821d73e5959c;p=bamtools.git diff --git a/src/api/BamIndex.h b/src/api/BamIndex.h index a52922e..fd41f69 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: 10 October 2011 (DB) // --------------------------------------------------------------------------- // Provides basic BAM index interface // *************************************************************************** @@ -10,8 +10,8 @@ #ifndef BAM_INDEX_H #define BAM_INDEX_H -#include -#include +#include "api/api_global.h" +#include "api/BamAux.h" #include namespace BamTools { @@ -29,19 +29,12 @@ namespace Internal { It is exposed to the public API to allow advanced users to implement their own custom indexing schemes. - - More documentation on methods & enums coming soon. */ class API_EXPORT BamIndex { // enums public: - // specify index-caching behavior - enum IndexCacheMode { FullIndexCaching = 0 // store entire index file contents in memory - , LimitedIndexCaching // store only index data for current reference - , NoIndexCaching // do not store any index data between jumps - }; // list of supported BamIndex types enum IndexType { BAMTOOLS = 0 @@ -56,22 +49,40 @@ 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; + + // returns the 'type' enum for derived index format + virtual BamIndex::IndexType Type(void) const =0; + + //! \cond + + // 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; + + //! \endcond }; } // namespace BamTools