sead
Loading...
Searching...
No Matches
seadResource.h
Go to the documentation of this file.
1#ifndef SEAD_RESOURCE_H_
2#define SEAD_RESOURCE_H_
3
4#include <basis/seadNew.h>
5#include <container/seadTList.h>
6#include <heap/seadDisposer.h>
7#include <heap/seadHeap.h>
8#include <prim/seadBitFlag.h>
9#include <resource/seadDecompressor.h>
10#include <resource/seadResourceMgr.h>
11
12namespace sead {
13
14class Resource : public TListNode<Resource*>
15{
17
18public:
19 Resource();
20 virtual ~Resource();
21
22protected:
23 virtual void doPostCreate_() { }
24};
25#ifdef cafe
26static_assert(sizeof(Resource) == 0x14, "sead::Resource size mismatch");
27#endif // cafe
28
30{
32
33public:
35 ~DirectResource() override;
36
37 virtual u32 getLoadDataAlignment() { return 4; }
38
39protected:
40 virtual void doCreate_(u8*, u32, Heap*) { }
41
42public:
43 void create(u8* data, u32 size, u32 buffer_size, bool need_delete, Heap* instance_heap);
44
45 u8* getData() const
46 {
47 return mRawData;
48 }
49
50 u32 getSize() const
51 {
52 return mRawSize;
53 }
54
55protected:
60};
61#ifdef cafe
62static_assert(sizeof(DirectResource) == 0x24, "sead::DirectResource size mismatch");
63#endif // cafe
64
66{
67public:
71 , mExt()
72 {
73 }
74
75 ~ResourceFactory() override;
76
77 virtual Resource* create(const ResourceMgr::CreateArg& arg) = 0;
78 virtual Resource* tryCreate(const ResourceMgr::LoadArg& arg) = 0;
79 virtual Resource* tryCreateWithDecomp(const ResourceMgr::LoadArg& arg, Decompressor* decomp) = 0;
80
81 void setExt(const SafeString& ext)
82 {
83 mExt.copy(ext);
84 }
85
86protected:
88};
89#ifdef cafe
90static_assert(sizeof(ResourceFactory) == 0x50, "sead::ResourceFactory size mismatch");
91#endif // cafe
92
94{
95public:
100
102 {
103 }
104
105 Resource* create(const ResourceMgr::CreateArg& arg) override;
106 Resource* tryCreate(const ResourceMgr::LoadArg& arg) override;
107 Resource* tryCreateWithDecomp(const ResourceMgr::LoadArg& arg, Decompressor* decomp) override;
108
109protected:
110 virtual DirectResource* newResource_(Heap* heap, s32 alignment) = 0;
111};
112
113template <typename T>
115{
116public:
121
123 {
124 }
125
126private:
127 virtual DirectResource* newResource_(Heap* heap, s32 alignment)
128 {
129 return new(heap, alignment) T;
130 }
131};
132
133} // namespace sead
134
135#endif // SEAD_RESOURCE_H_
Definition seadDecompressor.h:13
Definition seadResource.h:94
Resource * tryCreate(const ResourceMgr::LoadArg &arg) override
Definition seadResource.cpp:76
DirectResourceFactoryBase()
Definition seadResource.h:96
virtual DirectResource * newResource_(Heap *heap, s32 alignment)=0
Resource * create(const ResourceMgr::CreateArg &arg) override
Definition seadResource.cpp:56
~DirectResourceFactoryBase() override
Definition seadResource.h:101
Resource * tryCreateWithDecomp(const ResourceMgr::LoadArg &arg, Decompressor *decomp) override
Definition seadResource.cpp:116
Definition seadResource.h:115
virtual DirectResource * newResource_(Heap *heap, s32 alignment)
Definition seadResource.h:127
virtual ~DirectResourceFactory()
Definition seadResource.h:122
DirectResourceFactory()
Definition seadResource.h:117
Definition seadResource.h:30
DirectResource()
Definition seadResource.cpp:18
u32 mRawSize
Definition seadResource.h:57
u8 * getData() const
Definition seadResource.h:45
virtual u32 getLoadDataAlignment()
Definition seadResource.h:37
~DirectResource() override
Definition seadResource.cpp:27
u32 mBufferSize
Definition seadResource.h:58
void create(u8 *data, u32 size, u32 buffer_size, bool need_delete, Heap *instance_heap)
Definition seadResource.cpp:33
u8 * mRawData
Definition seadResource.h:56
BitFlag32 mSettingFlag
Definition seadResource.h:59
u32 getSize() const
Definition seadResource.h:50
virtual void doCreate_(u8 *, u32, Heap *)
Definition seadResource.h:40
Definition seadSafeString.h:421
Definition seadHeap.h:23
friend IDisposer::IDisposer()
Definition seadDisposer.h:12
Definition seadResource.h:66
FixedSafeString< 32 > mExt
Definition seadResource.h:87
virtual Resource * create(const ResourceMgr::CreateArg &arg)=0
ResourceFactory()
Definition seadResource.h:68
void setExt(const SafeString &ext)
Definition seadResource.h:81
virtual Resource * tryCreate(const ResourceMgr::LoadArg &arg)=0
virtual Resource * tryCreateWithDecomp(const ResourceMgr::LoadArg &arg, Decompressor *decomp)=0
~ResourceFactory() override
Definition seadResource.cpp:49
Definition seadResourceMgr.h:45
Definition seadResource.h:15
virtual void doPostCreate_()
Definition seadResource.h:23
virtual ~Resource()
Definition seadResource.cpp:14
Resource()
Definition seadResource.cpp:9
Definition seadAssert.h:44
BitFlag< u32 > BitFlag32
Definition seadBitFlag.h:125
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
#define SEAD_RTTI_OVERRIDE(CLASS, BASE)
Definition seadRuntimeTypeInfo.h:96
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75
Definition seadResourceMgr.h:50
Definition seadResourceMgr.h:77