X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fseekable.h;h=84a556163e764e40ed837703434a01dfd60fe9a9;hp=cabb9dcdfc7ffc50b979163e447443fdd100e3e2;hb=HEAD;hpb=86e0004bd195bc7f7478cf736871339bddf38127 diff --git a/source/io/seekable.h b/source/io/seekable.h index cabb9dc..e549d24 100644 --- a/source/io/seekable.h +++ b/source/io/seekable.h @@ -1,11 +1,18 @@ #ifndef MSP_IO_SEEKABLE_H_ #define MSP_IO_SEEKABLE_H_ +#include +#include +#include #include "base.h" namespace Msp { namespace IO { +class Handle; + +typedef std::int64_t SeekOffset; + enum SeekType { S_BEG, @@ -13,22 +20,31 @@ enum SeekType S_END }; -int sys_seek_type(SeekType); + +class MSPCORE_API bad_seek: public std::runtime_error +{ +public: + bad_seek(SeekOffset, SeekType); + ~bad_seek() throw() override = default; +}; -class Seekable: public Base +class MSPCORE_API Seekable: public Base { protected: - Seekable() { } + Seekable() = default; public: /** Changes the read/write offset. Returns the new offset. */ - virtual unsigned seek(int, SeekType) = 0; + virtual SeekOffset seek(SeekOffset, SeekType) = 0; /** Returns the current read/write offset. */ - virtual unsigned tell() const = 0; + virtual SeekOffset tell() const = 0; }; + +SeekOffset sys_seek(Handle &, SeekOffset, SeekType); + } // namespace IO } // namespace Msp