4 #include <api/api_global.h>
9 class API_EXPORT IBamIODevice {
12 public: enum OpenMode { NotOpen = 0
20 virtual ~IBamIODevice(void);
22 // IBamIODevice interface
24 virtual void Close(void) =0;
25 virtual bool IsRandomAccess(void) const =0;
26 virtual bool Open(const OpenMode mode) =0;
27 virtual size_t Read(char* data, const unsigned int numBytes) =0;
28 virtual bool Seek(const int64_t& position) =0;
29 virtual int64_t Tell(void) const =0;
30 virtual size_t Write(const char* data, const unsigned int numBytes) =0;
32 virtual std::string ErrorString(void);
33 virtual bool IsOpen(void) const;
34 virtual OpenMode Mode(void) const;
38 void SetErrorString(const std::string& errorString);
43 std::string m_errorString;
47 IBamIODevice::IBamIODevice(void)
48 : m_mode(IBamIODevice::NotOpen)
52 IBamIODevice::~IBamIODevice(void) { }
55 std::string IBamIODevice::ErrorString(void) {
56 std::string e = m_errorString;
57 m_errorString.clear();
62 bool IBamIODevice::IsOpen(void) const {
63 return ( m_mode != IBamIODevice::NotOpen );
67 IBamIODevice::OpenMode IBamIODevice::Mode(void) const {
72 void IBamIODevice::SetErrorString(const std::string& errorString) {
73 m_errorString = errorString;
76 } // namespace BamTools
78 #endif // IBAMIODEVICE_H