Dev Essential  1.6.3
Loading...
Searching...
No Matches
variant.h
Go to the documentation of this file.
1
14
15#ifndef _A_UTILS_UTIL_VARIANT_VARIANT_HEADER_INCLUDED_
16#define _A_UTILS_UTIL_VARIANT_VARIANT_HEADER_INCLUDED_
17
18#include <memory>
19#include <string>
20#include <cstdint>
21
22namespace a_util {
23namespace variant {
42
46class Variant {
47public:
54 Variant(bool value);
59 Variant(std::int8_t value);
64 Variant(std::uint8_t value);
69 Variant(std::int16_t value);
74 Variant(std::uint16_t value);
79 Variant(std::int32_t value);
84 Variant(std::uint32_t value);
89 Variant(std::int64_t value);
94 Variant(std::uint64_t value);
99 Variant(float value);
104 Variant(double value);
109 Variant(const char* value);
110
115 Variant(const Variant& other);
116
122 Variant& operator=(const Variant& other);
123
126
132 Variant(Variant&& other) noexcept;
133
141 Variant& operator=(Variant&& other) noexcept;
142
145
150 std::size_t getArraySize() const;
151
156 std::size_t getStringSize() const;
157
159 bool isArray() const;
160
162 bool isEmpty() const;
163
165 void reset();
166
171 void reset(bool value);
176 void reset(std::int8_t value);
181 void reset(std::uint8_t value);
186 void reset(std::int16_t value);
191 void reset(std::uint16_t value);
196 void reset(std::int32_t value);
201 void reset(std::uint32_t value);
206 void reset(std::int64_t value);
211 void reset(std::uint64_t value);
216 void reset(float value);
221 void reset(double value);
226 void reset(const char* value);
227
234 void reset(const bool* array_storage, std::size_t array_size);
241 void reset(const std::int8_t* array_storage, std::size_t array_size);
248 void reset(const std::uint8_t* array_storage, std::size_t array_size);
255 void reset(const std::int16_t* array_storage, std::size_t array_size);
262 void reset(const std::uint16_t* array_storage, std::size_t array_size);
269 void reset(const std::int32_t* array_storage, std::size_t array_size);
276 void reset(const std::uint32_t* array_storage, std::size_t array_size);
283 void reset(const std::int64_t* array_storage, std::size_t array_size);
290 void reset(const std::uint64_t* array_storage, std::size_t array_size);
297 void reset(const float* array_storage, std::size_t array_size);
304 void reset(const double* array_storage, std::size_t array_size);
305
314 bool getBool(std::size_t array_index = 0) const;
316 std::int8_t getInt8(std::size_t array_index = 0) const;
318 std::uint8_t getUInt8(std::size_t array_index = 0) const;
320 std::int16_t getInt16(std::size_t array_index = 0) const;
322 std::uint16_t getUInt16(std::size_t array_index = 0) const;
324 std::int32_t getInt32(std::size_t array_index = 0) const;
326 std::uint32_t getUInt32(std::size_t array_index = 0) const;
328 std::int64_t getInt64(std::size_t array_index = 0) const;
330 std::uint64_t getUInt64(std::size_t array_index = 0) const;
332 float getFloat(std::size_t array_index = 0) const;
334 double getDouble(std::size_t array_index = 0) const;
336 float getFloat32(std::size_t array_index = 0) const;
338 double getFloat64(std::size_t array_index = 0) const;
344 const char* getString() const;
345
351 bool asBool() const;
353 std::int8_t asInt8() const;
355 std::uint8_t asUInt8() const;
357 std::int16_t asInt16() const;
359 std::uint16_t asUInt16() const;
361 std::int32_t asInt32() const;
363 std::uint32_t asUInt32() const;
365 std::int64_t asInt64() const;
367 std::uint64_t asUInt64() const;
369 float asFloat() const;
371 double asDouble() const;
373 std::string asString() const;
374
380 operator bool() const;
386 operator std::int8_t() const;
392 operator std::uint8_t() const;
398 operator std::int16_t() const;
404 operator std::uint16_t() const;
410 operator std::int32_t() const;
416 operator std::uint32_t() const;
422 operator std::int64_t() const;
428 operator std::uint64_t() const;
434 operator float() const;
440 operator double() const;
446 operator std::string() const;
447
453 Variant& operator=(bool value);
459 Variant& operator=(std::int8_t value);
465 Variant& operator=(std::uint8_t value);
471 Variant& operator=(std::int16_t value);
477 Variant& operator=(std::uint16_t value);
483 Variant& operator=(std::int32_t value);
489 Variant& operator=(std::uint32_t value);
495 Variant& operator=(std::int64_t value);
501 Variant& operator=(std::uint64_t value);
507 Variant& operator=(float value);
513 Variant& operator=(double value);
519 Variant& operator=(const char* value);
520
527 friend bool operator==(const Variant& lhs, const Variant& rhs);
528
529private:
530 class Implementation;
531 std::unique_ptr<Implementation> _impl;
532};
533
540bool operator!=(const Variant& lhs, const Variant& rhs);
541
542} // namespace variant
543} // namespace a_util
544
545#endif // _A_UTILS_UTIL_VARIANT_VARIANT_HEADER_INCLUDED_
Definition variant.h:46
void reset(const std::uint64_t *array_storage, std::size_t array_size)
Variant & operator=(const char *value)
bool getBool(std::size_t array_index=0) const
void reset(std::int8_t value)
void reset(double value)
Variant(std::int8_t value)
double asDouble() const
void reset(const std::int8_t *array_storage, std::size_t array_size)
std::uint8_t getUInt8(std::size_t array_index=0) const
Variant & operator=(std::uint16_t value)
std::uint32_t getUInt32(std::size_t array_index=0) const
void reset(const float *array_storage, std::size_t array_size)
void reset(std::uint16_t value)
Variant & operator=(std::int32_t value)
void reset()
Resets the instance to VT_Empty.
std::int32_t getInt32(std::size_t array_index=0) const
std::int64_t getInt64(std::size_t array_index=0) const
Variant(std::uint16_t value)
std::size_t getArraySize() const
Variant & operator=(float value)
Variant & operator=(Variant &&other) noexcept
float getFloat32(std::size_t array_index=0) const
VariantType getType() const
Returns the current underlying data type of the instance.
void reset(std::uint64_t value)
void reset(const bool *array_storage, std::size_t array_size)
std::size_t getStringSize() const
std::int8_t asInt8() const
std::string asString() const
Variant(std::uint32_t value)
void reset(const std::uint8_t *array_storage, std::size_t array_size)
std::int16_t getInt16(std::size_t array_index=0) const
void reset(const std::int64_t *array_storage, std::size_t array_size)
bool isArray() const
Returns whether the instance stores an array of any kind.
double getFloat64(std::size_t array_index=0) const
Variant & operator=(std::uint8_t value)
Variant & operator=(std::uint64_t value)
std::int32_t asInt32() const
std::uint8_t asUInt8() const
Variant(std::int32_t value)
Variant & operator=(bool value)
Variant(std::uint64_t value)
Variant(Variant &&other) noexcept
Variant & operator=(std::uint32_t value)
void reset(float value)
~Variant()
Non-virtual DTOR.
double getDouble(std::size_t array_index=0) const
void reset(std::int32_t value)
float getFloat(std::size_t array_index=0) const
void reset(const std::int16_t *array_storage, std::size_t array_size)
Variant & operator=(const Variant &other)
Variant(std::uint8_t value)
Variant(const Variant &other)
std::uint64_t asUInt64() const
Variant(std::int16_t value)
void reset(const std::uint32_t *array_storage, std::size_t array_size)
Variant()
CTOR: VT_Empty.
Variant & operator=(std::int16_t value)
std::int16_t asInt16() const
void reset(std::int64_t value)
void reset(const double *array_storage, std::size_t array_size)
Variant(const char *value)
std::uint32_t asUInt32() const
Variant(std::int64_t value)
void reset(const std::uint16_t *array_storage, std::size_t array_size)
void reset(bool value)
std::uint16_t getUInt16(std::size_t array_index=0) const
Variant & operator=(std::int64_t value)
friend bool operator==(const Variant &lhs, const Variant &rhs)
void reset(const std::int32_t *array_storage, std::size_t array_size)
std::uint64_t getUInt64(std::size_t array_index=0) const
void reset(std::uint8_t value)
Variant & operator=(std::int8_t value)
std::int8_t getInt8(std::size_t array_index=0) const
void reset(const char *value)
std::int64_t asInt64() const
Variant & operator=(double value)
void reset(std::uint32_t value)
const char * getString() const
std::uint16_t asUInt16() const
bool isEmpty() const
Returns whether the instance is in the empty state (VT_Empty)
void reset(std::int16_t value)
Definition variant.h:24
bool operator!=(const Variant &lhs, const Variant &rhs)
VariantType
Enumeration of supported Variant types.
Definition variant.h:25
@ VT_Empty
Variant type is empty.
Definition variant.h:26
@ VT_UInt32
Variant type is std::uint32_t.
Definition variant.h:33
@ VT_Float32
Variant type is float.
Definition variant.h:39
@ VT_Int32
Variant type is std::int32_t.
Definition variant.h:32
@ VT_Double
Variant type is double.
Definition variant.h:37
@ VT_String
Variant type is const char*.
Definition variant.h:38
@ VT_Float64
Variant type is double.
Definition variant.h:40
@ VT_Int8
Variant type is std::int8_t.
Definition variant.h:28
@ VT_UInt64
Variant type is std::uint64_t.
Definition variant.h:35
@ VT_Bool
Variant type is bool.
Definition variant.h:27
@ VT_UInt16
Variant type is std::uint16_t.
Definition variant.h:31
@ VT_Int16
Variant type is std::int16_t.
Definition variant.h:30
@ VT_Float
Variant type is float.
Definition variant.h:36
@ VT_Int64
Variant type is std::int64_t.
Definition variant.h:34
@ VT_UInt8
Variant type is std::uint8_t.
Definition variant.h:29
Serves as the root component, with common functionality documented in core functionality.
Definition base.h:24