summaryrefslogtreecommitdiff
path: root/include/JSystem/JKernel/JKRFileCache.h
diff options
context:
space:
mode:
authorlepelog <lepelog@users.noreply.github.com>2021-05-03 02:03:24 +0200
committerGitHub <noreply@github.com>2021-05-02 20:03:24 -0400
commit8fd9f2ab5d5ba4d3fe983c77795d69e22c9fa610 (patch)
tree01e9323e07688462a8bec633ed50006ddeaa478f /include/JSystem/JKernel/JKRFileCache.h
parent3b7364d481f9951ae227017eca997377efd0d820 (diff)
Copy JKernel (#126)
* start JSystem * JKRAram and JUTGamePad * started heap and thread * more JKernel * mostly finished JKernel * delete unused asm * JKRFileFinder * delete unused asm and match findNextFile * format * fix mtx_vec
Diffstat (limited to 'include/JSystem/JKernel/JKRFileCache.h')
-rw-r--r--include/JSystem/JKernel/JKRFileCache.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/include/JSystem/JKernel/JKRFileCache.h b/include/JSystem/JKernel/JKRFileCache.h
index ff00b5fc9a..69e4b8d3d3 100644
--- a/include/JSystem/JKernel/JKRFileCache.h
+++ b/include/JSystem/JKernel/JKRFileCache.h
@@ -1,6 +1,63 @@
#ifndef JKRFILECACHE_H
#define JKRFILECACHE_H
+#include "JSystem/JKernel/JKRFileLoader.h"
#include "dolphin/types.h"
+class JKRHeap;
+class JKRFileCache : public JKRFileLoader {
+public:
+ class CCacheBlock {
+ public:
+ CCacheBlock(u32, u32, const void*);
+ ~CCacheBlock() {}
+
+ public:
+ /* 0x00 */ JSULink<CCacheBlock> mCacheBlockLink;
+ /* 0x10 */ u32 mReferenceCount;
+ /* 0x14 */ u32 mFileId;
+ /* 0x18 */ u32 mFileSize;
+ /* 0x1C */ void* mMemoryPtr;
+ };
+
+protected:
+ JKRFileCache(const char*, const char*);
+ virtual ~JKRFileCache();
+
+ CCacheBlock* findCacheBlock(const void*) const;
+ CCacheBlock* findCacheBlock(u32) const;
+ bool findFile(char*, const char*) const;
+ char* getDvdPathName(const char*) const;
+ void convStrLower(char*) const;
+
+public:
+ /* vt[04] */ virtual bool becomeCurrent(const char*); /* override */
+ /* vt[05] */ virtual void* getResource(const char*); /* override */
+ /* vt[06] */ virtual void* getResource(u32, const char*); /* override */
+ /* vt[07] */ virtual u32 readResource(void*, u32, const char*); /* override */
+ /* vt[08] */ virtual u32 readResource(void*, u32, u32, const char*); /* override */
+ /* vt[09] */ virtual void removeResourceAll(void); /* override */
+ /* vt[10] */ virtual bool removeResource(void*); /* override */
+ /* vt[11] */ virtual bool detachResource(void*); /* override */
+ /* vt[12] */ virtual u32 getResSize(const void*) const; /* override */
+ /* vt[13] */ virtual u32 countFile(const char*) const; /* override */
+ /* vt[14] */ virtual JKRFileFinder* getFirstFile(const char*) const; /* override */
+ /* vt[15] */ virtual void* getFsResource(const char*);
+ /* vt[16] */ virtual void* getNameResource(u32, const char*);
+ /* vt[17] */ virtual u32 readFsResource(void*, u32, const char*);
+ /* vt[18] */ virtual u32 readNameResource(void*, u32, u32, const char*);
+
+private:
+ /* 0x00 */ // vtable
+ /* 0x04 */ // JKRFileLoader
+ /* 0x38 */ JKRHeap* mParentHeap;
+ /* 0x3C */ JSUList<CCacheBlock> mCacheBlockList;
+ /* 0x48 */ char* mRootPath;
+ /* 0x4C */ char* mCurrentPath;
+ /* 0x50 */ char* mVolumePath;
+
+public:
+ static JKRFileCache* mount(const char*, JKRHeap*, const char*);
+};
+
#endif /* JKRFILECACHE_H */