sead
Loading...
Searching...
No Matches
seadResourceMgr.h
Go to the documentation of this file.
1#ifndef SEAD_RESOURCEMGR_H_
2#define SEAD_RESOURCEMGR_H_
3
4#include <basis/seadAssert.h>
5#include <container/seadTList.h>
6#include <filedevice/seadFileDevice.h>
7#include <heap/seadDisposer.h>
8#include <heap/seadHeap.h>
9#include <prim/seadSafeString.h>
10
11namespace sead {
12
13class Resource;
14
16{
17public:
19 : mPtr(ptr)
20 {
21 }
22
23 operator Resource*() { return mPtr; }
24 operator const Resource*() const { return mPtr; }
25
26 Resource& operator*() { return *mPtr; }
27 Resource* operator->() { return mPtr; }
28
29 const Resource& operator*() const { return *mPtr; }
30 const Resource* operator->() const { return mPtr; }
31
32 bool isNull() const
33 {
34 return mPtr == nullptr;
35 }
36
37private:
39};
40
41class ResourceFactory;
42class Decompressor;
43
45{
47
48public:
49 struct CreateArg
50 {
52 : buffer(nullptr)
53 , file_size(0)
54 , buffer_size(0)
55 , need_unload(false)
56 , factory(nullptr)
57 , ext()
58 , heap(nullptr)
59 , alignment(0x20)
60 {
61 }
62
71 };
72#ifdef cafe
73 static_assert(sizeof(CreateArg) == 0x24, "sead::ResourceMgr::CreateArg size mismatch");
74#endif // cafe
75
103#ifdef cafe
104 static_assert(sizeof(LoadArg) == 0x2C, "sead::ResourceMgr::LoadArg size mismatch");
105#endif // cafe
106
110
111public:
112 ResourceMgr();
113 ~ResourceMgr();
114
116
117 void registerFactory(ResourceFactory* factory, const SafeString& name);
118 void registerDecompressor(Decompressor* decompressor, const SafeString& name);
119
120 void unregisterFactory(ResourceFactory* factory);
121 void unregisterDecompressor(Decompressor* decompressor);
122
124 ResourcePtr tryLoad(const LoadArg& arg, const SafeString& convert_ext, Decompressor* decomp);
125
127 {
129 if (ret.isNull())
130 {
131 SEAD_ASSERT_MSG(false, "loadWithoutDecomp failed: %s", arg.path.cstr());
132 }
133 return ret;
134 }
135
138
139private:
144};
145#ifdef cafe
146static_assert(sizeof(ResourceMgr) == 0x38, "sead::ResourceMgr size mismatch");
147#endif // cafe
148
149} // namespace sead
150
151#endif // SEAD_RESOURCEMGR_H_
Definition seadDecompressor.h:13
Definition seadFileDevice.h:56
Definition seadHeap.h:23
Definition seadResource.h:66
Definition seadResourceMgr.h:45
void unregisterDecompressor(Decompressor *decompressor)
Definition seadResourceMgr.cpp:60
ResourcePtr tryLoadWithoutDecomp(const LoadArg &arg)
Definition seadResourceMgr.cpp:65
Decompressor * findDecompressor(const SafeString &ext)
DecompressorList mDecompList
Definition seadResourceMgr.h:142
ResourceMgr()
Definition seadResourceMgr.cpp:13
void unregisterFactory(ResourceFactory *factory)
Definition seadResourceMgr.cpp:55
void registerFactory(ResourceFactory *factory, const SafeString &name)
Definition seadResourceMgr.cpp:40
FactoryList mFactoryList
Definition seadResourceMgr.h:140
void registerDecompressor(Decompressor *decompressor, const SafeString &name)
Definition seadResourceMgr.cpp:47
ResourceFactory * findFactory(const SafeString &ext)
ResourceFactory * mNullResourceFactory
Definition seadResourceMgr.h:143
TList< Decompressor * > DecompressorList
Definition seadResourceMgr.h:109
ResourcePtr tryLoad(const LoadArg &arg, const SafeString &convert_ext, Decompressor *decomp)
Definition seadResourceMgr.cpp:86
ResourceList mPostCreateResourceList
Definition seadResourceMgr.h:141
TList< ResourceFactory * > FactoryList
Definition seadResourceMgr.h:107
~ResourceMgr()
Definition seadResourceMgr.cpp:31
ResourcePtr loadWithoutDecomp(const LoadArg &arg)
Definition seadResourceMgr.h:126
TList< Resource * > ResourceList
Definition seadResourceMgr.h:108
Definition seadResourceMgr.h:16
Resource * operator->()
Definition seadResourceMgr.h:27
operator Resource *()
Definition seadResourceMgr.h:23
Resource * mPtr
Definition seadResourceMgr.h:38
bool isNull() const
Definition seadResourceMgr.h:32
ResourcePtr(Resource *ptr)
Definition seadResourceMgr.h:18
const Resource & operator*() const
Definition seadResourceMgr.h:29
Resource & operator*()
Definition seadResourceMgr.h:26
operator const Resource *() const
Definition seadResourceMgr.h:24
const Resource * operator->() const
Definition seadResourceMgr.h:30
Definition seadResource.h:15
Definition seadTList.h:49
Definition seadAssert.h:44
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
#define SEAD_ASSERT_MSG(condition, format,...)
Definition seadAssert.h:33
#define SEAD_SINGLETON_DISPOSER(CLASS)
Definition seadDisposer.h:29
Definition seadResourceMgr.h:50
CreateArg()
Definition seadResourceMgr.h:51
u32 file_size
Definition seadResourceMgr.h:64
u8 * buffer
Definition seadResourceMgr.h:63
Heap * heap
Definition seadResourceMgr.h:69
s32 alignment
Definition seadResourceMgr.h:70
u32 buffer_size
Definition seadResourceMgr.h:65
bool need_unload
Definition seadResourceMgr.h:66
SafeString ext
Definition seadResourceMgr.h:68
ResourceFactory * factory
Definition seadResourceMgr.h:67
Definition seadResourceMgr.h:77
LoadArg()
Definition seadResourceMgr.h:78
FileDevice * device
Definition seadResourceMgr.h:100
u32 load_data_buffer_size
Definition seadResourceMgr.h:98
u8 * load_data_buffer
Definition seadResourceMgr.h:97
SafeString path
Definition seadResourceMgr.h:92
u32 div_size
Definition seadResourceMgr.h:101
Heap * load_data_heap
Definition seadResourceMgr.h:94
ResourceFactory * factory
Definition seadResourceMgr.h:99
s32 load_data_alignment
Definition seadResourceMgr.h:96
Heap * instance_heap
Definition seadResourceMgr.h:93
s32 instance_alignment
Definition seadResourceMgr.h:95