AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
variant.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef AJA_VARIANT_H
9 #define AJA_VARIANT_H
10 
11 #include "ajabase/common/public.h"
12 
13 #include <vector>
14 
15 typedef enum {
30 
35 public:
36  AJAVariant();
37  explicit AJAVariant(AJAVariantType type);
38  explicit AJAVariant(bool value);
39  explicit AJAVariant(float value);
40  explicit AJAVariant(double value);
41  explicit AJAVariant(int8_t value);
42  explicit AJAVariant(uint8_t value);
43  explicit AJAVariant(int16_t value);
44  explicit AJAVariant(uint16_t value);
45  explicit AJAVariant(int32_t value);
46  explicit AJAVariant(uint32_t value);
47  explicit AJAVariant(int64_t value);
48  explicit AJAVariant(uint64_t value);
49  explicit AJAVariant(const char* value);
50  explicit AJAVariant(const char* value, size_t length);
51  explicit AJAVariant(const std::string& value);
52 
53  AJAVariant(const AJAVariant& other);
55 
56  void operator=(const AJAVariant& other);
57 
58  // Type conversion operators
59  operator bool() const;
60  operator float() const;
61  operator double() const;
62  operator int8_t() const;
63  operator uint8_t() const;
64  operator int16_t() const;
65  operator uint16_t() const;
66  operator int32_t() const;
67  operator uint32_t() const;
68  operator int64_t() const;
69  operator uint64_t() const;
70  operator std::string() const;
71 
76  AJAVariantType GetType() const { return mType; }
77 
82  bool GetBool() const;
87  float GetFloat() const;
92  double GetDouble() const;
97  int8_t GetInt8() const;
102  uint8_t GetUInt8() const;
107  int16_t GetInt16() const;
112  uint16_t GetUInt16() const;
117  int32_t GetInt32() const;
122  uint32_t GetUInt32() const;
127  int64_t GetInt64() const;
132  uint64_t GetUInt64() const;
137  const std::string& GetString() const;
138 
143  void SetBool(bool value);
148  void SetFloat(float value);
153  void SetDouble(double value);
158  void SetInt8(int8_t value);
163  void SetUInt8(uint8_t value);
168  void SetInt16(int16_t value);
173  void SetUInt16(uint16_t value);
178  void SetInt32(int32_t value);
183  void SetUInt32(uint32_t value);
188  void SetInt64(int64_t value);
193  void SetUInt64(uint64_t value);
198  void SetString(const char* value);
204  void SetString(const char* value, size_t length);
209  void SetString(const std::string& value);
210 
211  // Type conversion methods
216  bool AsBool() const;
221  float AsFloat() const;
226  double AsDouble() const;
231  int8_t AsInt8() const;
236  uint8_t AsUInt8() const;
241  int16_t AsInt16() const;
246  uint16_t AsUInt16() const;
251  int32_t AsInt32() const;
256  uint32_t AsUInt32() const;
261  int64_t AsInt64() const;
266  uint64_t AsUInt64() const;
271  std::string AsString() const;
272 
273 private:
274  void initialize();
275 
276  AJAVariantType mType;
277  union {
279  float mFloatValue;
280  double mDoubleValue;
281  int8_t mInt8Value;
282  uint8_t mUInt8Value;
283  int16_t mInt16Value;
284  uint16_t mUInt16Value;
285  int32_t mInt32Value;
286  uint32_t mUInt32Value;
287  int64_t mInt64Value;
288  uint64_t mUInt64Value;
289  };
290  std::string mStringValue;
291 };
292 
293 typedef std::vector<AJAVariant> AJAVariantList;
294 
295 #endif
AJA_VARIANT_INT32
@ AJA_VARIANT_INT32
Definition: variant.h:24
AJA_VARIANT_DOUBLE
@ AJA_VARIANT_DOUBLE
Definition: variant.h:19
AJA_VARIANT_UINT64
@ AJA_VARIANT_UINT64
Definition: variant.h:27
AJA_VARIANT_UINT32
@ AJA_VARIANT_UINT32
Definition: variant.h:25
AJAVariant::mBooleanValue
bool mBooleanValue
Definition: variant.h:278
AJAVariant::mUInt8Value
uint8_t mUInt8Value
Definition: variant.h:282
AJAVariant::GetType
AJAVariantType GetType() const
Definition: variant.h:76
AJA_VARIANT_INT64
@ AJA_VARIANT_INT64
Definition: variant.h:26
AJA_EXPORT
#define AJA_EXPORT
Definition: export.h:34
AJAVariant::mInt64Value
int64_t mInt64Value
Definition: variant.h:287
AJA_VARIANT_UINT8
@ AJA_VARIANT_UINT8
Definition: variant.h:21
public.h
Master header for the ajabase library.
AJAVariant::mInt16Value
int16_t mInt16Value
Definition: variant.h:283
AJAVariant::mInt32Value
int32_t mInt32Value
Definition: variant.h:285
AJAVariantList
std::vector< AJAVariant > AJAVariantList
Definition: variant.h:293
AJAVariantType
AJAVariantType
Definition: variant.h:15
AJAVariant::~AJAVariant
~AJAVariant()
Definition: variant.h:54
AJAVariant::mFloatValue
float mFloatValue
Definition: variant.h:279
AJAVariant::mDoubleValue
double mDoubleValue
Definition: variant.h:280
AJA_VARIANT_NONE
@ AJA_VARIANT_NONE
Definition: variant.h:16
AJA_VARIANT_UINT16
@ AJA_VARIANT_UINT16
Definition: variant.h:23
AJAVariant
A simple Variant class.
Definition: variant.h:34
AJAVariant::mUInt16Value
uint16_t mUInt16Value
Definition: variant.h:284
AJAVariant::mInt8Value
int8_t mInt8Value
Definition: variant.h:281
AJA_VARIANT_BOOL
@ AJA_VARIANT_BOOL
Definition: variant.h:17
AJA_VARIANT_STRING
@ AJA_VARIANT_STRING
Definition: variant.h:28
AJAVariant::mUInt64Value
uint64_t mUInt64Value
Definition: variant.h:288
AJAVariant::mUInt32Value
uint32_t mUInt32Value
Definition: variant.h:286
AJA_VARIANT_INT8
@ AJA_VARIANT_INT8
Definition: variant.h:20
AJA_VARIANT_FLOAT
@ AJA_VARIANT_FLOAT
Definition: variant.h:18
AJA_VARIANT_INT16
@ AJA_VARIANT_INT16
Definition: variant.h:22