diff options
| author | lepelog <lepelog@users.noreply.github.com> | 2021-05-03 02:03:24 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-02 20:03:24 -0400 |
| commit | 8fd9f2ab5d5ba4d3fe983c77795d69e22c9fa610 (patch) | |
| tree | 01e9323e07688462a8bec633ed50006ddeaa478f /include/JSystem/JKernel/JKRFileCache.h | |
| parent | 3b7364d481f9951ae227017eca997377efd0d820 (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.h | 57 |
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 */ |
