1#pragma once
2
3#include <nn/gfx/gfx_Common.h>
4#include <nn/gfx/gfx_ResUserDataData.h>
5#include <nn/util/AccessorBase.h>
6
7namespace nn::gfx {
8
9class ResUserData : nn::util::AccessorBase<ResUserDataData> {
10 NN_NO_COPY(ResUserData);
11
12public:
13 enum Type {
14 Type_Int,
15 Type_Float,
16 Type_String,
17 Type_Stream,
18 };
19
20 const char* GetName() const { return pName.Get()->GetData(); }
21 int GetCount() const { return static_cast<int>(count); }
22 Type GetType() const { return static_cast<Type>(type); }
23
24 int32_t* GetInt() { return static_cast<int32_t*>(pData.Get()); }
25 const int32_t* GetInt() const { return static_cast<const int32_t*>(pData.Get()); }
26
27 float* GetFloat() { return static_cast<float*>(pData.Get()); }
28 const float* GetFloat() const { return static_cast<const float*>(pData.Get()); }
29
30 const char* GetString(int index) const {
31 return static_cast<const nn::util::BinPtrToString*>(pData.Get())[index].Get()->GetData();
32 }
33
34 void* GetStream() { return pData.Get(); }
35 const void* GetStream() const { return pData.Get(); }
36 size_t GetStreamSize() const { return static_cast<size_t>(count); }
37};
38
39} // namespace nn::gfx
40