#include <string>
#include "base.h"
+#include "buffered.h"
+#include "filtered.h"
#include "seek.h"
namespace Msp {
void close();
void set_block(bool);
- void enable_events();
- void sync();
+ virtual void sync();
- int seek(int, SeekType);
- int tell() const;
+ virtual int seek(int, SeekType);
+ virtual int tell() const;
- Handle get_event_handle() { return handle; }
+ virtual Handle get_event_handle() { return handle; }
- ~File();
+ virtual ~File();
private:
Handle handle;
- void check_access(Mode) const;
- unsigned do_write(const char *, unsigned);
- unsigned do_read(char *, unsigned);
+ void check_access(Mode) const;
+protected:
+ virtual unsigned do_write(const char *, unsigned);
+ virtual unsigned do_read(char *, unsigned);
};
inline File::CreateMode operator|(File::CreateMode m, File::CreateMode n)
-{ return File::CreateMode((int)m|(int)n); }
+{ return File::CreateMode(static_cast<int>(m)|static_cast<int>(n)); }
inline File::CreateMode operator&(File::CreateMode m, File::CreateMode n)
-{ return File::CreateMode((int)m&(int)n); }
+{ return File::CreateMode(static_cast<int>(m)&static_cast<int>(n)); }
inline File::CreateMode operator~(File::CreateMode m)
-{ return File::CreateMode(~(int)m); }
+{ return File::CreateMode(~static_cast<int>(m)); }
+
+typedef Filtered<File, Buffered> BufferedFile;
} // namespace IO
} // namespace Msp