sead
Loading...
Searching...
No Matches
aglResParameter.h
Go to the documentation of this file.
1#pragma once
2
3#include <common/aglResCommon.h>
4
5namespace agl { namespace utl {
6
13static_assert(sizeof(ResParameterData) == 0xC, "agl::ResParameterData size mismatch");
14
16{
18
19public:
21 {
22 return ptr()->mNameHash;
23 }
24
25 bool isApply(u32 name_hash)
26 {
27 return getParameterNameHash() == name_hash;
28 }
29
30 const void* getValue() const
31 {
32 return (const void*)(ptr() + 1);
33 }
34};
35
43static_assert(sizeof(ResParameterObjData) == 0x10, "agl::ResParameterObjData size mismatch");
44
46{
48
49public:
52
53public:
54 iterator begin() { return iterator(0, (ResParameterData*)(ptr() + 1)); }
55 constIterator begin() const { return constIterator(0, (ResParameterData*)(ptr() + 1)); }
56 constIterator constBegin() const { return constIterator(0, (ResParameterData*)(ptr() + 1)); }
57
58 iterator end() { return iterator(getNum(), nullptr); }
59 constIterator end() const { return constIterator(getNum(), nullptr); }
60 constIterator constEnd() const { return constIterator(getNum(), nullptr); }
61
62public:
64 {
65 return ptr()->mNameHash;
66 }
67
68 u32 getNum() const
69 {
70 return ptr()->mNum;
71 }
72
73 ResParameter getResParameter(u32 index) const;
74
75 s32 searchIndex(u32 name_hash) const
76 {
77 for (constIterator itr = begin(), itr_end = end(); itr != itr_end; ++itr)
78 if (name_hash == itr->mNameHash)
79 return itr.getIndex();
80
81 return -1;
82 }
83
84 ResParameter searchResParameter(u32 name_hash) const
85 {
86 u32 index = searchIndex(name_hash);
87
89 constIterator itr_end = constIterator(index, nullptr);
90
91 while (itr != itr_end)
92 ++itr;
93
94 return &(*itr);
95 }
96
97 void modifyEndianObj(bool is_le);
98};
99
107static_assert(sizeof(ResParameterListData) == 0x10, "agl::ResParameterListData size mismatch");
108
110{
112
113public:
116
119
120public:
122 listConstIterator listBegin() const { return listConstIterator(0, getResParameterListBasePtr_()); }
123 listConstIterator listConstBegin() const { return listConstIterator(0, getResParameterListBasePtr_()); }
124
125 listIterator listEnd() { return listIterator(getResParameterListNum(), nullptr); }
126 listConstIterator listEnd() const { return listConstIterator(getResParameterListNum(), nullptr); }
127 listConstIterator listConstEnd() const { return listConstIterator(getResParameterListNum(), nullptr); }
128
130 objConstIterator objBegin() const { return objConstIterator(0, getResParameterObjBasePtr_()); }
131 objConstIterator objConstBegin() const { return objConstIterator(0, getResParameterObjBasePtr_()); }
132
133 objIterator objEnd() { return objIterator(getResParameterObjNum(), nullptr); }
134 objConstIterator objEnd() const { return objConstIterator(getResParameterObjNum(), nullptr); }
135 objConstIterator objConstEnd() const { return objConstIterator(getResParameterObjNum(), nullptr); }
136
137public:
139 {
140 return ptr()->mNameHash;
141 }
142
144 {
145 return ptr()->mResParameterListNum;
146 }
147
149 {
150 return ptr()->mResParameterObjNum;
151 }
152
153 ResParameterList getResParameterList(u32 index) const;
154 ResParameterObj getResParameterObj(u32 index) const;
155
156 inline s32 searchListIndex(u32 name_hash) const; // TODO
157 inline s32 searchObjIndex(u32 name_hash) const; // TODO
158
159 void modifyEndianList(bool is_le);
160
161private:
166
168 {
170 while (static_cast<u32>(itr.getIndex()) < getResParameterListNum())
171 ++itr;
172
173 return (ResParameterObjData*)(&(*itr));
174 }
175};
176
178{
179 union
180 {
181 char mSignature[4];
183 };
189 // char mType[];
190
191public:
192 static u32 getVersion();
194
195private:
196 static const u32 cVersion = 1;
197 static const u32 cSignature = 0x504D4141; // PMAA
198 static const u32 cEndianCheckBit = 0x01000001;
199
202};
203static_assert(sizeof(ResParameterArchiveData) == 0x18, "agl::ResParameterArchiveData size mismatch");
204
206{
208
209public:
210 ResParameterArchive(const void* p_data);
211
212 const char* getType() const
213 {
214 const DataType* const data = ptr();
215 return (const char*)(data + 1);
216 }
217
219 {
220 const DataType* const data = ptr();
221 return (const ResParameterListData*)((uintptr_t)(data + 1) + data->mTypeLen);
222 }
223};
224
225} }
#define AGL_RES_COMMON(class_name)
Definition aglResCommon.h:76
#define AGL_RES_FILE_HEADER()
Definition aglResCommon.h:88
Definition aglResCommon.h:12
DataType * ptr()
Definition aglResCommon.h:50
const DataType * ptr() const
Definition aglResCommon.h:55
Definition aglResParameter.h:206
ResParameterList getResParameterList() const
Definition aglResParameter.h:218
const char * getType() const
Definition aglResParameter.h:212
ResParameterArchive(const void *p_data)
Definition aglResParameter.cpp:90
Definition aglResParameter.h:110
objConstIterator objConstEnd() const
Definition aglResParameter.h:135
ResArray< ResParameterObj >::iterator objIterator
Definition aglResParameter.h:117
listConstIterator listEnd() const
Definition aglResParameter.h:126
objIterator objBegin()
Definition aglResParameter.h:129
ResArray< ResParameterList >::iterator listIterator
Definition aglResParameter.h:114
s32 searchListIndex(u32 name_hash) const
listConstIterator listConstEnd() const
Definition aglResParameter.h:127
ResParameterListData * getResParameterListBasePtr_() const
Definition aglResParameter.h:162
s32 searchObjIndex(u32 name_hash) const
ResArray< ResParameterList >::constIterator listConstIterator
Definition aglResParameter.h:115
listIterator listEnd()
Definition aglResParameter.h:125
ResParameterList getResParameterList(u32 index) const
Definition aglResParameter.cpp:55
ResParameterObjData * getResParameterObjBasePtr_() const
Definition aglResParameter.h:167
listConstIterator listConstBegin() const
Definition aglResParameter.h:123
void modifyEndianList(bool is_le)
Definition aglResParameter.cpp:77
u32 getParameterListNameHash() const
Definition aglResParameter.h:138
objConstIterator objEnd() const
Definition aglResParameter.h:134
listIterator listBegin()
Definition aglResParameter.h:121
u32 getResParameterListNum() const
Definition aglResParameter.h:143
objIterator objEnd()
Definition aglResParameter.h:133
objConstIterator objConstBegin() const
Definition aglResParameter.h:131
ResParameterObj getResParameterObj(u32 index) const
Definition aglResParameter.cpp:66
listConstIterator listBegin() const
Definition aglResParameter.h:122
u32 getResParameterObjNum() const
Definition aglResParameter.h:148
ResArray< ResParameterObj >::constIterator objConstIterator
Definition aglResParameter.h:118
objConstIterator objBegin() const
Definition aglResParameter.h:130
Definition aglResParameter.h:46
ResParameter getResParameter(u32 index) const
Definition aglResParameter.cpp:7
constIterator end() const
Definition aglResParameter.h:59
ResParameter searchResParameter(u32 name_hash) const
Definition aglResParameter.h:84
ResArray< ResParameter >::iterator iterator
Definition aglResParameter.h:50
s32 searchIndex(u32 name_hash) const
Definition aglResParameter.h:75
constIterator constBegin() const
Definition aglResParameter.h:56
u32 getNum() const
Definition aglResParameter.h:68
constIterator constEnd() const
Definition aglResParameter.h:60
iterator begin()
Definition aglResParameter.h:54
void modifyEndianObj(bool is_le)
Definition aglResParameter.cpp:20
ResArray< ResParameter >::constIterator constIterator
Definition aglResParameter.h:51
iterator end()
Definition aglResParameter.h:58
u32 getParameterObjNameHash() const
Definition aglResParameter.h:63
constIterator begin() const
Definition aglResParameter.h:55
Definition aglResParameter.h:16
u32 getParameterNameHash() const
Definition aglResParameter.h:20
const void * getValue() const
Definition aglResParameter.h:30
bool isApply(u32 name_hash)
Definition aglResParameter.h:25
Definition aglImageFilter2D.h:11
Definition aglDisplayList.cpp:5
Definition aglResParameter.h:178
u32 mFileSize
Definition aglResParameter.h:186
u32 mTypeVersion
Definition aglResParameter.h:187
static const u32 cVersion
Definition aglResParameter.h:196
u32 mVersion
Definition aglResParameter.h:184
u32 mTypeLen
Definition aglResParameter.h:188
u32 mSigWord
Definition aglResParameter.h:182
char mSignature[4]
Definition aglResParameter.h:181
u32 mEndian
Definition aglResParameter.h:185
static const u32 cEndianCheckBit
Definition aglResParameter.h:198
static const u32 cSignature
Definition aglResParameter.h:197
Definition aglResParameter.h:8
u32 mNameHash
Definition aglResParameter.h:11
u32 mSize
Definition aglResParameter.h:9
u32 mType
Definition aglResParameter.h:10
Definition aglResParameter.h:101
u32 mResParameterObjNum
Definition aglResParameter.h:105
u32 mNameHash
Definition aglResParameter.h:103
u32 mResParameterListNum
Definition aglResParameter.h:104
u32 mSize
Definition aglResParameter.h:102
Definition aglResParameter.h:37
u32 mSize
Definition aglResParameter.h:38
u32 mNum
Definition aglResParameter.h:39
u32 _c
Definition aglResParameter.h:41
u32 mNameHash
Definition aglResParameter.h:40