+#ifndef MSP_IO_SEEKABLE_H_
+#define MSP_IO_SEEKABLE_H_
+
+#include "base.h"
+
+namespace Msp {
+namespace IO {
+
+enum SeekType
+{
+ S_BEG,
+ S_CUR,
+ S_END
+};
+
+int sys_seek_type(SeekType);
+
+
+class Seekable: public Base
+{
+protected:
+ Seekable() { }
+
+public:
+ /** Changes the read/write offset. Returns the new offset. */
+ virtual unsigned seek(int, SeekType) = 0;
+
+ /** Returns the current read/write offset. */
+ virtual unsigned tell() const = 0;
+};
+
+} // namespace IO
+} // namespace Msp
+
+#endif