mirror of
https://github.com/zeldaret/ss
synced 2026-05-27 08:08:07 -04:00
Merge pull request #26 from elijah-thomas774/ut_FileStream
ut_FileStream
This commit is contained in:
@@ -192,6 +192,7 @@ nw4r/ut/ut_IOStream.cpp:
|
||||
nw4r/ut/ut_FileStream.cpp:
|
||||
.text start:0x8042B560 end:0x8042B6EC
|
||||
.ctors start:0x804DB93C end:0x804DB940
|
||||
.sbss start:0x80576598 end:0x805765A0
|
||||
|
||||
nw4r/ut/ut_DvdFileStream.cpp:
|
||||
.text start:0x8042B6F0 end:0x8042BDAC
|
||||
|
||||
@@ -23969,8 +23969,8 @@ CancelAsync__Q34nw4r2ut10FileStreamFPFlPQ34nw4r2ut8IOStreamPv_vPv = .text:0x8042
|
||||
Skip__Q44nw4r2ut10FileStream12FilePositionFl = .text:0x8042B580; // type:function size:0x64
|
||||
Append__Q44nw4r2ut10FileStream12FilePositionFl = .text:0x8042B5F0; // type:function size:0x50
|
||||
Seek__Q44nw4r2ut10FileStream12FilePositionFlUl = .text:0x8042B640; // type:function size:0x88
|
||||
GetRuntimeTypeInfo__Q34nw4r2ut10FileStreamCFv = .text:0x8042B6D0; // type:function size:0x8
|
||||
__sinit_\ut_FileStream_cpp = .text:0x8042B6E0; // type:function size:0xC
|
||||
GetRuntimeTypeInfo__Q34nw4r2ut10FileStreamCFv = .text:0x8042B6D0; // type:function size:0x8 scope:weak
|
||||
__sinit_\ut_FileStream_cpp = .text:0x8042B6E0; // type:function size:0xC scope:local
|
||||
DvdAsyncCallback___Q34nw4r2ut13DvdFileStreamFlP11DVDFileInfo = .text:0x8042B6F0; // type:function size:0x2C
|
||||
DvdCBAsyncCallback___Q34nw4r2ut13DvdFileStreamFlP15DVDCommandBlock = .text:0x8042B720; // type:function size:0x28
|
||||
__ct__Q34nw4r2ut13DvdFileStreamFl = .text:0x8042B750; // type:function size:0xBC
|
||||
@@ -40809,7 +40809,7 @@ lbl_80576580 = .sbss:0x80576580; // type:object size:0x1 data:byte
|
||||
lbl_80576584 = .sbss:0x80576584; // type:object size:0x4 data:4byte
|
||||
lbl_80576588 = .sbss:0x80576588; // type:object size:0x8 data:4byte
|
||||
typeInfo__Q34nw4r2ut8IOStream = .sbss:0x80576590; // type:object size:0x4 data:4byte
|
||||
lbl_80576598 = .sbss:0x80576598; // type:object size:0x8 data:4byte
|
||||
typeInfo__Q34nw4r2ut10FileStream = .sbss:0x80576598; // type:object size:0x4 data:4byte
|
||||
lbl_805765A0 = .sbss:0x805765A0; // type:object size:0x8 data:4byte
|
||||
lbl_805765A8 = .sbss:0x805765A8; // type:object size:0x8 data:4byte
|
||||
lbl_805765B0 = .sbss:0x805765B0; // type:object size:0x8
|
||||
|
||||
+1
-1
@@ -324,7 +324,7 @@ config.libs = [
|
||||
Object(NonMatching, "nw4r/ut/ut_CharStrmReader.cpp"),
|
||||
Object(Matching, "nw4r/ut/ut_IOStream.cpp"),
|
||||
Object(Matching, "nw4r/ut/ut_TagProcessorBase.cpp"),
|
||||
Object(NonMatching, "nw4r/ut/ut_FileStream.cpp"),
|
||||
Object(Matching, "nw4r/ut/ut_FileStream.cpp"),
|
||||
Object(NonMatching, "nw4r/ut/ut_DvdFileStream.cpp"),
|
||||
Object(NonMatching, "nw4r/ut/ut_DvdLockedFileStream.cpp"),
|
||||
Object(NonMatching, "nw4r/ut/ut_NandFileStream.cpp"),
|
||||
|
||||
@@ -16,14 +16,20 @@ public:
|
||||
public:
|
||||
FilePosition() : mFileSize(0), mFileOffset(0) {}
|
||||
|
||||
u32 GetFileSize() const { return mFileSize; }
|
||||
void SetFileSize(u32 fileSize) { mFileSize = fileSize; }
|
||||
u32 GetFileSize() const {
|
||||
return mFileSize;
|
||||
}
|
||||
void SetFileSize(unsigned long fileSize) {
|
||||
mFileSize = fileSize;
|
||||
}
|
||||
|
||||
u32 Tell() const { return mFileOffset; }
|
||||
u32 Tell() const {
|
||||
return mFileOffset;
|
||||
}
|
||||
|
||||
u32 Skip(s32 offset);
|
||||
u32 Append(s32 offset);
|
||||
void Seek(s32 offset, u32 origin);
|
||||
u32 Skip(long offset);
|
||||
u32 Append(long offset);
|
||||
void Seek(long offset, unsigned long origin);
|
||||
|
||||
private:
|
||||
u32 mFileSize; // at 0x0
|
||||
@@ -35,9 +41,9 @@ public:
|
||||
virtual ~FileStream() {} // at 0xC
|
||||
|
||||
virtual u32 GetSize() const = 0; // at 0x40
|
||||
virtual void Seek(s32 offset, u32 origin); // at 0x44
|
||||
virtual void Seek(long offset, unsigned long origin); // at 0x44
|
||||
virtual void Cancel(); // at 0x48
|
||||
virtual bool CancelAsync(AsyncCallback callback, void* arg); // at 0x4C
|
||||
virtual bool CancelAsync(AsyncCallback callback, void *arg); // at 0x4C
|
||||
virtual bool CanSeek() const = 0; // at 0x50
|
||||
virtual bool CanCancel() const = 0; // at 0x54
|
||||
virtual u32 Tell() const = 0; // at 0x58
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
#include <nw4r/ut.h>
|
||||
|
||||
namespace nw4r {
|
||||
namespace ut {
|
||||
|
||||
NW4R_UT_RTTI_DEF_DERIVED(FileStream, IOStream);
|
||||
|
||||
void FileStream::Cancel() {}
|
||||
|
||||
bool FileStream::CancelAsync(AsyncCallback callback, void *arg) {
|
||||
#pragma unused(callback)
|
||||
#pragma unused(arg)
|
||||
return true;
|
||||
}
|
||||
|
||||
u32 FileStream::FilePosition::Skip(long offset) {
|
||||
if (offset != 0) {
|
||||
s64 newOffset = mFileOffset + offset;
|
||||
mFileOffset = Clamp<s64>(newOffset, 0, mFileSize);
|
||||
}
|
||||
|
||||
return mFileOffset;
|
||||
}
|
||||
|
||||
u32 FileStream::FilePosition::Append(long offset) {
|
||||
s64 newOffset = mFileOffset + offset;
|
||||
|
||||
if (newOffset < 0) {
|
||||
mFileOffset = 0;
|
||||
} else {
|
||||
mFileOffset = newOffset;
|
||||
mFileSize = Max(mFileOffset, mFileSize);
|
||||
}
|
||||
|
||||
return mFileOffset;
|
||||
}
|
||||
|
||||
void FileStream::FilePosition::Seek(long offset, unsigned long origin) {
|
||||
switch (origin) {
|
||||
case SEEK_BEG:
|
||||
mFileOffset = 0;
|
||||
break;
|
||||
case SEEK_END:
|
||||
mFileOffset = mFileSize;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Skip(offset);
|
||||
}
|
||||
|
||||
// TODO: This should not be necessary. Because of nw4r::snd? still the case for ss
|
||||
DECOMP_FORCEACTIVE(ut_FileStream_cpp, FileStream::GetRuntimeTypeInfo);
|
||||
|
||||
} // namespace ut
|
||||
} // namespace nw4r
|
||||
|
||||
Reference in New Issue
Block a user