summaryrefslogtreecommitdiff
path: root/src/JSystem/JSupport/JSUFileStream.cpp
diff options
context:
space:
mode:
authorLuke Street <luke.street@encounterpc.com>2023-09-10 00:42:26 -0400
committerLuke Street <luke.street@encounterpc.com>2023-09-10 00:48:55 -0400
commitadb95b135c3d7498eba29bbd9728d345eed5a407 (patch)
tree655575b939c12067569263171b68c079b1a232c8 /src/JSystem/JSupport/JSUFileStream.cpp
parent81ac53f1317dafb3506ae3ed8b2820d40645c3c8 (diff)
Import project
Original repository: https://github.com/encounter/ww
Diffstat (limited to 'src/JSystem/JSupport/JSUFileStream.cpp')
-rw-r--r--src/JSystem/JSupport/JSUFileStream.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/JSystem/JSupport/JSUFileStream.cpp b/src/JSystem/JSupport/JSUFileStream.cpp
new file mode 100644
index 00000000..8ac2ddf1
--- /dev/null
+++ b/src/JSystem/JSupport/JSUFileStream.cpp
@@ -0,0 +1,71 @@
+//
+// Generated by dtk
+// Translation Unit: JSUFileStream.cpp
+//
+
+#include "JSystem/JSupport/JSUFileStream.h"
+#include "JSystem/JKernel/JKRFile.h"
+
+/* 802BF81C-802BF860 .text __ct__18JSUFileInputStreamFP7JKRFile */
+JSUFileInputStream::JSUFileInputStream(JKRFile* pFile) {
+ mFile = pFile;
+ mPosition = 0;
+}
+
+/* 802BF860-802BF930 .text readData__18JSUFileInputStreamFPvl */
+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;
+}
+
+/* 802BF930-802BFA10 .text seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom */
+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;
+}
+
+/* 802BFA10-802BFA40 .text getLength__18JSUFileInputStreamCFv */
+s32 JSUFileInputStream::getLength() const {
+ return mFile->getFileSize();
+}
+
+/* 802BFA40-802BFA48 .text getPosition__18JSUFileInputStreamCFv */
+s32 JSUFileInputStream::getPosition() const {
+ return mPosition;
+}