2021-03-28 22:49:05 +02:00
|
|
|
#ifndef JSUINPUTSTREAM_H
|
|
|
|
|
#define JSUINPUTSTREAM_H
|
2021-03-15 07:12:44 +01:00
|
|
|
|
2021-05-03 02:03:24 +02:00
|
|
|
#include "JSystem/JSupport/JSUIosBase.h"
|
2021-03-15 07:12:44 +01:00
|
|
|
|
2024-04-12 00:10:30 -06:00
|
|
|
/**
|
|
|
|
|
* @ingroup jsystem-jsupport
|
|
|
|
|
*
|
|
|
|
|
*/
|
2021-05-03 02:03:24 +02:00
|
|
|
class JSUInputStream : public JSUIosBase {
|
|
|
|
|
public:
|
2021-08-28 16:32:14 +02:00
|
|
|
JSUInputStream() {}
|
2021-05-03 02:03:24 +02:00
|
|
|
virtual ~JSUInputStream();
|
|
|
|
|
|
|
|
|
|
/* vt[3] */ virtual s32 getAvailable() const = 0;
|
|
|
|
|
/* vt[4] */ virtual s32 skip(s32);
|
2021-08-28 16:32:14 +02:00
|
|
|
/* vt[5] */ virtual u32 readData(void*, s32) = 0;
|
2021-05-03 02:03:24 +02:00
|
|
|
|
2023-09-04 06:41:08 -07:00
|
|
|
u32 readU32() {
|
|
|
|
|
u32 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-11 23:39:53 +01:00
|
|
|
u32 read32b() {
|
|
|
|
|
u32 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-30 14:22:17 -07:00
|
|
|
s32 readS32() {
|
|
|
|
|
s32 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-11 23:39:53 +01:00
|
|
|
s16 readS16() {
|
|
|
|
|
s16 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u16 readU16() {
|
|
|
|
|
u16 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u8 readU8() {
|
|
|
|
|
u8 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-30 14:22:17 -07:00
|
|
|
u8 read8b() {
|
|
|
|
|
u8 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u16 read16b() {
|
|
|
|
|
u16 val;
|
|
|
|
|
this->read(&val, sizeof(val));
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-19 21:05:53 -08:00
|
|
|
JSUInputStream& operator>>(u32& dest) {
|
|
|
|
|
read(&dest, 4);
|
|
|
|
|
return *this;
|
2024-10-23 19:25:13 -04:00
|
|
|
}
|
|
|
|
|
|
2025-01-19 21:05:53 -08:00
|
|
|
JSUInputStream& operator>>(u16& dest) {
|
2024-10-23 19:25:13 -04:00
|
|
|
read(&dest, 2);
|
2025-01-19 21:05:53 -08:00
|
|
|
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(¶m_0, 4);
|
2024-10-23 19:25:13 -04:00
|
|
|
}
|
|
|
|
|
|
2021-05-03 02:03:24 +02:00
|
|
|
// TODO: return value probably wrong
|
2021-08-28 16:32:14 +02:00
|
|
|
/* 802DC298 */ s32 read(void*, s32);
|
2025-01-19 21:05:53 -08:00
|
|
|
char* read(char*);
|
2021-08-28 16:32:14 +02:00
|
|
|
}; // Size = 0x8
|
2021-05-03 02:03:24 +02:00
|
|
|
|
2021-12-21 06:06:57 -08:00
|
|
|
// move?
|
2024-04-12 00:10:30 -06:00
|
|
|
/**
|
|
|
|
|
* @ingroup jsystem-jsupport
|
|
|
|
|
*
|
|
|
|
|
*/
|
2021-12-21 06:06:57 -08:00
|
|
|
template <typename T>
|
|
|
|
|
T* JSUConvertOffsetToPtr(const void*, const void*);
|
|
|
|
|
|
2021-03-28 22:49:05 +02:00
|
|
|
#endif /* JSUINPUTSTREAM_H */
|