sead
Loading...
Searching...
No Matches
seadArchiveFileDevice.h
Go to the documentation of this file.
1#ifndef SEAD_ARCHIVE_FILEDEVICE_H_
2#define SEAD_ARCHIVE_FILEDEVICE_H_
3
4#include <filedevice/seadFileDevice.h>
5#include <resource/seadArchiveRes.h>
6
7namespace sead {
8
10{
11public:
12 ArchiveFileDevice(ArchiveRes* archive = nullptr)
13 : FileDevice("arc")
14 , mArchive(archive)
15 {
16 }
17
19 {
20 }
21
22 void setArchive(ArchiveRes* archive)
23 {
24 mArchive = archive;
25 }
26
28 {
29 return mArchive;
30 }
31
32 FileDevice* tryOpenWithEntryID(FileHandle* handle, s32 entry_id, FileOpenFlag flag, u32 div_size);
33 u8* tryLoadWithEntryID(s32 entry_id, LoadArg& arg);
34 s32 tryConvertPathToEntryID(const SafeString& filename);
35 bool setCurrentDirectory(const SafeString& path);
36
37protected:
38 virtual bool doIsAvailable_() const { return true; }
39 virtual u8* doLoad_(LoadArg& arg);
40 virtual u8* doLoadWithEntryID_(s32 entry_id, LoadArg& arg);
41 virtual FileDevice* doOpen_(FileHandle* handle, const SafeString& filename, FileOpenFlag flag);
42 virtual FileDevice* doOpenWithEntryID_(FileHandle* handle, s32 entry_id, FileOpenFlag flag);
43 virtual s32 doConvertPathToEntryID_(const SafeString& filename);
44 virtual bool doClose_(FileHandle* handle);
45 virtual bool doRead_(u32* read_size, FileHandle* handle, u8* buf, u32 size);
46 virtual bool doWrite_(u32* write_size, FileHandle* handle, const u8* buf, u32 size) { return false; }
47 virtual bool doSeek_(FileHandle* handle, s32 offset, SeekOrigin origin);
48 virtual bool doGetCurrentSeekPos_(u32* pos, FileHandle* handle);
49 virtual bool doGetFileSize_(u32* size, const SafeString& path);
50 virtual bool doGetFileSize_(u32* size, FileHandle* handle);
51 virtual bool doIsExistFile_(bool* is_exist, const SafeString& path);
52 virtual bool doIsExistDirectory_(bool* is_exist, const SafeString& path);
53 virtual FileDevice* doOpenDirectory_(DirectoryHandle* handle, const SafeString& dirname);
54 virtual bool doCloseDirectory_(DirectoryHandle* handle);
55 virtual bool doReadDirectory_(u32* read_num, DirectoryHandle* handle, DirectoryEntry* entry, u32 num);
56 virtual bool doMakeDirectory_(const SafeString& path, u32 permission);
57 virtual RawErrorCode doGetLastRawError_() const;
58 virtual bool doSetCurrentDirectory_(const SafeString& path);
59
60protected:
67
68protected:
70
71protected:
73};
74#ifdef cafe
75static_assert(sizeof(ArchiveFileDevice) == 0x58, "sead::ArchiveFileDevice size mismatch");
76#endif // cafe
77
78} // namespace sead
79
80#endif // SEAD_ARCHIVE_FILEDEVICE_H_
Definition seadArchiveFileDevice.h:10
virtual FileDevice * doOpen_(FileHandle *handle, const SafeString &filename, FileOpenFlag flag)
Definition seadArchiveFileDevice.cpp:236
virtual bool doRead_(u32 *read_size, FileHandle *handle, u8 *buf, u32 size)
Definition seadArchiveFileDevice.cpp:308
virtual u8 * doLoadWithEntryID_(s32 entry_id, LoadArg &arg)
Definition seadArchiveFileDevice.cpp:129
virtual bool doSeek_(FileHandle *handle, s32 offset, SeekOrigin origin)
Definition seadArchiveFileDevice.cpp:323
virtual FileDevice * doOpenDirectory_(DirectoryHandle *handle, const SafeString &dirname)
Definition seadArchiveFileDevice.cpp:369
s32 tryConvertPathToEntryID(const SafeString &filename)
Definition seadArchiveFileDevice.cpp:28
virtual bool doReadDirectory_(u32 *read_num, DirectoryHandle *handle, DirectoryEntry *entry, u32 num)
Definition seadArchiveFileDevice.cpp:398
virtual bool doSetCurrentDirectory_(const SafeString &path)
Definition seadArchiveFileDevice.cpp:413
ArchiveRes * getArchive() const
Definition seadArchiveFileDevice.h:27
bool setCurrentDirectory(const SafeString &path)
Definition seadArchiveFileDevice.cpp:33
virtual bool doIsExistFile_(bool *is_exist, const SafeString &path)
Definition seadArchiveFileDevice.cpp:87
virtual bool doIsAvailable_() const
Definition seadArchiveFileDevice.h:38
virtual bool doClose_(FileHandle *handle)
Definition seadArchiveFileDevice.cpp:303
virtual bool doGetFileSize_(u32 *size, FileHandle *handle)
Definition seadArchiveFileDevice.cpp:68
ArchiveRes * mArchive
Definition seadArchiveFileDevice.h:72
virtual bool doMakeDirectory_(const SafeString &path, u32 permission)
Definition seadArchiveFileDevice.cpp:430
ArchiveFileDevice(ArchiveRes *archive=nullptr)
Definition seadArchiveFileDevice.h:12
virtual bool doIsExistDirectory_(bool *is_exist, const SafeString &path)
Definition seadArchiveFileDevice.cpp:106
ArchiveFileHandle * getArchiveFileHandle_(FileHandle *handle)
Definition seadArchiveFileDevice.cpp:124
void setArchive(ArchiveRes *archive)
Definition seadArchiveFileDevice.h:22
virtual bool doGetFileSize_(u32 *size, const SafeString &path)
Definition seadArchiveFileDevice.cpp:42
virtual FileDevice * doOpenWithEntryID_(FileHandle *handle, s32 entry_id, FileOpenFlag flag)
Definition seadArchiveFileDevice.cpp:267
FileDevice * tryOpenWithEntryID(FileHandle *handle, s32 entry_id, FileOpenFlag flag, u32 div_size)
Definition seadArchiveFileDevice.cpp:16
virtual bool doGetCurrentSeekPos_(u32 *pos, FileHandle *handle)
Definition seadArchiveFileDevice.cpp:351
virtual ~ArchiveFileDevice()
Definition seadArchiveFileDevice.h:18
virtual s32 doConvertPathToEntryID_(const SafeString &filename)
Definition seadArchiveFileDevice.cpp:292
u8 * tryLoadWithEntryID(s32 entry_id, LoadArg &arg)
Definition seadArchiveFileDevice.cpp:7
virtual bool doCloseDirectory_(DirectoryHandle *handle)
Definition seadArchiveFileDevice.cpp:387
virtual u8 * doLoad_(LoadArg &arg)
Definition seadArchiveFileDevice.cpp:208
virtual RawErrorCode doGetLastRawError_() const
Definition seadArchiveFileDevice.cpp:435
virtual bool doWrite_(u32 *write_size, FileHandle *handle, const u8 *buf, u32 size)
Definition seadArchiveFileDevice.h:46
Definition seadArchiveRes.h:18
Definition seadArchiveRes.h:13
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:409
Definition seadArchiveFileDevice.h:62
ArchiveRes::FileInfo file_info
Definition seadArchiveFileDevice.h:64
u32 cur_pos
Definition seadArchiveFileDevice.h:65
const u8 * image
Definition seadArchiveFileDevice.h:63
Definition seadFileDevice.h:443
Definition seadFileDevice.h:83