summaryrefslogtreecommitdiff
path: root/zen/file_io_base.h
diff options
context:
space:
mode:
Diffstat (limited to 'zen/file_io_base.h')
-rw-r--r--zen/file_io_base.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/zen/file_io_base.h b/zen/file_io_base.h
new file mode 100644
index 00000000..f26cd8c2
--- /dev/null
+++ b/zen/file_io_base.h
@@ -0,0 +1,64 @@
+// **************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
+// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *
+// **************************************************************************
+
+#ifndef FILEIO_BASE_H_INCLUDED_23432431789615314
+#define FILEIO_BASE_H_INCLUDED_23432431789615314
+
+#include "zstring.h"
+
+namespace zen
+{
+class FileBase
+{
+public:
+ const Zstring& getFilename() const { return filename_; }
+
+protected:
+ FileBase(const Zstring& filename) : filename_(filename) {}
+ ~FileBase() {}
+
+private:
+ FileBase(const FileBase&);
+ FileBase& operator=(const FileBase&);
+
+ const Zstring filename_;
+};
+
+
+class FileInputBase : public FileBase
+{
+public:
+ virtual size_t read(void* buffer, size_t bytesToRead) = 0; //throw FileError; returns actual number of bytes read
+ bool eof() const { return eofReached; } //end of file reached
+
+protected:
+ FileInputBase(const Zstring& filename) : FileBase(filename), eofReached(false) {}
+ ~FileInputBase() {}
+ void setEof() { eofReached = true; }
+
+private:
+ bool eofReached;
+};
+
+
+class FileOutputBase : public FileBase
+{
+public:
+ enum AccessFlag
+ {
+ ACC_OVERWRITE,
+ ACC_CREATE_NEW
+ };
+ virtual void write(const void* buffer, size_t bytesToWrite) = 0; //throw FileError
+
+protected:
+ FileOutputBase(const Zstring& filename) : FileBase(filename) {}
+ ~FileOutputBase() {}
+};
+
+}
+
+#endif //FILEIO_BASE_H_INCLUDED_23432431789615314
bgstack15