4 #include <api/api_global.h>
9 class API_EXPORT IBamIODevice {
12 public: enum OpenMode { NotOpen = 0
20 virtual ~IBamIODevice(void);
22 // IBamIODevice interface
26 virtual void Close(void) =0;
27 virtual bool IsRandomAccess(void) const =0;
28 virtual bool Open(const OpenMode mode) =0;
29 virtual size_t Read(char* data, const unsigned int numBytes) =0;
30 virtual bool Seek(const int64_t& position) =0;
31 virtual int64_t Tell(void) const =0;
32 virtual size_t Write(const char* data, const unsigned int numBytes) =0;
34 // default implementation provided
35 virtual std::string ErrorString(void);
36 virtual bool IsOpen(void) const;
37 virtual OpenMode Mode(void) const;
41 void SetErrorString(const std::string& errorString);
46 std::string m_errorString;
50 IBamIODevice::IBamIODevice(void)
51 : m_mode(IBamIODevice::NotOpen)
55 IBamIODevice::~IBamIODevice(void) { }
58 std::string IBamIODevice::ErrorString(void) {
59 std::string e = m_errorString;
60 m_errorString.clear();
65 bool IBamIODevice::IsOpen(void) const {
66 return ( m_mode != IBamIODevice::NotOpen );
70 IBamIODevice::OpenMode IBamIODevice::Mode(void) const {
75 void IBamIODevice::SetErrorString(const std::string& errorString) {
76 m_errorString = errorString;
79 } // namespace BamTools
81 #endif // IBAMIODEVICE_H