#ifndef MSP_IO_SEEKABLE_H_
#define MSP_IO_SEEKABLE_H_
+#include <cstdint>
+#include <stdexcept>
#include "base.h"
namespace Msp {
class Handle;
-#ifdef MSVC
-typedef __int64 SeekOffset;
-#else
-typedef long long SeekOffset;
-#endif
+typedef std::int64_t SeekOffset;
enum SeekType
{
};
+class bad_seek: public std::runtime_error
+{
+public:
+ bad_seek(SeekOffset, SeekType);
+ virtual ~bad_seek() throw() = default;
+};
+
+
class Seekable: public Base
{
protected:
- Seekable() { }
+ Seekable() = default;
public:
/** Changes the read/write offset. Returns the new offset. */