From ae638fc0c2cad09ae0ab69707852588aedc6e0df Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 15 Jan 2022 09:07:20 +0000 Subject: ... --- include/cru/common/io/OpenFileFlag.hpp | 18 ++++++++++++++++++ include/cru/platform/UnixFileStream.hpp | 20 ++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 include/cru/common/io/OpenFileFlag.hpp create mode 100644 include/cru/platform/UnixFileStream.hpp (limited to 'include') 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; + +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 -- cgit v1.2.3