most of JHostIO / m_Do_hostIO done (#2288)

This commit is contained in:
TakaRikka
2025-01-19 21:05:53 -08:00
committed by GitHub
parent 7137f49bfc
commit e0824a1590
41 changed files with 3653 additions and 52 deletions
+25 -11
View File
@@ -3,12 +3,6 @@
#include "JSystem/JSupport/JSUIosBase.h"
enum JSUStreamSeekFrom {
JSUStreamSeekFrom_SET = 0, // absolute
JSUStreamSeekFrom_CUR = 1, // relative
JSUStreamSeekFrom_END = 2, // relative to end
};
/**
* @ingroup jsystem-jsupport
*
@@ -70,18 +64,38 @@ public:
return val;
}
JSUInputStream* operator>>(u8& dest) {
read(&dest, 1);
return this;
JSUInputStream& operator>>(u32& dest) {
read(&dest, 4);
return *this;
}
JSUInputStream* operator>>(s16& dest) {
JSUInputStream& operator>>(u16& dest) {
read(&dest, 2);
return this;
return *this;
}
JSUInputStream& operator>>(u8& dest) {
read(&dest, 1);
return *this;
}
JSUInputStream& operator>>(s16& dest) {
read(&dest, 2);
return *this;
}
JSUInputStream& operator>>(char* dest) {
read(dest);
return *this;
}
s32 read(u32& param_0) {
return read(&param_0, 4);
}
// TODO: return value probably wrong
/* 802DC298 */ s32 read(void*, s32);
char* read(char*);
}; // Size = 0x8
// move?
+10 -3
View File
@@ -3,8 +3,10 @@
#include "dolphin/types.h"
enum EIoState {
IOS_STATE_1 = 1,
enum JSUStreamSeekFrom {
JSUStreamSeekFrom_SET = 0, // absolute
JSUStreamSeekFrom_CUR = 1, // relative
JSUStreamSeekFrom_END = 2, // relative to end
};
/**
@@ -13,6 +15,11 @@ enum EIoState {
*/
class JSUIosBase {
public:
enum EIoState {
IOS_STATE_1 = 1,
IOS_STATE_2 = 2,
};
JSUIosBase() { mState = false; }
virtual ~JSUIosBase() {}
@@ -22,7 +29,7 @@ public:
void setState(EIoState state) { mState |= state; }
private:
u8 mState;
bool mState;
}; // Size = 0x8
#endif
+27 -1
View File
@@ -2,6 +2,7 @@
#define JSUMEMORYSTREAM_H
#include "JSystem/JSupport/JSURandomInputStream.h"
#include "JSystem/JSupport/JSURandomOutputStream.h"
/**
* @ingroup jsystem-jsupport
@@ -9,7 +10,7 @@
*/
class JSUMemoryInputStream : public JSURandomInputStream {
public:
JSUMemoryInputStream(const void* res, u32 size) { setBuffer(res, size); }
JSUMemoryInputStream(const void* res, s32 size) { setBuffer(res, size); }
/* 802552B8 */ virtual ~JSUMemoryInputStream() {}
/* 802DC520 */ void setBuffer(void const*, s32);
@@ -18,10 +19,35 @@ public:
/* 802DC628 */ s32 getLength() const;
/* 802DC630 */ s32 getPosition() const;
void* getPointer() const {
return (u8*)mBuffer + mPosition;
}
private:
/* 0x08 */ const void* mBuffer;
/* 0x0C */ s32 mLength;
/* 0x10 */ s32 mPosition;
}; // Size = 0x14
class JSUMemoryOutputStream : public JSURandomOutputStream {
public:
JSUMemoryOutputStream() { setBuffer(NULL, 0); }
JSUMemoryOutputStream(void* buffer, s32 len) { setBuffer(buffer, len); }
void setBuffer(void* buffer, s32 len);
virtual ~JSUMemoryOutputStream() {}
virtual s32 writeData(const void*, s32);
virtual s32 getLength() const;
virtual s32 getPosition() const;
virtual s32 seek(s32, JSUStreamSeekFrom);
virtual s32 getAvailable() const;
virtual s32 seekPos(s32, JSUStreamSeekFrom);
private:
/* 0x08 */ void* mBuffer;
/* 0x0C */ s32 mLength;
/* 0x10 */ s32 mPosition;
}; // Size = 0x14
#endif /* JSUMEMORYSTREAM_H */
@@ -0,0 +1,52 @@
#ifndef JSUOUTPUTSTREAM_H
#define JSUOUTPUTSTREAM_H
#include "JSystem/JSupport/JSUIosBase.h"
/**
* @ingroup jsystem-jsupport
*
*/
class JSUOutputStream : public JSUIosBase {
public:
JSUOutputStream() {}
virtual ~JSUOutputStream();
virtual s32 skip(s32, s8) = 0;
virtual s32 writeData(const void*, s32) = 0;
s32 write(const void*, s32);
void write(const char*);
JSUOutputStream& operator<<(u32 param_0) {
write(&param_0, sizeof(u32));
return *this;
}
JSUOutputStream& operator<<(s32 param_0) {
write(&param_0, sizeof(s32));
return *this;
}
JSUOutputStream& operator<<(s16 param_0) {
write(&param_0, sizeof(s16));
return *this;
}
JSUOutputStream& operator<<(u16 param_0) {
write(&param_0, sizeof(u16));
return *this;
}
JSUOutputStream& operator<<(u8 param_0) {
write(&param_0, sizeof(u8));
return *this;
}
JSUOutputStream& operator<<(const char* param_0) {
write(param_0);
return *this;
}
}; // Size = 0x8
#endif /* JSUOUTPUTSTREAM_H */
@@ -0,0 +1,24 @@
#ifndef JSURANDOMOUTPUTSTREAM_H_
#define JSURANDOMOUTPUTSTREAM_H_
#include "JSystem/JSupport/JSUOutputStream.h"
/**
* @ingroup jsystem-jsupport
*
*/
class JSURandomOutputStream : public JSUOutputStream {
public:
JSURandomOutputStream() {}
virtual ~JSURandomOutputStream() {}
/* vt[3] */ virtual s32 skip(s32, s8);
/* vt[4] */ virtual s32 writeData(const void*, s32) = 0;
/* vt[5] */ virtual s32 getLength() const = 0;
/* vt[6] */ virtual s32 getPosition() const = 0;
/* vt[7] */ virtual s32 seek(s32, JSUStreamSeekFrom);
/* vt[8] */ virtual s32 getAvailable() const;
/* vt[9] */ virtual s32 seekPos(s32, JSUStreamSeekFrom) = 0;
}; // Size = 0x8
#endif