ReXGlue SDK
Loading...
Searching...
No Matches
file.h
Go to the documentation of this file.
1
10
11#pragma once
12
13#include <memory>
14#include <span>
15#include <string_view>
16
20#include <rex/result.h>
21#include <rex/types.h>
22#include <rex/utility.h>
23
24namespace rex::filesystem {
25
27class IFile : public NonCopyable {
28 public:
29 virtual ~IFile() = default;
30
31 [[nodiscard]] virtual FileStat GetInfo() const = 0;
32
34 virtual void Refresh() = 0;
35
37 [[nodiscard]] virtual Access GetAccess() const = 0;
38
39 [[nodiscard]] virtual VolumeStat GetVolume() const = 0;
40
47 [[nodiscard]] virtual Result<size_t> Read(std::span<u8> buffer, u64 offset) = 0;
48
56 [[nodiscard]] virtual Result<size_t> Write(std::span<const u8> buffer, u64 offset) = 0;
57
64 [[nodiscard]] virtual Result<void> SetLength(u64 length) = 0;
65
66 [[nodiscard]] virtual Result<void> Flush() = 0;
67
68 [[nodiscard]] virtual Result<void> SetAttributes(FileAttributes attributes) = 0;
69
75 [[nodiscard]] virtual Result<void> SetTimes(const FileTimes& times) = 0;
76
77 virtual void SetDeleteOnClose(bool delete_on_close) = 0;
78
85 [[nodiscard]] virtual Result<std::unique_ptr<IDirectory>> List(std::string_view pattern) = 0;
86
88 [[nodiscard]] virtual Result<std::span<const u8>> View() = 0;
89};
90
91struct Opened {
92 std::unique_ptr<IFile> file;
93 OpenAction action = OpenAction::kOpened;
94};
95
96} // namespace rex::filesystem
Definition file.h:27
virtual Result< void > SetLength(u64 length)=0
virtual void Refresh()=0
virtual Result< size_t > Read(std::span< u8 > buffer, u64 offset)=0
virtual Result< void > SetTimes(const FileTimes &times)=0
virtual Access GetAccess() const =0
virtual Result< std::unique_ptr< IDirectory > > List(std::string_view pattern)=0
virtual Result< std::span< const u8 > > View()=0
virtual Result< size_t > Write(std::span< const u8 > buffer, u64 offset)=0
Access
Definition file_open.h:28
OpenAction
Definition file_open.h:50
FileAttributes
Definition file_stat.h:31
std::expected< T, Error > Result
Definition result.h:98
Definition file_stat.h:45
Definition file_stat.h:60
Definition file.h:91
Definition file_stat.h:68
Integer types, byte order wrappers and size literals.
Move only function, const propagating pointer and scope guard.