Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
NandFileStream.h
Go to the documentation of this file.
1#ifndef NW4HBM_UT_NAND_FILE_STREAM_H
2#define NW4HBM_UT_NAND_FILE_STREAM_H
3
4#include "FileStream.h"
5
6#include <revolution/nand.h>
7#include "global.h"
8
9namespace nw4hbm {
10 namespace ut {
11
12 class NandFileStream : public FileStream {
13 public:
14 NandFileStream(const char* path, u32 mode);
15 NandFileStream(const NANDFileInfo* info, u32 mode, bool enableClose);
16
17 bool Open(const char* path, u32 mode);
18 bool Open(const NANDFileInfo* info, u32 mode, bool enableClose) NO_INLINE;
19
21 /* 0x0C */ virtual ~NandFileStream();
22 /* 0x10 */ virtual void Close();
23 /* 0x14 */ virtual s32 Read(void* pDst, u32 size);
24 /* 0x18 */ virtual bool ReadAsync(void* pDst, u32 size, IOStreamCallback pCallback,
25 void* pCallbackArg);
26 /* 0x1C */ virtual void Write(const void* pSrc, u32 size);
27 /* 0x20 */ virtual bool WriteAsync(const void* pSrc, u32 size,
28 IOStreamCallback pCallback, void* pCallbackArg);
29 /* 0x44 */ virtual void Seek(s32 offset, u32 origin);
30
31 // the order is important
32 /* 0x24 */ virtual bool IsBusy() const { return mIsBusy; }
33 /* 0x58 */ virtual u32 Tell() const { return mFilePosition.Tell(); }
34 /* 0x40 */ virtual u32 GetSize() const { return mFilePosition.GetFileSize(); }
35 /* 0x28 */ virtual bool CanAsync() const { return true; }
36 /* 0x50 */ virtual bool CanSeek() const { return true; }
37 /* 0x2C */ virtual bool CanRead() const { return mCanRead; }
38 /* 0x30 */ virtual bool CanWrite() const { return mCanWrite; }
39 /* 0x54 */ virtual bool CanCancel() const { return false; }
40 /* 0x34 */ virtual u32 GetOffsetAlign() const { return 1; }
41 /* 0x38 */ virtual u32 GetSizeAlign() const { return 32; }
42 /* 0x3C */ virtual u32 GetBufferAlign() const { return 32; }
43
44 private:
50
51 static void NandAsyncCallback_(s32 result, NANDCommandBlock* pBlock);
52
53 void Initialize_();
54 bool ReadAsyncImpl(void* buf, u32 length, IOStreamCallback pCallback,
55 void* pCallbackArg);
56 void ReadAsyncSetArgs(IOStreamCallback pCallback, void* pCallbackArg);
57
58 /* 0x000 (base) */
61 /* 0x164 */ bool mCanRead;
62 /* 0x165 */ bool mCanWrite;
63 /* 0x166 */ volatile bool mIsBusy;
64 /* 0x167 */ bool mCloseOnDestroyFlg;
65 /* 0x168 */ bool mCloseEnableFlg;
66 }; // size = 0x16C
67
68 } // namespace ut
69} // namespace nw4hbm
70
71#endif
static s32 offset
Definition WUD.c:1669
Definition FileStream.h:24
u32 Tell() const
Definition FileStream.h:31
u32 GetFileSize() const
Definition FileStream.h:28
Definition FileStream.h:9
void(*) IOStreamCallback(s32 result, IOStream *pStream, void *pCallbackArg)
Definition IOStream.h:13
Definition NandFileStream.h:12
virtual u32 Tell() const
Definition NandFileStream.h:33
bool ReadAsyncImpl(void *buf, u32 length, IOStreamCallback pCallback, void *pCallbackArg)
Definition ut_NandFileStream.cpp:156
volatile bool mIsBusy
Definition NandFileStream.h:63
NandFileStream(const char *path, u32 mode)
Definition ut_NandFileStream.cpp:39
void Initialize_()
Definition ut_NandFileStream.cpp:22
virtual ~NandFileStream()
Definition ut_NandFileStream.cpp:50
bool mCloseEnableFlg
Definition NandFileStream.h:65
virtual bool IsBusy() const
Definition NandFileStream.h:32
virtual u32 GetSizeAlign() const
Definition NandFileStream.h:41
virtual void Close()
Definition ut_NandFileStream.cpp:119
virtual bool CanRead() const
Definition NandFileStream.h:37
virtual bool CanSeek() const
Definition NandFileStream.h:36
bool Open(const char *path, u32 mode)
Definition ut_NandFileStream.cpp:56
virtual bool WriteAsync(const void *pSrc, u32 size, IOStreamCallback pCallback, void *pCallbackArg)
Definition ut_NandFileStream.cpp:190
virtual void Write(const void *pSrc, u32 size)
Definition ut_NandFileStream.cpp:178
virtual bool CanWrite() const
Definition NandFileStream.h:38
NW4HBM_UT_RUNTIME_TYPEINFO
Definition NandFileStream.h:20
bool mCanRead
Definition NandFileStream.h:61
virtual void Seek(s32 offset, u32 origin)
Definition ut_NandFileStream.cpp:214
struct nw4hbm::ut::NandFileStream::NandFileStreamInfo NandFileStreamInfo
FilePosition mFilePosition
Definition NandFileStream.h:59
bool mCloseOnDestroyFlg
Definition NandFileStream.h:64
virtual u32 GetSize() const
Definition NandFileStream.h:34
virtual u32 GetOffsetAlign() const
Definition NandFileStream.h:40
void ReadAsyncSetArgs(IOStreamCallback pCallback, void *pCallbackArg)
Definition ut_NandFileStream.cpp:149
bool mCanWrite
Definition NandFileStream.h:62
static void NandAsyncCallback_(s32 result, NANDCommandBlock *pBlock)
Definition ut_NandFileStream.cpp:10
NandFileStreamInfo mFileInfo
Definition NandFileStream.h:60
virtual s32 Read(void *pDst, u32 size)
Definition ut_NandFileStream.cpp:127
virtual bool CanCancel() const
Definition NandFileStream.h:39
virtual bool CanAsync() const
Definition NandFileStream.h:35
virtual u32 GetBufferAlign() const
Definition NandFileStream.h:42
virtual bool ReadAsync(void *pDst, u32 size, IOStreamCallback pCallback, void *pCallbackArg)
Definition ut_NandFileStream.cpp:139
u32 mode
Definition GXTev.c:56
unsigned int size
Definition __os.h:106
unsigned long u32
Definition types.h:12
signed long s32
Definition types.h:11
IOSResourceRequest * buf[RESPONSE_REQ_BUF_LEN]
Definition ipcclt.c:47
Definition HBMAnmController.h:6
Definition nand.h:70
Definition nand.h:60
NANDCommandBlock nandBlock
Definition NandFileStream.h:46
NandFileStream * stream
Definition NandFileStream.h:48
NANDFileInfo nandInfo
Definition NandFileStream.h:47
Definition d_a_npc_ks.cpp:47