diff options
Diffstat (limited to 'core/src/Utils/IO/FileStream.hpp')
-rw-r--r-- | core/src/Utils/IO/FileStream.hpp | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/core/src/Utils/IO/FileStream.hpp b/core/src/Utils/IO/FileStream.hpp deleted file mode 100644 index 453ddbe..0000000 --- a/core/src/Utils/IO/FileStream.hpp +++ /dev/null @@ -1,97 +0,0 @@ -#pragma once - -#include <cstddef> -#include <cstdint> -#include <filesystem> -#include <memory> - -// TODO switch to custom when unit tests are ready and bugs are fixed -#define CPLT_FILESTREAM_USE_CSTDIO - -struct IoResult -{ - enum ErrorKind - { - ERR_None, - ERR_PermissionDenied, - ERR_UnexpectedEof, - ERR_Unsupported, - ERR_OutOfSpace, - ERR_Other, - }; - - ErrorKind Error; - uint32_t SystemError; - size_t BytesMoved; -}; - -class InputFileStream -{ -private: -#if defined(CPLT_FILESTREAM_USE_CSTDIO) - FILE* mFile; -#else - alignas(void*) char mOsFileHandle[sizeof(void*)]; - - // mBuffer is always mReadInSize size - std::unique_ptr<std::byte[]> mBuffer; - int mReadInSize = 1024; - - int mFirstByteIdx = 0; - int mAvailableBytes = 0; - - bool mEof = false; -#endif - -public: - InputFileStream(const std::filesystem::path& path); - ~InputFileStream(); - - InputFileStream(const InputFileStream&) = delete; - InputFileStream& operator=(const InputFileStream&) = delete; - InputFileStream(InputFileStream&&); - InputFileStream& operator=(InputFileStream&&); - - int GetReadInSize() const; - void SetReadInSize(int size); - - bool IsEof() const; - - IoResult ReadBytes(size_t bufferLength, std::byte* buffer); -}; - -class OutputFileStream -{ -public: - enum WriteMode - { - AppendFile, - TruncateFile, - }; - -private: -#if defined(CPLT_FILESTREAM_USE_CSTDIO) - FILE* mFile; -#else - alignas(void*) char mOsFileHandle[sizeof(void*)]; - std::unique_ptr<std::byte[]> mBuffer; - int mMaxBufferSize = 1024; - int mCurrentBufferSize = 0; -#endif - -public: - OutputFileStream(const std::filesystem::path& path, WriteMode mode); - ~OutputFileStream(); - - OutputFileStream(const OutputFileStream&) = delete; - OutputFileStream& operator=(const OutputFileStream&) = delete; - OutputFileStream(OutputFileStream&&); - OutputFileStream& operator=(OutputFileStream&&); - - int GetMaxBufferSize() const; - void SetMaxBufferSize(int maxSize); - - IoResult WriteBytes(size_t bufferLength, const std::byte* buffer); - - void FlushBuffer(); -}; |