mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-13 05:16:01 -04:00
Reorganize library code into libs/ (#3119)
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}
* Update configure.py and project.py for new libs structure
* Refactor `#include <dolphin/x.h>` -> `<x.h>`
* Remove `__REVOLUTION_SDK__` forwards from dolphin
* Fix dolphin/ references in revolution
* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`
* Always build TRK against dolphin headers
* Resolve revolution SDK header resolution issues
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JKernel/JKRFileFinder.h"
|
||||
#include "JSystem/JKernel/JKRArchive.h"
|
||||
|
||||
JKRArcFinder::JKRArcFinder(JKRArchive* archive, s32 startIndex, s32 numEntries) : JKRFileFinder() {
|
||||
mArchive = archive;
|
||||
mIsAvailable = numEntries > 0;
|
||||
mStartIndex = startIndex;
|
||||
mEndIndex = startIndex + numEntries - 1;
|
||||
mNextIndex = mStartIndex;
|
||||
findNextFile();
|
||||
}
|
||||
|
||||
bool JKRArcFinder::findNextFile(void) {
|
||||
if (mIsAvailable) {
|
||||
mIsAvailable = !(mNextIndex > mEndIndex);
|
||||
if (mIsAvailable) {
|
||||
JKRArchive::SDirEntry entry;
|
||||
mIsAvailable = mArchive->getDirEntry(&entry, mNextIndex);
|
||||
mEntryName = entry.name;
|
||||
mEntryFileIndex = mNextIndex;
|
||||
mEntryId = entry.id;
|
||||
mEntryTypeFlags = entry.flags;
|
||||
mIsFileOrDirectory = mEntryTypeFlags & 2;
|
||||
mNextIndex++;
|
||||
}
|
||||
}
|
||||
return mIsAvailable;
|
||||
}
|
||||
|
||||
JKRDvdFinder::JKRDvdFinder(const char* directory) : JKRFileFinder() {
|
||||
mDvdIsOpen = DVDOpenDir(directory, &mDvdDirectory);
|
||||
mIsAvailable = mDvdIsOpen;
|
||||
findNextFile();
|
||||
}
|
||||
|
||||
JKRDvdFinder::~JKRDvdFinder() {
|
||||
if (mDvdIsOpen) {
|
||||
DVDCloseDir(&mDvdDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
bool JKRDvdFinder::findNextFile(void) {
|
||||
if (mIsAvailable) {
|
||||
DVDDirEntry directoryEntry;
|
||||
mIsAvailable = DVDReadDir(&mDvdDirectory, &directoryEntry);
|
||||
|
||||
if (mIsAvailable) {
|
||||
mIsFileOrDirectory = directoryEntry.isDir != 0;
|
||||
mEntryName = directoryEntry.name;
|
||||
mEntryFileIndex = directoryEntry.entryNum;
|
||||
mEntryId = 0;
|
||||
|
||||
// only matches with enum
|
||||
// TODO: placeholder
|
||||
enum EntryTypeFlags {
|
||||
EntryTypeFlags1 = 1,
|
||||
EntryTypeFlags2 = 2,
|
||||
};
|
||||
mEntryTypeFlags = mIsFileOrDirectory ? EntryTypeFlags2 : EntryTypeFlags1;
|
||||
}
|
||||
}
|
||||
|
||||
return mIsAvailable;
|
||||
}
|
||||
Reference in New Issue
Block a user