BamIndex.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef BAM_INDEX_H
00011 #define BAM_INDEX_H
00012
00013 #include "api/api_global.h"
00014 #include "api/BamAux.h"
00015 #include <string>
00016
00017 namespace BamTools {
00018
00019 namespace Internal {
00020 class BamReaderPrivate;
00021 }
00022
00034 class API_EXPORT BamIndex {
00035
00036
00037 public:
00038
00039
00040 enum IndexType { BAMTOOLS = 0
00041 , STANDARD
00042 };
00043
00044
00045 public:
00046 BamIndex(Internal::BamReaderPrivate* reader) : m_reader(reader) { }
00047 virtual ~BamIndex(void) { }
00048
00049
00050 public:
00051
00052 virtual bool Create(void) =0;
00053
00054
00055 std::string GetErrorString(void) { return m_errorString; }
00056
00057
00058 virtual bool HasAlignments(const int& referenceID) const =0;
00059
00060
00061
00062
00063
00064 virtual bool Jump(const BamTools::BamRegion& region, bool* hasAlignmentsInRegion) =0;
00065
00066
00067 virtual bool Load(const std::string& filename) =0;
00068
00069
00070 virtual BamIndex::IndexType Type(void) const =0;
00071
00073
00074
00075 protected:
00076 void SetErrorString(const std::string& where, const std::string& what) const {
00077 m_errorString = where + ": " + what;
00078 }
00079
00080
00081 protected:
00082 Internal::BamReaderPrivate* m_reader;
00083 mutable std::string m_errorString;
00084
00086 };
00087
00088 }
00089
00090 #endif // BAM_INDEX_H