]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/seekable.h
Use #ifdef _WIN32 rather than WIN32
[libs/core.git] / source / io / seekable.h
index cabb9dcdfc7ffc50b979163e447443fdd100e3e2..f0170b40f5af126de2c641431d7a2033cc1f1415 100644 (file)
@@ -1,11 +1,17 @@
 #ifndef MSP_IO_SEEKABLE_H_
 #define MSP_IO_SEEKABLE_H_
 
+#include <stdexcept>
+#include <msp/core/inttypes.h>
 #include "base.h"
 
 namespace Msp {
 namespace IO {
 
+class Handle;
+
+typedef Int64 SeekOffset;
+
 enum SeekType
 {
        S_BEG,
@@ -13,7 +19,13 @@ enum SeekType
        S_END
 };
 
-int sys_seek_type(SeekType);
+
+class bad_seek: public std::runtime_error
+{
+public:
+       bad_seek(SeekOffset, SeekType);
+       virtual ~bad_seek() throw() { }
+};
 
 
 class Seekable: public Base
@@ -23,12 +35,15 @@ protected:
 
 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