diff options
author | crupest <crupest@outlook.com> | 2022-01-15 09:07:20 +0000 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-01-15 09:07:20 +0000 |
commit | ae638fc0c2cad09ae0ab69707852588aedc6e0df (patch) | |
tree | c6b0919dc09a99f97c18f869375b428ac6f351d9 | |
parent | d4d9c6810954010e5de23aba19244f59f2139e41 (diff) | |
download | cru-ae638fc0c2cad09ae0ab69707852588aedc6e0df.tar.gz cru-ae638fc0c2cad09ae0ab69707852588aedc6e0df.tar.bz2 cru-ae638fc0c2cad09ae0ab69707852588aedc6e0df.zip |
...
-rw-r--r-- | .gitpod.yml | 1 | ||||
-rw-r--r-- | include/cru/common/io/OpenFileFlag.hpp | 18 | ||||
-rw-r--r-- | include/cru/platform/UnixFileStream.hpp | 20 | ||||
-rw-r--r-- | src/platform/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/platform/UnixFileStream.cpp | 3 |
5 files changed, 50 insertions, 0 deletions
diff --git a/.gitpod.yml b/.gitpod.yml index 93729dff..90a88a72 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -12,3 +12,4 @@ vscode: extensions: - "llvm-vs-code-extensions.vscode-clangd" - "wayou.vscode-todo-highlight" + - "editorconfig.editorconfig" 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 diff --git a/src/platform/CMakeLists.txt b/src/platform/CMakeLists.txt index 466b6900..2d12ce86 100644 --- a/src/platform/CMakeLists.txt +++ b/src/platform/CMakeLists.txt @@ -15,6 +15,14 @@ target_sources(cru_platform_base PUBLIC target_link_libraries(cru_platform_base PUBLIC cru_base) target_compile_definitions(cru_platform_base PRIVATE CRU_PLATFORM_EXPORT_API) +if (UNIX) +target_sources(cru_platform_base PRIVATE + UnixFileStream.cpp +PUBLIC + ${CRU_PLATFORM_BASE_INCLUDE_DIR}/UnixFileStream.hpp +) +endif() + add_subdirectory(filesystem) add_subdirectory(graphics) add_subdirectory(gui) diff --git a/src/platform/UnixFileStream.cpp b/src/platform/UnixFileStream.cpp new file mode 100644 index 00000000..d4745980 --- /dev/null +++ b/src/platform/UnixFileStream.cpp @@ -0,0 +1,3 @@ +#include "cru/platform/UnixFileStream.hpp" + + |