3#ifndef TRAM_SDK_FRAMEWORK_VALUE_H
4#define TRAM_SDK_FRAMEWORK_VALUE_H
51 default:
return false;
92 operator const char*()
const {
103 operator int8_t()
const {
return (int32_t)*
this; }
104 operator int16_t()
const {
return (int32_t)*
this; }
105 operator int64_t()
const {
return (int32_t)*
this; }
107 operator uint8_t()
const {
return (uint32_t)*
this; }
108 operator uint16_t()
const {
return (uint32_t)*
this; }
109 operator uint64_t()
const {
return (uint32_t)*
this; }
111 operator double()
const {
return (
float)*
this; }
169 default:
return "unknown";
179 if (this->type !=
type) {
221 default: assert(
false);
238 default: assert(
false);
return Value();
243 assert(type == other.
GetType());
256 default: assert(
false);
316 ValueArray(
const Value* first,
size_t count) : first_field(first), field_count(count) {}
317 const Value&
operator [](
size_t n)
const { assert(n < field_count);
return first_field[n]; }
318 const size_t size()
const {
return field_count; }
320 const Value* first_field;
const Value & operator[](size_t n) const
Definition: value.h:317
const size_t size() const
Definition: value.h:318
ValueArray(const Value *first, size_t count)
Definition: value.h:316
Generic, type-safe union.
Definition: value.h:18
bool IsQuat() const
Definition: value.h:136
int32_t int32_value
Definition: value.h:188
bool operator==(const Value &other) const
Definition: value.h:30
bool bool_value
Definition: value.h:185
Value(double value)
Definition: value.h:67
Value(uint32_t value)
Definition: value.h:71
Value(int16_t value)
Definition: value.h:60
int GetInt() const
Definition: value.h:138
Value(vec3 value)
Definition: value.h:74
void AssertType(Type type) const
Definition: value.h:178
Value & operator=(const Value &other)
Definition: value.h:25
vec4 vec4_value
Definition: value.h:193
Value(vec4 value)
Definition: value.h:75
bool IsBool() const
Definition: value.h:128
Value()
Definition: value.h:20
~Value()
Definition: value.h:21
Value(const char *value)
Definition: value.h:57
vec2 vec2_value
Definition: value.h:191
Value(int32_t value)
Definition: value.h:69
std::string ToString()
Definition: value.h:156
name_t name_value
Definition: value.h:186
quat quat_value
Definition: value.h:194
Value(quat value)
Definition: value.h:77
float GetFloat() const
Definition: value.h:147
Value(name_t value)
Definition: value.h:56
vec3 vec3_value
Definition: value.h:192
uint32_t uint32_value
Definition: value.h:189
const char * string_value
Definition: value.h:187
bool IsVec4() const
Definition: value.h:135
Value(int64_t value)
Definition: value.h:61
Value(bool value)
Definition: value.h:55
Value(uint8_t value)
Definition: value.h:63
Value(const Value &other)
Definition: value.h:23
bool IsName() const
Definition: value.h:131
bool IsInt() const
Definition: value.h:129
Value(uint16_t value)
Definition: value.h:64
bool IsVec3() const
Definition: value.h:134
Value(int8_t value)
Definition: value.h:59
float float_value
Definition: value.h:190
Value(float value)
Definition: value.h:79
bool IsString() const
Definition: value.h:132
Value(vec2 value)
Definition: value.h:73
bool IsFloat() const
Definition: value.h:130
Type GetType() const
Definition: value.h:174
bool IsVec2() const
Definition: value.h:133
Type type
Definition: value.h:176
Value(uint64_t value)
Definition: value.h:65
uint32_t * uint32_ptr
Definition: value.h:305
ValuePtr(vec3 *ptr)
Definition: value.h:269
ValuePtr(bool *ptr)
Definition: value.h:260
bool IsInt() const
Definition: value.h:293
int32_t * int32_ptr
Definition: value.h:304
bool IsFloat() const
Definition: value.h:294
ValuePtr(vec2 *ptr)
Definition: value.h:268
ValuePtr(quat *ptr)
Definition: value.h:272
void SetValue(const Value &other)
Definition: value.h:242
bool * bool_ptr
Definition: value.h:301
ValuePtr()
Definition: value.h:202
quat * quat_ptr
Definition: value.h:310
ValuePtr(float *ptr)
Definition: value.h:274
ValuePtr(vec4 *ptr)
Definition: value.h:270
name_t * name_ptr
Definition: value.h:302
vec4 * vec4_ptr
Definition: value.h:309
Type GetType() const
Definition: value.h:296
const char ** string_ptr
Definition: value.h:303
vec2 * vec2_ptr
Definition: value.h:307
ValuePtr(const ValuePtr &other)
Definition: value.h:205
~ValuePtr()
Definition: value.h:203
ValuePtr(Value &other)
Definition: value.h:207
vec3 * vec3_ptr
Definition: value.h:308
bool IsBool() const
Definition: value.h:292
ValuePtr(int32_t *ptr)
Definition: value.h:264
ValuePtr(uint32_t *ptr)
Definition: value.h:266
ValuePtr(const char **ptr)
Definition: value.h:262
ValuePtr(name_t *ptr)
Definition: value.h:261
float * float_ptr
Definition: value.h:306
@ CORE
Definition: system.h:14
glm::vec4 vec4
Definition: math.h:15
Type
Type enumeration for serialization, etc.
Definition: type.h:12
@ TYPE_BOOL
Definition: type.h:14
@ TYPE_STRING
Definition: type.h:16
@ TYPE_VEC2
Definition: type.h:24
@ TYPE_UINT32
Definition: type.h:22
@ TYPE_INT32
Definition: type.h:19
@ TYPE_VEC3
Definition: type.h:25
@ TYPE_QUAT
Definition: type.h:27
@ TYPE_VEC4
Definition: type.h:26
@ TYPE_UNDEFINED
Definition: type.h:13
@ TYPE_NAME
Definition: type.h:15
@ TYPE_FLOAT32
Definition: type.h:23
glm::vec2 vec2
Definition: math.h:16
glm::vec3 vec3
Definition: math.h:11
glm::quat quat
Definition: math.h:12
void Log(Severity severity, System::system_t system, const std::string_view &format, Args &&... args)
Definition: logging.h:79
Value value_t
Definition: event.h:21
const char * TypeToString(Type type)
Converts type enum to string.
Definition: type.cpp:8
ValueArray valuearray_t
Definition: value.h:325
UID name_t
Definition: uid.h:43
Interned string type.
Definition: uid.h:10