1#include "Project/ArchiveHolder.h"
2
3#include <basis/seadNew.h>
4
5#include "Library/Base/StringUtil.h"
6#include "Project/ArchiveEntry.h"
7
8namespace al {
9
10ArchiveHolder::ArchiveHolder() {
11 mArchiveEntries.allocBufferAssert(size: 0x800, heap: nullptr);
12}
13
14ArchiveEntry* ArchiveHolder::addNewLoadRequestEntry(const sead::SafeString& fileName,
15 sead::Heap* heap,
16 sead::FileDevice* fileDevice) {
17 ArchiveEntry* entry = mArchiveEntries.get(idx: mSize);
18 entry->setLoadRequestInfo(fileName, heap, fileDevice);
19 mSize++;
20 return entry;
21}
22
23ArchiveEntry* ArchiveHolder::tryFindEntry(const sead::SafeString& fileName) {
24 for (s32 i = 0; i < mSize; i++) {
25 ArchiveEntry* entry = mArchiveEntries.get(idx: i);
26 if (isEqualString(safestr1: entry->getFileName(), safestr2: fileName))
27 return entry;
28 }
29 return nullptr;
30}
31
32void ArchiveHolder::waitLoadDoneAll() {
33 for (s32 i = 0; i < mSize; i++) {
34 ArchiveEntry* entry = mArchiveEntries.get(idx: i);
35 if (entry->mFileState != FileState::IsLoadDone)
36 entry->waitLoadDone();
37 }
38}
39
40void ArchiveHolder::clearEntry() {
41 for (s32 i = 0; i < mSize; i++)
42 mArchiveEntries.get(idx: i)->clear();
43 mSize = 0;
44}
45
46} // namespace al
47