NW4F G3d
Loading...
Searching...
No Matches
g3d_ResUserData.h
Go to the documentation of this file.
1#ifndef NW_G3D_RES_USERDATA_H_
2#define NW_G3D_RES_USERDATA_H_
3
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/res/g3d_ResCommon.h>
6
7namespace nw { namespace g3d { namespace res {
8
10{
15 union Data
16 {
20 struct
21 {
24 };
25 } data;
26};
27
29{
31
32public:
41
43
44 int GetCount() const { return ref().count; }
45
46 Type GetType() const { return static_cast<Type>(ref().type); }
47
48 int* GetInt()
49 {
50 NW_G3D_ASSERT(ref().type == INT);
51 return reinterpret_cast<int*>(ref().data.iValue);
52 }
53
54 const int* GetInt() const
55 {
56 NW_G3D_ASSERT(ref().type == INT);
57 return reinterpret_cast<const int*>(ref().data.iValue);
58 }
59
60 float* GetFloat()
61 {
62 NW_G3D_ASSERT(ref().type == FLOAT);
63 return reinterpret_cast<float*>(ref().data.fValue);
64 }
65
66 const float* GetFloat() const
67 {
68 NW_G3D_ASSERT(ref().type == FLOAT);
69 return reinterpret_cast<const float*>(ref().data.fValue);
70 }
71
72 const char* GetString(int strIndex) const
73 {
74 NW_G3D_ASSERT(ref().type == STRING);
75 NW_G3D_ASSERT_INDEX_BOUNDS(strIndex, ref().count);
76 return ref().data.ofsString[strIndex].to_ptr<char>();
77 }
78
79 const char16* GetWString(int strIndex) const
80 {
81 NW_G3D_ASSERT(ref().type == WSTRING);
82 NW_G3D_ASSERT_INDEX_BOUNDS(strIndex, ref().count);
83 return ref().data.ofsString[strIndex].to_ptr<char16>();
84 }
85
86 void* GetStream()
87 {
88 NW_G3D_ASSERT(ref().type == STREAM);
89 return ref().data.value;
90 }
91
92 const void* GetStream() const
93 {
94 NW_G3D_ASSERT(ref().type == STREAM);
95 return ref().data.value;
96 }
97
99 {
100 NW_G3D_ASSERT(ref().type == STREAM);
101 return ref().data.size;
102 }
103};
104
105} } } // namespace nw::g3d
106
107#endif // NW_G3D_RES_USERDATA_H_
Definition g3d_ResCommon.h:93
Definition g3d_ResCommon.h:62
Definition g3d_ResUserData.h:29
size_t GetStreamSize() const
Definition g3d_ResUserData.h:98
const void * GetStream() const
Definition g3d_ResUserData.h:92
const float * GetFloat() const
Definition g3d_ResUserData.h:66
const char16 * GetWString(int strIndex) const
Definition g3d_ResUserData.h:79
int GetCount() const
Definition g3d_ResUserData.h:44
const char * GetString(int strIndex) const
Definition g3d_ResUserData.h:72
const int * GetInt() const
Definition g3d_ResUserData.h:54
Type GetType() const
Definition g3d_ResUserData.h:46
void * GetStream()
Definition g3d_ResUserData.h:86
int * GetInt()
Definition g3d_ResUserData.h:48
Type
Definition g3d_ResUserData.h:34
@ FLOAT
Definition g3d_ResUserData.h:36
@ INT
Definition g3d_ResUserData.h:35
@ WSTRING
Definition g3d_ResUserData.h:38
@ STREAM
Definition g3d_ResUserData.h:39
@ STRING
Definition g3d_ResUserData.h:37
float * GetFloat()
Definition g3d_ResUserData.h:60
#define NW_G3D_RES_COMMON(class_name)
Definition g3d_ResCommon.h:30
#define NW_G3D_RES_FIELD_STRING_DECL(name)
Definition g3d_ResDefs.h:137
#define NW_G3D_ASSERT_INDEX_BOUNDS(index, size)
Definition g3d_assert.h:23
#define NW_G3D_ASSERT(exp)
Definition g3d_assert.h:17
Definition g3d_defs.h:122
Definition g3d_GfxManage.cpp:10
Definition g3d_ResUserData.h:10
u16 count
Definition g3d_ResUserData.h:12
u8 type
Definition g3d_ResUserData.h:13
u8 reserved
Definition g3d_ResUserData.h:14
BinString ofsName
Definition g3d_ResUserData.h:11
Definition g3d_ResUserData.h:16
Offset ofsString[1]
Definition g3d_ResUserData.h:19
u8 value[4]
Definition g3d_ResUserData.h:23
s32 iValue[1]
Definition g3d_ResUserData.h:17
f32 fValue[1]
Definition g3d_ResUserData.h:18
u32 size
Definition g3d_ResUserData.h:22