sead
Loading...
Searching...
No Matches
seadSharcArchiveRes.h
Go to the documentation of this file.
1#ifndef SEAD_SHARC_ARCHIVE_RES_H_
2#define SEAD_SHARC_ARCHIVE_RES_H_
3
4#include <container/seadBuffer.h>
5#include <filedevice/seadFileDevice.h>
6#include <prim/seadEndian.h>
7#include <prim/seadSafeString.h>
8#include <resource/seadArchiveRes.h>
9
10namespace sead {
11
13{
15
16public:
17 static const u32 cArchiveVersion = 0x100;
18 static const u32 cArchiveEntryMax = 0x3fff;
19 static const u32 cFileNameTableAlign = 4;
20
21public:
32 static_assert(sizeof(ArchiveBlockHeader) == 0x14,
33 "sead::SharcArchiveRes::ArchiveBlockHeader size mismatch");
34
42 static_assert(sizeof(FATBlockHeader) == 0xC,
43 "sead::SharcArchiveRes::FATBlockHeader size mismatch");
44
52 static_assert(sizeof(FATEntry) == 0x10,
53 "sead::SharcArchiveRes::FATEntry size mismatch");
54
61 static_assert(sizeof(FNTBlockHeader) == 8,
62 "sead::SharcArchiveRes::FNTBlockHeader size mismatch");
63
64public:
66 virtual ~SharcArchiveRes();
67
68protected:
69 void* getFileImpl_(const SafeString& file_path, FileInfo* file_info) override;
70 void* getFileFastImpl_(s32 entry_id, FileInfo* file_info) override;
71 s32 convertPathToEntryIDImpl_(const SafeString& file_path) override;
72 bool setCurrentDirectoryImpl_(const SafeString& file_path) override;
73 bool openDirectoryImpl_(HandleBuffer* handle_buffer, const SafeString& dir_path) override;
74 bool closeDirectoryImpl_(HandleBuffer* handle_buffer) override;
75 u32 readDirectoryImpl_(HandleBuffer* handle_buffer, DirectoryEntry* entry, u32 num) override;
76 bool prepareArchive_(const void* archive) override;
77
78protected:
81 const char* mFNTBlock;
83 const u8* mDataBlock;
85};
86#ifdef cafe
87static_assert(sizeof(SharcArchiveRes) == 0x44, "sead::SharcArchiveRes size mismatch");
88#endif // cafe
89
90} // namespace sead
91
92#endif // SEAD_SHARC_ARCHIVE_RES_H_
Definition seadArchiveRes.h:18
Definition seadArchiveRes.h:13
Definition seadBuffer.h:13
Definition seadEndian.h:10
Types
Definition seadEndian.h:13
Definition seadSharcArchiveRes.h:13
s32 convertPathToEntryIDImpl_(const SafeString &file_path) override
Definition seadSharcArchiveRes.cpp:114
const ArchiveBlockHeader * mArchiveBlockHeader
Definition seadSharcArchiveRes.h:79
Endian::Types mEndianType
Definition seadSharcArchiveRes.h:84
SharcArchiveRes()
Definition seadSharcArchiveRes.cpp:58
static const u32 cArchiveEntryMax
Definition seadSharcArchiveRes.h:18
bool setCurrentDirectoryImpl_(const SafeString &file_path) override
Definition seadSharcArchiveRes.cpp:160
bool openDirectoryImpl_(HandleBuffer *handle_buffer, const SafeString &dir_path) override
Definition seadSharcArchiveRes.cpp:167
void * getFileImpl_(const SafeString &file_path, FileInfo *file_info) override
Definition seadSharcArchiveRes.cpp:77
bool prepareArchive_(const void *archive) override
Definition seadSharcArchiveRes.cpp:222
void * getFileFastImpl_(s32 entry_id, FileInfo *file_info) override
Definition seadSharcArchiveRes.cpp:90
u32 readDirectoryImpl_(HandleBuffer *handle_buffer, DirectoryEntry *entry, u32 num) override
Definition seadSharcArchiveRes.cpp:183
virtual ~SharcArchiveRes()
Definition seadSharcArchiveRes.cpp:72
Buffer< const FATEntry > mFATEntrys
Definition seadSharcArchiveRes.h:82
const char * mFNTBlock
Definition seadSharcArchiveRes.h:81
static const u32 cArchiveVersion
Definition seadSharcArchiveRes.h:17
const FATBlockHeader * mFATBlockHeader
Definition seadSharcArchiveRes.h:80
const u8 * mDataBlock
Definition seadSharcArchiveRes.h:83
static const u32 cFileNameTableAlign
Definition seadSharcArchiveRes.h:19
bool closeDirectoryImpl_(HandleBuffer *handle_buffer) override
Definition seadSharcArchiveRes.cpp:177
Definition seadAssert.h:44
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
SafeArray< u8, 32 > HandleBuffer
Definition seadFileDevice.h:15
#define SEAD_RTTI_OVERRIDE(CLASS, BASE)
Definition seadRuntimeTypeInfo.h:96
Definition seadFileDevice.h:443
Definition seadSharcArchiveRes.h:23
u16 version
Definition seadSharcArchiveRes.h:29
u32 data_block_offset
Definition seadSharcArchiveRes.h:28
u16 byte_order
Definition seadSharcArchiveRes.h:26
u32 file_size
Definition seadSharcArchiveRes.h:27
char signature[4]
Definition seadSharcArchiveRes.h:24
u16 reserved
Definition seadSharcArchiveRes.h:30
u16 header_size
Definition seadSharcArchiveRes.h:25
Definition seadSharcArchiveRes.h:36
char signature[4]
Definition seadSharcArchiveRes.h:37
u32 hash_key
Definition seadSharcArchiveRes.h:40
u16 header_size
Definition seadSharcArchiveRes.h:38
u16 file_num
Definition seadSharcArchiveRes.h:39
Definition seadSharcArchiveRes.h:46
u32 data_start_offset
Definition seadSharcArchiveRes.h:49
u32 name_offset
Definition seadSharcArchiveRes.h:48
u32 data_end_offset
Definition seadSharcArchiveRes.h:50
u32 hash
Definition seadSharcArchiveRes.h:47
Definition seadSharcArchiveRes.h:56
u16 reserved
Definition seadSharcArchiveRes.h:59
u16 header_size
Definition seadSharcArchiveRes.h:58
char signature[4]
Definition seadSharcArchiveRes.h:57