mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-26 14:19:38 -04:00
4df8ccc871
* 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
64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
|
|
|
#include "JSystem/JSupport/JSUFileStream.h"
|
|
#include "JSystem/JKernel/JKRFile.h"
|
|
|
|
JSUFileInputStream::JSUFileInputStream(JKRFile* pFile) {
|
|
mFile = pFile;
|
|
mPosition = 0;
|
|
}
|
|
|
|
u32 JSUFileInputStream::readData(void* pBuffer, s32 length) {
|
|
s32 lenRead = 0;
|
|
if (mFile->isAvailable()) {
|
|
if (mPosition + length > (u32)mFile->getFileSize()) {
|
|
length = mFile->getFileSize() - mPosition;
|
|
}
|
|
|
|
if (length > 0) {
|
|
lenRead = mFile->readData(pBuffer, length, mPosition);
|
|
if (lenRead < 0) {
|
|
return 0;
|
|
} else {
|
|
mPosition += lenRead;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lenRead;
|
|
}
|
|
|
|
s32 JSUFileInputStream::seekPos(s32 pos, JSUStreamSeekFrom seekFrom) {
|
|
s32 oldPos = mPosition;
|
|
|
|
switch (seekFrom) {
|
|
case JSUStreamSeekFrom_SET:
|
|
mPosition = pos;
|
|
break;
|
|
case JSUStreamSeekFrom_END:
|
|
mPosition = mFile->getFileSize() - pos;
|
|
break;
|
|
case JSUStreamSeekFrom_CUR:
|
|
mPosition += pos;
|
|
break;
|
|
}
|
|
|
|
if (mPosition < 0) {
|
|
mPosition = 0;
|
|
}
|
|
|
|
if (mPosition > mFile->getFileSize()) {
|
|
mPosition = mFile->getFileSize();
|
|
}
|
|
|
|
return mPosition - oldPos;
|
|
}
|
|
|
|
s32 JSUFileInputStream::getLength() const {
|
|
return mFile->getFileSize();
|
|
}
|
|
|
|
s32 JSUFileInputStream::getPosition() const {
|
|
return mPosition;
|
|
}
|