1#include "Game/System/ArchiveHolder.hpp"
2#include "Game/Util.hpp"
5ArchiveHolderArchiveEntry::ArchiveHolderArchiveEntry(
void *pData, JKRHeap *pHeap,
const char *pName) {
8 mArchiveName =
nullptr;
9 JKRMemArchive* archive =
new(pHeap, 0) JKRMemArchive();
10 archive->mountFixed(pData, JKR_MEM_BREAK_FLAG_0);
12 s32 len = strlen(pName) + 1;
13 char* name =
new(pHeap, 0)
char[len];
15 MR::copyString(mArchiveName, pName, len);
18ArchiveHolderArchiveEntry::~ArchiveHolderArchiveEntry() {
23ArchiveHolder::ArchiveHolder() {
34 OSMutex* mutex = &mMutex;
36 s32 num = mCurEntryNum;
37 mCurEntryNum = num + 1;
38 mEntries[num] = entry;
43JKRMemArchive* ArchiveHolder::getArchive(
const char *pName)
const {
45 return (entry !=
nullptr) ? entry->mArchive :
nullptr;
48void ArchiveHolder::getArchiveAndHeap(
const char *pName, JKRArchive** pArchive, JKRHeap** pHeap)
const {
51 if (entry !=
nullptr) {
52 *pArchive = entry->mArchive;
53 *pHeap = entry->mHeap;
61 if (MR::isEqualStringCase((*i)->mArchiveName, pName)) {