aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cru/common/io/OpenFileFlag.hpp18
-rw-r--r--include/cru/platform/UnixFileStream.hpp20
2 files changed, 38 insertions, 0 deletions
diff --git a/include/cru/common/io/OpenFileFlag.hpp b/include/cru/common/io/OpenFileFlag.hpp
new file mode 100644
index 00000000..3319bb4f
--- /dev/null
+++ b/include/cru/common/io/OpenFileFlag.hpp
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "../Bitmask.hpp"
+
+namespace cru::io {
+namespace details {
+struct OpenFileFlagTag {};
+} // namespace details
+using OpenFileFlag = Bitmask<details::OpenFileFlagTag>;
+
+struct OpenFileFlags {
+ static constexpr OpenFileFlag Read{0x1};
+ static constexpr OpenFileFlag Write{0x2};
+ static constexpr OpenFileFlag Append{0x4};
+ static constexpr OpenFileFlag Create{0x8};
+ static constexpr OpenFileFlag ThrowOnExist{0x10};
+};
+} // namespace cru::io
diff --git a/include/cru/platform/UnixFileStream.hpp b/include/cru/platform/UnixFileStream.hpp
new file mode 100644
index 00000000..612a08f0
--- /dev/null
+++ b/include/cru/platform/UnixFileStream.hpp
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "cru/common/String.hpp"
+#include "cru/common/io/OpenFileFlag.hpp"
+#include "cru/common/io/Stream.hpp"
+
+namespace cru::platform {
+class UnixFileStream : public io::Stream {
+ public:
+ UnixFileStream(String path, io::OpenFileFlag flags);
+ UnixFileStream(int file_descriptor, bool auto_close);
+
+ CRU_DELETE_COPY(UnixFileStream)
+ CRU_DELETE_MOVE(UnixFileStream)
+
+ ~UnixFileStream() override;
+
+ private:
+};
+} // namespace cru::platform