Nebula
Toggle main menu visibility
Loading...
Searching...
No Matches
attributedefinition.h
Go to the documentation of this file.
1
#pragma once
2
//------------------------------------------------------------------------------
13
#include "
attributedefinitionbase.h
"
14
15
//------------------------------------------------------------------------------
16
namespace
Attr
17
{
18
template
<
class
VALUETYPE,
class
TYPE>
19
class
AttributeDefinition
:
public
AttributeDefinitionBase
20
{
21
public
:
23
AttributeDefinition
(
const
Util::String
& n,
const
Util::String
& tn,
const
Util::FourCC
&
fourCC
,
AccessMode
am, TYPE defVal);
24
26
using
AttrDeclType
= TYPE;
27
};
28
29
//------------------------------------------------------------------------------
32
template
<
class
VALUETYPE,
class
TYPE>
33
AttributeDefinition<VALUETYPE, TYPE>::AttributeDefinition
(
const
Util::String
& n,
const
Util::String
& tn,
const
Util::FourCC
& fcc,
Attr::AccessMode
am, TYPE defVal) :
34
AttributeDefinitionBase
(n, tn, fcc, am, defVal, false)
35
{
36
// empty
37
}
38
39
//------------------------------------------------------------------------------
40
// macro definitions
41
//------------------------------------------------------------------------------
42
#define DeclareAttrByte(NAME) extern const AttributeDefinition<Attr::ByteTypeClass, byte> NAME;
43
#define DefineAttrByte(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::ByteTypeClass, byte> NAME(#NAME, "byte", FOURCC,ACCESSMODE, byte(0));
44
#define DefineAttrByteWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::ByteTypeClass, byte> NAME(#NAME, "byte", FOURCC,ACCESSMODE,DEFVAL);
45
46
#define DeclareAttrShort(NAME) extern const AttributeDefinition<Attr::ShortTypeClass, short> NAME;
47
#define DefineAttrShort(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::ShortTypeClass, short> NAME(#NAME, "short", FOURCC,ACCESSMODE, short(0));
48
#define DefineAttrShortWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::ShortTypeClass, short> NAME(#NAME, "short", FOURCC,ACCESSMODE,DEFVAL);
49
50
#define DeclareAttrUShort(NAME) extern const AttributeDefinition<Attr::UShortTypeClass, ushort> NAME;
51
#define DefineAttrUShort(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::UShortTypeClass, ushort> NAME(#NAME, "ushort", FOURCC,ACCESSMODE, ushort(0));
52
#define DefineAttrUShortWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::UShortTypeClass, ushort> NAME(#NAME, "ushort", FOURCC,ACCESSMODE,DEFVAL);
53
54
#define DeclareAttrInt(NAME) extern const AttributeDefinition<Attr::IntTypeClass, int> NAME;
55
#define DefineAttrInt(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::IntTypeClass, int> NAME(#NAME, "int", FOURCC,ACCESSMODE, int(0));
56
#define DefineAttrIntWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::IntTypeClass, int> NAME(#NAME, "int", FOURCC,ACCESSMODE,DEFVAL);
57
58
#define DeclareAttrUInt(NAME) extern const AttributeDefinition<Attr::UIntTypeClass, uint> NAME;
59
#define DefineAttrUInt(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::UIntTypeClass, uint> NAME(#NAME, "uint", FOURCC,ACCESSMODE, uint(0));
60
#define DefineAttrUIntWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::UIntTypeClass, uint> NAME(#NAME, "uint", FOURCC,ACCESSMODE,DEFVAL);
61
62
#define DeclareAttrInt64(NAME) extern const AttributeDefinition<Attr::Int64TypeClass, int64_t> NAME;
63
#define DefineAttrInt64(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Int64TypeClass, int64_t> NAME(#NAME, "int64", FOURCC,ACCESSMODE, int64_t(0));
64
#define DefineAttrInt64WithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Int64TypeClass, int64_t> NAME(#NAME, "int64", FOURCC,ACCESSMODE,DEFVAL);
65
66
#define DeclareAttrUInt64(NAME) extern const AttributeDefinition<Attr::UInt64TypeClass, uint64_t> NAME;
67
#define DefineAttrUInt64(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::UInt64TypeClass, uint64_t> NAME(#NAME, "uint64_t", FOURCC,ACCESSMODE, uint64_t(0));
68
#define DefineAttrUInt64WithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::UInt64TypeClass, uint64_t> NAME(#NAME, "uint64_t", FOURCC,ACCESSMODE,DEFVAL);
69
70
#define DeclareAttrFloat(NAME) extern const AttributeDefinition<Attr::FloatTypeClass, float> NAME;
71
#define DefineAttrFloat(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::FloatTypeClass, float> NAME(#NAME, "float", FOURCC,ACCESSMODE, float(0.0f));
72
#define DefineAttrFloatWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::FloatTypeClass, float> NAME(#NAME, "float", FOURCC,ACCESSMODE,DEFVAL);
73
74
#define DeclareAttrDouble(NAME) extern const AttributeDefinition<Attr::DoubleTypeClass, double> NAME;
75
#define DefineAttrDouble(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::DoubleTypeClass, double> NAME(#NAME, "double", FOURCC,ACCESSMODE, double(0.0));
76
#define DefineAttrDoubleWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::DoubleTypeClass, double> NAME(#NAME, "double", FOURCC,ACCESSMODE,DEFVAL);
77
78
#define DeclareAttrBool(NAME) extern const AttributeDefinition<Attr::BoolTypeClass, bool> NAME;
79
#define DefineAttrBool(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::BoolTypeClass, bool> NAME(#NAME, "bool", FOURCC,ACCESSMODE, bool(false));
80
#define DefineAttrBoolWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::BoolTypeClass, bool> NAME(#NAME, "bool", FOURCC,ACCESSMODE,DEFVAL);
81
82
#define DeclareAttrFloat2(NAME) extern const AttributeDefinition<Attr::Float2TypeClass, Math::float2> NAME;
83
#define DefineAttrFloat2(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Float2TypeClass, Math::float2> NAME(#NAME, "Math::float2", FOURCC,ACCESSMODE, Math::float2(0.0f, 0.0f));
84
#define DefineAttrFloat2WithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Float2TypeClass, Math::float2> NAME(#NAME, "Math::float2", FOURCC,ACCESSMODE,DEFVAL);
85
86
#define DeclareAttrFloat4(NAME) extern const AttributeDefinition<Attr::Float4TypeClass, Math::vec4> NAME;
87
#define DefineAttrFloat4(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Float4TypeClass, Math::vec4> NAME(#NAME, "Math::vec4", FOURCC,ACCESSMODE, Math::vec4(0.0f, 0.0f, 0.0f, 0.0f));
88
#define DefineAttrFloat4WithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Float4TypeClass, Math::vec4> NAME(#NAME, "Math::vec4", FOURCC,ACCESSMODE,DEFVAL);
89
90
#define DeclareAttrQuaternion(NAME) extern const AttributeDefinition<Attr::QuaternionTypeClass, Math::quaternion> NAME;
91
#define DefineAttrQuaternion(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::QuaternionTypeClass, Math::quaternion> NAME(#NAME, "Math::quaternion", FOURCC,ACCESSMODE, Math::quaternion(0.0f, 0.0f, 0.0f, 1.0f));
92
#define DefineAttrQuaternionWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::QuaternionTypeClass, Math::quaternion> NAME(#NAME, "Math::quaternion", FOURCC,ACCESSMODE,DEFVAL);
93
94
#define DeclareAttrString(NAME) extern const AttributeDefinition<Attr::StringTypeClass, Util::String> NAME;
95
#define DefineAttrString(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::StringTypeClass, Util::String> NAME(#NAME, "Util::String", FOURCC,ACCESSMODE, Util::String());
96
#define DefineAttrStringWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::StringTypeClass, Util::String> NAME(#NAME, "Util::String", FOURCC,ACCESSMODE,DEFVAL);
97
98
#define DeclareAttrMatrix44(NAME) extern const AttributeDefinition<Attr::Matrix44TypeClass, Math::mat4> NAME;
99
#define DefineAttrMatrix44(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Matrix44TypeClass, Math::mat4> NAME(#NAME, "Math::mat4", FOURCC,ACCESSMODE, Math::mat4());
100
#define DefineAttrMatrix44WithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Matrix44TypeClass, Math::mat4> NAME(#NAME, "Math::mat4", FOURCC,ACCESSMODE,DEFVAL);
101
102
#define DeclareAttrTransform44(NAME) extern const AttributeDefinition<Attr::Transform44TypeClass, Math::transform44> NAME;
103
#define DefineAttrTransform44(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Transform44TypeClass, Math::transform44> NAME(#NAME, "Math::transform44", FOURCC,ACCESSMODE, Math::transform44());
104
#define DefineAttrTransform44WithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Transform44TypeClass, Math::transform44> NAME(#NAME, "Math::transform44", FOURCC,ACCESSMODE,DEFVAL);
105
106
#define DeclareAttrBlob(NAME) extern const AttributeDefinition<Attr::BlobTypeClass, Util::Blob> NAME;
107
#define DefineAttrBlob(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::BlobTypeClass, Util::Blob> NAME(#NAME, "Util::Blob", FOURCC,ACCESSMODE, Util::Blob());
108
#define DefineAttrBlobWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::BlobTypeClass, Util::Blob> NAME(#NAME, "Util::Blob", FOURCC,ACCESSMODE,DEFVAL);
109
110
#define DeclareAttrGuid(NAME) extern const AttributeDefinition<Attr::GuidTypeClass, Util::Guid> NAME;
111
#define DefineAttrGuid(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::GuidTypeClass, Util::Guid> NAME(#NAME, "Util::Guid", FOURCC,ACCESSMODE, Util::Guid());
112
#define DefineAttrGuidWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::GuidTypeClass, Util::Guid> NAME(#NAME, "Util::Guid", FOURCC,ACCESSMODE,DEFVAL);
113
114
#define DeclareAttrVoidPtr(NAME) extern const AttributeDefinition<Attr::VoidPtrTypeClass, void*> NAME;
115
#define DefineAttrVoidPtr(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::VoidPtrTypeClass, void*> NAME(#NAME, "void*", FOURCC,ACCESSMODE, nullptr);
116
#define DefineAttrVoidPtrWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::VoidPtrTypeClass, void*> NAME(#NAME, "void*", FOURCC,ACCESSMODE,DEFVAL);
117
118
#define DeclareAttrIntArray(NAME) extern const AttributeDefinition<Attr::IntArrayTypeClass, Util::Array<int>> NAME;
119
#define DefineAttrIntArray(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::IntArrayTypeClass, Util::Array<int>> NAME(#NAME, "Util::Array<int>", FOURCC,ACCESSMODE, Util::Array<int>());
120
#define DefineAttrIntArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::IntArrayTypeClass, Util::Array<int>> NAME(#NAME, "Util::Array<int>", FOURCC,ACCESSMODE,DEFVAL);
121
122
#define DeclareAttrFloatArray(NAME) extern const AttributeDefinition<Attr::FloatArrayTypeClass, Util::Array<float>> NAME;
123
#define DefineAttrFloatArray(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::FloatArrayTypeClass, Util::Array<float>> NAME(#NAME, "Util::Array<float>", FOURCC,ACCESSMODE, Util::Array<float>());
124
#define DefineAttrFloatArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::FloatArrayTypeClass, Util::Array<float>> NAME(#NAME, "Util::Array<float>", FOURCC,ACCESSMODE,DEFVAL);
125
126
#define DeclareAttrBoolArray(NAME) extern const AttributeDefinition<Attr::BoolArrayTypeClass, Util::Array<bool>> NAME;
127
#define DefineAttrBoolArray(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::BoolArrayTypeClass, Util::Array<bool>> NAME(#NAME, "Util::Array<bool>", FOURCC,ACCESSMODE, Util::Array<bool>());
128
#define DefineAttrBoolArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::BoolArrayTypeClass, Util::Array<bool>> NAME(#NAME, "Util::Array<bool>", FOURCC,ACCESSMODE,DEFVAL);
129
130
#define DeclareAttrFloat2Array(NAME) extern const AttributeDefinition<Attr::Float2ArrayTypeClass, Util::Array<Math::float2>> NAME;
131
#define DefineAttrFloat2Array(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Float2ArrayTypeClass, Util::Array<Math::float2>> NAME(#NAME, "Util::Array<Math::float2>", FOURCC,ACCESSMODE, Util::Array<Math::float2>());
132
#define DefineAttrFloat2ArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Float2ArrayTypeClass, Util::Array<Math::float2>> NAME(#NAME, "Util::Array<Math::float2>", FOURCC,ACCESSMODE,DEFVAL);
133
134
#define DeclareAttrFloat4Array(NAME) extern const AttributeDefinition<Attr::Float4ArrayTypeClass, Util::Array<Math::vec4>> NAME;
135
#define DefineAttrFloat4Array(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Float4ArrayTypeClass, Util::Array<Math::vec4>> NAME(#NAME, "Util::Array<Math::vec4>", FOURCC,ACCESSMODE, Util::Array<Math::vec4>());
136
#define DefineAttrFloat4ArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Float4ArrayTypeClass, Util::Array<Math::vec4>> NAME(#NAME, "Util::Array<Math::vec4>", FOURCC,ACCESSMODE,DEFVAL);
137
138
#define DeclareAttrStringArray(NAME) extern const AttributeDefinition<Attr::StringArrayTypeClass, Util::Array<Util::String>> NAME;
139
#define DefineAttrStringArray(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::StringArrayTypeClass, Util::Array<Util::String>> NAME(#NAME, "Util::Array<Util::String>", FOURCC,ACCESSMODE, Util::Array<Util::String>());
140
#define DefineAttrStringArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::StringArrayTypeClass, Util::Array<Util::String>> NAME(#NAME, "Util::Array<Util::String>", FOURCC,ACCESSMODE,DEFVAL);
141
142
#define DeclareAttrMatrix44Array(NAME) extern const AttributeDefinition<Attr::Matrix44ArrayTypeClass, Util::Array<Math::mat4>> NAME;
143
#define DefineAttrMatrix44Array(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::Matrix44ArrayTypeClass, Util::Array<Math::mat4>> NAME(#NAME, "Util::Array<Math::mat4>", FOURCC,ACCESSMODE, Util::Array<Math::mat4>());
144
#define DefineAttrMatrix44ArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::Matrix44ArrayTypeClass, Util::Array<Math::mat4>> NAME(#NAME, "Util::Array<Math::mat4>", FOURCC,ACCESSMODE,DEFVAL);
145
146
#define DeclareAttrBlobArray(NAME) extern const AttributeDefinition<Attr::BlobArrayTypeClass, Util::Array<Util::Blob>> NAME;
147
#define DefineAttrBlobArray(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::BlobArrayTypeClass, Util::Array<Util::Blob>> NAME(#NAME, "Util::Array<Util::Blob>", FOURCC,ACCESSMODE, Util::Array<Util::Blob>());
148
#define DefineAttrBlobArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::BlobArrayTypeClass, Util::Array<Util::Blob>> NAME(#NAME, "Util::Array<Util::Blob>", FOURCC,ACCESSMODE,DEFVAL);
149
150
#define DeclareAttrGuidArray(NAME) extern const AttributeDefinition<Attr::GuidArrayTypeClass, Util::Array<Util::Guid>> NAME;
151
#define DefineAttrGuidArray(NAME,FOURCC,ACCESSMODE) const AttributeDefinition<Attr::GuidArrayTypeClass, Util::Array<Util::Guid>> NAME(#NAME, "Util::Array<Util::Guid>", FOURCC,ACCESSMODE, Util::Array<Util::Guid>());
152
#define DefineAttrGuidArrayWithDefault(NAME,FOURCC,ACCESSMODE,DEFVAL) const AttributeDefinition<Attr::GuidArrayTypeClass, Util::Array<Util::Guid>> NAME(#NAME, "Util::Array<Util::Guid>", FOURCC,ACCESSMODE,DEFVAL);
153
154
}
// namespace Attr
155
//------------------------------------------------------------------------------
attributedefinitionbase.h
Attr::AttributeDefinitionBase::fourCC
Util::FourCC fourCC
Definition
attributedefinitionbase.h:141
Attr::AttributeDefinitionBase::AttributeDefinitionBase
AttributeDefinitionBase(const Util::String &name, const Util::String &typeName, const Util::FourCC &fourCC, AccessMode accessMode, bool isDynamic)
Definition
attributedefinitionbase.cc:31
Attr::AttributeDefinition::AttributeDefinition
AttributeDefinition(const Util::String &n, const Util::String &tn, const Util::FourCC &fourCC, AccessMode am, TYPE defVal)
constructor
Definition
attributedefinition.h:33
Attr::AttributeDefinition::AttrDeclType
TYPE AttrDeclType
Inner type.
Definition
attributedefinition.h:26
Util::FourCC
A four-character-code is a quasi-human-readable 32-bit-id.
Definition
fourcc.h:19
Util::String
Nebula's universal string class.
Definition
string.h:50
Attr
Definition
accessmode.h:13
Attr::AccessMode
AccessMode
Definition
accessmode.h:15
code
addons
attr
attributedefinition.h
Generated on
for Nebula. Dark theme by
Tilen Majerle
. All rights reserved.