sead
Loading...
Searching...
No Matches
seadFileDeviceMgr.h
Go to the documentation of this file.
1#ifndef SEAD_FILEDEVICEMGR_H_
2#define SEAD_FILEDEVICEMGR_H_
3
4#ifdef cafe
5#include <cafe.h>
6#endif // cafe
7
8#include <basis/seadAssert.h>
9#include <container/seadTList.h>
10#include <filedevice/seadFileDevice.h>
11#include <filedevice/seadMainFileDevice.h>
12#include <heap/seadDisposer.h>
13#include <prim/seadSafeString.h>
14
15namespace sead {
16
18{
19#ifdef cafe
21#endif // cafe
22
24
25public:
26 static const s32 cNoDrivePathBufferSize = 256;
27
28private:
30
31public:
34
35 FileDevice* open(FileHandle* handle, const SafeString& filename, FileDevice::FileOpenFlag flag, u32 div_num)
36 {
37 FileDevice* device = tryOpen(handle, filename, flag, div_num);
38 SEAD_ASSERT_MSG(device != nullptr, "open failed. [%s]", filename.cstr());
39 return device;
40 }
41
42 FileDevice* tryOpen(FileHandle* handle, const SafeString& filename, FileDevice::FileOpenFlag flag, u32 div_num);
43
44 FileDevice* findDeviceFromPath(const SafeString& path, BufferedSafeString* no_drive_path) const;
45
47 {
48 FileDevice* device = tryOpenDirectory(handle, dirname);
49 SEAD_ASSERT_MSG(device != nullptr, "open directory failed. [%s]", dirname.cstr());
50 return device;
51 }
52
54
56 {
57 u8* ret = tryLoad(arg);
58 SEAD_ASSERT_MSG(ret != nullptr, "load failed. [%s]", arg.path.cstr());
59 return ret;
60 }
61
63 void unload(u8* data);
64
65 void mount(FileDevice* device, const SafeString& drive_name = SafeString::cEmptyString);
66 void unmount(const SafeString& drive);
67 void unmount(FileDevice* device);
68
69 //? Added
71 {
72 return mDeviceList;
73 }
74
76 {
78 mDefaultFileDevice = device;
79 return old;
80 }
81
83 {
84 return mDefaultFileDevice;
85 }
86
88 {
89 return mMainFileDevice;
90 }
91
92 FileDevice* findDevice(const SafeString& drive) const;
93
94 virtual void traceFilePath(const SafeString& path) const;
95 virtual void traceDirectoryPath(const SafeString& path) const;
96 virtual void resolveFilePath(BufferedSafeString* out, const SafeString& path) const;
97 virtual void resolveDirectoryPath(BufferedSafeString* out, const SafeString& path) const;
98
99protected:
103
104#ifdef cafe
105public:
106 FSClient* getFSClient_() const { return const_cast<FSClient*>(&mFSClient); }
107
110
111 const char* getSDCardMountPath() const { return mFSSDMountPath; }
112
113 bool mountHostFileIO();
114 bool unmountHostFileIO();
115
116 const char* getHostFileIOMountPath() const { return mFSHFIOMountPath; }
117
118protected:
123#else
124 #error "Unknown platform"
125#endif // cafe
126};
127#ifdef cafe
128static_assert(sizeof(FileDeviceMgr) == 0x182C, "sead::FileDeviceMgr size mismatch");
129#endif // cafe
130
131} // namespace sead
132
133#endif // SEAD_FILEDEVICEMGR_H_
Definition seadFileDevice.h:421
Definition seadFileDeviceMgr.h:18
FileDevice * setDefaultFileDevice(FileDevice *device)
Definition seadFileDeviceMgr.h:75
FileDevice * tryOpen(FileHandle *handle, const SafeString &filename, FileDevice::FileOpenFlag flag, u32 div_num)
Definition seadFileDeviceMgr.cpp:199
virtual void traceFilePath(const SafeString &path) const
Definition seadFileDeviceMgr.cpp:78
MainFileDevice * getMainFileDevice() const
Definition seadFileDeviceMgr.h:87
u8 * load(FileDevice::LoadArg &arg)
Definition seadFileDeviceMgr.h:55
virtual void traceDirectoryPath(const SafeString &path) const
Definition seadFileDeviceMgr.cpp:92
TList< FileDevice * > DeviceList
Definition seadFileDeviceMgr.h:29
FileDevice * getDefaultFileDevice() const
Definition seadFileDeviceMgr.h:82
FileDevice * mDefaultFileDevice
Definition seadFileDeviceMgr.h:101
virtual void resolveFilePath(BufferedSafeString *out, const SafeString &path) const
Definition seadFileDeviceMgr.cpp:106
u8 * tryLoad(FileDevice::LoadArg &arg)
Definition seadFileDeviceMgr.cpp:210
DeviceList mDeviceList
Definition seadFileDeviceMgr.h:100
void unmount(FileDevice *device)
Definition seadFileDeviceMgr.cpp:142
void unload(u8 *data)
Definition seadFileDeviceMgr.cpp:232
const DeviceList & getDeviceList() const
Definition seadFileDeviceMgr.h:70
FileDevice * findDevice(const SafeString &drive) const
Definition seadFileDeviceMgr.cpp:190
void mount(FileDevice *device, const SafeString &drive_name=SafeString::cEmptyString)
Definition seadFileDeviceMgr.cpp:134
FileDevice * findDeviceFromPath(const SafeString &path, BufferedSafeString *no_drive_path) const
Definition seadFileDeviceMgr.cpp:159
FileDevice * open(FileHandle *handle, const SafeString &filename, FileDevice::FileOpenFlag flag, u32 div_num)
Definition seadFileDeviceMgr.h:35
static const s32 cNoDrivePathBufferSize
Definition seadFileDeviceMgr.h:26
FileDevice * tryOpenDirectory(DirectoryHandle *handle, const SafeString &dirname)
FileDeviceMgr()
Definition seadFileDeviceMgr.cpp:19
void unmount(const SafeString &drive)
Definition seadFileDeviceMgr.cpp:151
virtual void resolveDirectoryPath(BufferedSafeString *out, const SafeString &path) const
Definition seadFileDeviceMgr.cpp:120
~FileDeviceMgr()
Definition seadFileDeviceMgr.cpp:60
FileDevice * openDirectory(DirectoryHandle *handle, const SafeString &dirname)
Definition seadFileDeviceMgr.h:46
MainFileDevice * mMainFileDevice
Definition seadFileDeviceMgr.h:102
Definition seadFileDevice.h:56
FileOpenFlag
Definition seadFileDevice.h:61
Definition seadFileDevice.h:376
Definition seadMainFileDevice.h:11
Definition seadTList.h:49
Definition seadAssert.h:44
SafeStringBase< char > SafeString
Definition seadSafeString.h:420
BufferedSafeStringBase< char > BufferedSafeString
Definition seadSafeString.h:422
#define SEAD_ASSERT_MSG(condition, format,...)
Definition seadAssert.h:33
#define SEAD_SINGLETON_DISPOSER(CLASS)
Definition seadDisposer.h:29
Definition seadFileDevice.h:83