sead
Loading...
Searching...
No Matches
seadCafeFSAFileDeviceCafe.h
Go to the documentation of this file.
1#ifndef SEAD_CAFE_FSA_FILEDEVICE_H_
2#define SEAD_CAFE_FSA_FILEDEVICE_H_
3
4#include <cafe.h>
5
6#include <filedevice/seadFileDevice.h>
7#include <prim/seadRuntimeTypeInfo.h>
8#include <prim/seadSafeString.h>
9
10namespace sead {
11
13{
15
16public:
17 CafeFSAFileDevice(const SafeString& default_drive_name, const SafeString& cwd_path);
18 virtual ~CafeFSAFileDevice() { }
19
20 void changeDir(const char* path)
21 {
22 mCWDPath = SafeString(path).cstr();
23 }
24
25 const char* getCWD() const
26 {
27 return mCWDPath;
28 }
29
30 void setFSClient(FSClient* client)
31 {
32 mFSClient = client;
33 }
34
36 {
37 return mFSClient;
38 }
39
40 static bool setCurrentDirectory(const SafeString& path);
41
42protected:
43 bool doIsAvailable_() const override
44 {
45 return true;
46 }
47
48 FileDevice* doOpen_(FileHandle* handle, const SafeString& filename, FileOpenFlag flag) override;
49 bool doClose_(FileHandle* handle) override;
50 bool doRead_(u32* read_size, FileHandle* handle, u8* buf, u32 size) override;
51 bool doWrite_(u32* write_size, FileHandle* handle, const u8* buf, u32 size) override;
52 bool doSeek_(FileHandle* handle, s32 offset, SeekOrigin origin) override;
53 bool doGetCurrentSeekPos_(u32* pos, FileHandle* handle) override;
54 bool doGetFileSize_(u32* size, const SafeString& path) override;
55 bool doGetFileSize_(u32* size, FileHandle* handle) override;
56 bool doIsExistFile_(bool* is_exist, const SafeString& path) override;
57 bool doIsExistDirectory_(bool* is_exist, const SafeString& path) override;
58 FileDevice* doOpenDirectory_(DirectoryHandle* handle, const SafeString& dirname) override;
59 bool doCloseDirectory_(DirectoryHandle* handle) override;
60 bool doReadDirectory_(u32* read_num, DirectoryHandle* handle, DirectoryEntry* entry, u32 num) override;
61 bool doMakeDirectory_(const SafeString& path, u32 permission) override;
62 RawErrorCode doGetLastRawError_() const override;
63
64 void doResolvePath_(BufferedSafeString* out, const SafeString& path) const override
65 {
67 }
68
69 virtual void formatPathForFSA_(BufferedSafeString* out, const SafeString& path) const;
70
72
73protected:
79
84
85protected:
88
89protected:
90 const char* mCWDPath;
96};
97static_assert(sizeof(CafeFSAFileDevice) == 0x6C, "sead::CafeFSAFileDevice size mismatch");
98
107
116
118{
120
121public:
123 virtual ~CafeHostIOFileDevice() { }
124
125protected:
126 void formatPathForFSA_(BufferedSafeString* out, const SafeString& path) const override;
127
128 u32 convertPathWinToFSA_(char* buffer, u32 buffer_size, const char* path) const;
129};
130
132{
134
135public:
138
139protected:
140 void formatPathForFSA_(BufferedSafeString* out, const SafeString& path) const override;
141};
142
143} // namespace sead
144
145#endif // SEAD_CAFE_FSA_FILEDEVICE_H_
Definition seadCafeFSAFileDeviceCafe.h:100
CafeContentFileDevice()
Definition seadCafeFSAFileDeviceCafe.cpp:460
virtual ~CafeContentFileDevice()
Definition seadCafeFSAFileDeviceCafe.h:105
Definition seadCafeFSAFileDeviceCafe.h:13
bool doCloseDirectory_(DirectoryHandle *handle) override
Definition seadCafeFSAFileDeviceCafe.cpp:348
CafeFSAFileDevice(const SafeString &default_drive_name, const SafeString &cwd_path)
Definition seadCafeFSAFileDeviceCafe.cpp:12
RawErrorCode doGetLastRawError_() const override
Definition seadCafeFSAFileDeviceCafe.cpp:424
void changeDir(const char *path)
Definition seadCafeFSAFileDeviceCafe.h:20
bool doIsAvailable_() const override
Definition seadCafeFSAFileDeviceCafe.h:43
FSStatus mLastRawError
Definition seadCafeFSAFileDeviceCafe.h:91
void doResolvePath_(BufferedSafeString *out, const SafeString &path) const override
Definition seadCafeFSAFileDeviceCafe.h:64
DirHandleInner * getDirHandleInner_(DirectoryHandle *handle)
Definition seadCafeFSAFileDeviceCafe.cpp:453
FSRetFlag mFSOpenRetFlag
Definition seadCafeFSAFileDeviceCafe.h:92
virtual void formatPathForFSA_(BufferedSafeString *out, const SafeString &path) const
Definition seadCafeFSAFileDeviceCafe.cpp:430
bool doGetFileSize_(u32 *size, FileHandle *handle) override
Definition seadCafeFSAFileDeviceCafe.cpp:242
FSRetFlag mFSReadRetFlag
Definition seadCafeFSAFileDeviceCafe.h:94
bool doGetFileSize_(u32 *size, const SafeString &path) override
Definition seadCafeFSAFileDeviceCafe.cpp:219
virtual ~CafeFSAFileDevice()
Definition seadCafeFSAFileDeviceCafe.h:18
FSClient * getUsableFSClient_() const
Definition seadCafeFSAFileDeviceCafe.cpp:438
bool doMakeDirectory_(const SafeString &path, u32 permission) override
Definition seadCafeFSAFileDeviceCafe.cpp:404
const char * getCWD() const
Definition seadCafeFSAFileDeviceCafe.h:25
FileDevice * doOpen_(FileHandle *handle, const SafeString &filename, FileOpenFlag flag) override
Definition seadCafeFSAFileDeviceCafe.cpp:43
bool doIsExistFile_(bool *is_exist, const SafeString &path) override
Definition seadCafeFSAFileDeviceCafe.cpp:263
FSClient * mFSClient
Definition seadCafeFSAFileDeviceCafe.h:95
bool doWrite_(u32 *write_size, FileHandle *handle, const u8 *buf, u32 size) override
Definition seadCafeFSAFileDeviceCafe.cpp:136
bool doClose_(FileHandle *handle) override
Definition seadCafeFSAFileDeviceCafe.cpp:90
const char * mCWDPath
Definition seadCafeFSAFileDeviceCafe.h:90
FSClient * getFSClient() const
Definition seadCafeFSAFileDeviceCafe.h:35
bool doRead_(u32 *read_size, FileHandle *handle, u8 *buf, u32 size) override
Definition seadCafeFSAFileDeviceCafe.cpp:106
void setFSClient(FSClient *client)
Definition seadCafeFSAFileDeviceCafe.h:30
FileHandleInner * getFileHandleInner_(FileHandle *handle)
Definition seadCafeFSAFileDeviceCafe.cpp:446
bool doIsExistDirectory_(bool *is_exist, const SafeString &path) override
Definition seadCafeFSAFileDeviceCafe.cpp:294
static bool setCurrentDirectory(const SafeString &path)
Definition seadCafeFSAFileDeviceCafe.cpp:28
bool doSeek_(FileHandle *handle, s32 offset, SeekOrigin origin) override
Definition seadCafeFSAFileDeviceCafe.cpp:166
FSRetFlag mFSCloseRetFlag
Definition seadCafeFSAFileDeviceCafe.h:93
FileDevice * doOpenDirectory_(DirectoryHandle *handle, const SafeString &dirname) override
Definition seadCafeFSAFileDeviceCafe.cpp:325
bool doGetCurrentSeekPos_(u32 *pos, FileHandle *handle) override
Definition seadCafeFSAFileDeviceCafe.cpp:209
bool doReadDirectory_(u32 *read_num, DirectoryHandle *handle, DirectoryEntry *entry, u32 num) override
Definition seadCafeFSAFileDeviceCafe.cpp:366
Definition seadCafeFSAFileDeviceCafe.h:132
virtual ~CafeFSNativePathFileDevice()
Definition seadCafeFSAFileDeviceCafe.h:137
CafeFSNativePathFileDevice()
Definition seadCafeFSAFileDeviceCafe.cpp:545
void formatPathForFSA_(BufferedSafeString *out, const SafeString &path) const override
Definition seadCafeFSAFileDeviceCafe.cpp:550
Definition seadCafeFSAFileDeviceCafe.h:118
virtual ~CafeHostIOFileDevice()
Definition seadCafeFSAFileDeviceCafe.h:123
void formatPathForFSA_(BufferedSafeString *out, const SafeString &path) const override
Definition seadCafeFSAFileDeviceCafe.cpp:475
u32 convertPathWinToFSA_(char *buffer, u32 buffer_size, const char *path) const
Definition seadCafeFSAFileDeviceCafe.cpp:516
CafeHostIOFileDevice()
Definition seadCafeFSAFileDeviceCafe.cpp:470
Definition seadCafeFSAFileDeviceCafe.h:109
virtual ~CafeSDFileDevice()
Definition seadCafeFSAFileDeviceCafe.h:114
CafeSDFileDevice()
Definition seadCafeFSAFileDeviceCafe.cpp:465
Definition seadFileDevice.h:421
Definition seadFileDevice.h:56
SeekOrigin
Definition seadFileDevice.h:69
FileOpenFlag
Definition seadFileDevice.h:61
Definition seadFileDevice.h:376
Definition seadAssert.h:44
s32 RawErrorCode
Definition seadFileDevice.h:14
SafeStringBase< char > SafeString
Definition seadSafeString.h:420
BufferedSafeStringBase< char > BufferedSafeString
Definition seadSafeString.h:422
#define SEAD_RTTI_OVERRIDE(CLASS, BASE)
Definition seadRuntimeTypeInfo.h:96
Definition seadCafeFSAFileDeviceCafe.h:81
FSDirHandle mHandle
Definition seadCafeFSAFileDeviceCafe.h:82
Definition seadCafeFSAFileDeviceCafe.h:75
FSFilePosition mPosition
Definition seadCafeFSAFileDeviceCafe.h:77
FSFileHandle mHandle
Definition seadCafeFSAFileDeviceCafe.h:76
Definition seadFileDevice.h:443