AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
variant.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
10 
11 #ifdef AJA_USE_CPLUSPLUS11
12  #include <cstdlib>
13 #else
14  #include <stdlib.h>
15 #endif
16 
18 : mType(AJA_VARIANT_INT32), mInt32Value(0)
19 {
20 }
21 
23 : mType(type)
24 {
25  initialize();
26 }
27 
28 void AJAVariant::initialize()
29 {
30  switch(mType) {
31  case AJA_VARIANT_BOOL:
32  mBooleanValue = false;
33  break;
34  case AJA_VARIANT_FLOAT:
35  mFloatValue = 0.f;
36  break;
37  case AJA_VARIANT_DOUBLE:
38  mDoubleValue = 0.0;
39  break;
40  case AJA_VARIANT_INT8:
41  mInt8Value = 0;
42  break;
43  case AJA_VARIANT_UINT8:
44  mUInt8Value = 0;
45  break;
46  case AJA_VARIANT_INT16:
47  mInt16Value = 0;
48  break;
49  case AJA_VARIANT_UINT16:
50  mUInt16Value = 0;
51  break;
52  case AJA_VARIANT_INT32:
53  mInt32Value = 0;
54  break;
55  case AJA_VARIANT_UINT32:
56  mUInt32Value = 0;
57  break;
58  case AJA_VARIANT_INT64:
59  mInt64Value = 0;
60  break;
61  case AJA_VARIANT_UINT64:
62  mUInt64Value = 0;
63  break;
64  case AJA_VARIANT_STRING:
65  mStringValue = std::string();
66  break;
67  default:
68  case AJA_VARIANT_NONE:
69  break;
70  }
71 }
72 
74 : mType(AJA_VARIANT_BOOL), mBooleanValue(value) {}
76 : mType(AJA_VARIANT_FLOAT), mFloatValue(value) {}
78 : mType(AJA_VARIANT_DOUBLE), mDoubleValue(value) {}
80 : mType(AJA_VARIANT_INT8), mInt8Value(value) {}
81 AJAVariant::AJAVariant(uint8_t value)
82 : mType(AJA_VARIANT_UINT8), mUInt8Value(value) {}
83 AJAVariant::AJAVariant(int16_t value)
84 : mType(AJA_VARIANT_INT16), mInt16Value(value) {}
85 AJAVariant::AJAVariant(uint16_t value)
86 : mType(AJA_VARIANT_UINT16), mUInt16Value(value) {}
87 AJAVariant::AJAVariant(int32_t value)
88 : mType(AJA_VARIANT_INT32), mInt32Value(value) {}
89 AJAVariant::AJAVariant(uint32_t value)
90 : mType(AJA_VARIANT_UINT32), mUInt32Value(value) {}
91 AJAVariant::AJAVariant(int64_t value)
92 : mType(AJA_VARIANT_INT64), mInt64Value(value) {}
93 AJAVariant::AJAVariant(uint64_t value)
94 : mType(AJA_VARIANT_UINT64), mUInt64Value(value) {}
95 AJAVariant::AJAVariant(const char* value)
96 : mType(AJA_VARIANT_STRING), mStringValue(value) {}
97 AJAVariant::AJAVariant(const char* value, std::size_t length)
98 : mType(AJA_VARIANT_STRING), mStringValue(value, length) {}
99 AJAVariant::AJAVariant(const std::string& value)
100 : mType(AJA_VARIANT_STRING), mStringValue(value) {}
101 
102 // copy ctor
104  operator=(other);
105 }
106 
107 void AJAVariant::operator=(const AJAVariant& other) {
108  mType = other.mType;
109  switch (mType) {
110  case AJA_VARIANT_BOOL:
112  break;
113  case AJA_VARIANT_FLOAT:
114  mFloatValue = other.mFloatValue;
115  break;
116  case AJA_VARIANT_DOUBLE:
117  mDoubleValue = other.mDoubleValue;
118  break;
119  case AJA_VARIANT_INT8:
120  mInt8Value = other.mInt8Value;
121  break;
122  case AJA_VARIANT_UINT8:
123  mUInt8Value = other.mUInt8Value;
124  break;
125  case AJA_VARIANT_INT16:
126  mInt16Value = other.mInt16Value;
127  break;
128  case AJA_VARIANT_UINT16:
129  mUInt16Value = other.mUInt16Value;
130  break;
131  case AJA_VARIANT_INT32:
132  mInt32Value = other.mInt32Value;
133  break;
134  case AJA_VARIANT_UINT32:
135  mUInt32Value = other.mUInt32Value;
136  break;
137  case AJA_VARIANT_INT64:
138  mInt64Value = other.mInt64Value;
139  break;
140  case AJA_VARIANT_UINT64:
141  mUInt64Value = other.mUInt64Value;
142  break;
143  case AJA_VARIANT_STRING:
144  mStringValue = std::string(other.mStringValue);
145  break;
146  default:
147  case AJA_VARIANT_NONE:
148  break;
149  }
150 }
151 
152 // Type conversion operators
153 AJAVariant::operator bool() const
154 {
155  return AsBool();
156 }
157 AJAVariant::operator float() const
158 {
159  return AsFloat();
160 }
161 AJAVariant::operator double() const
162 {
163  return AsDouble();
164 }
165 AJAVariant::operator int8_t() const
166 {
167  return AsInt8();
168 }
169 AJAVariant::operator uint8_t() const
170 {
171  return AsUInt8();
172 }
173 AJAVariant::operator int16_t() const
174 {
175  return AsInt16();
176 }
177 AJAVariant::operator uint16_t() const
178 {
179  return AsUInt16();
180 }
181 AJAVariant::operator int32_t() const
182 {
183  return AsInt32();
184 }
185 AJAVariant::operator uint32_t() const
186 {
187  return AsUInt32();
188 }
189 AJAVariant::operator int64_t() const
190 {
191  return AsInt64();
192 }
193 AJAVariant::operator uint64_t() const
194 {
195  return AsUInt64();
196 }
197 AJAVariant::operator std::string() const
198 {
199  return AsString();
200 }
201 
202 // Getters
203 bool AJAVariant::GetBool() const {
204  return mBooleanValue;
205 }
206 float AJAVariant::GetFloat() const {
207  return mFloatValue;
208 }
209 double AJAVariant::GetDouble() const {
210  return mDoubleValue;
211 }
212 int8_t AJAVariant::GetInt8() const {
213  return mInt8Value;
214 }
215 uint8_t AJAVariant::GetUInt8() const {
216  return mUInt8Value;
217 }
218 int16_t AJAVariant::GetInt16() const {
219  return mInt16Value;
220 }
221 uint16_t AJAVariant::GetUInt16() const {
222  return mUInt16Value;
223 }
224 int32_t AJAVariant::GetInt32() const {
225  return mInt32Value;
226 }
227 uint32_t AJAVariant::GetUInt32() const {
228  return mUInt32Value;
229 }
230 int64_t AJAVariant::GetInt64() const {
231  return mInt64Value;
232 }
233 uint64_t AJAVariant::GetUInt64() const {
234  return mUInt64Value;
235 }
236 const std::string& AJAVariant::GetString() const {
237  return mStringValue;
238 }
239 
240 // Setters
241 void AJAVariant::SetBool(bool value) {
242  mBooleanValue = value;
243  mType = AJA_VARIANT_BOOL;
244 }
245 void AJAVariant::SetFloat(float value) {
246  mFloatValue = value;
247  mType = AJA_VARIANT_FLOAT;
248 }
249 void AJAVariant::SetDouble(double value) {
250  mDoubleValue = value;
251  mType = AJA_VARIANT_DOUBLE;
252 }
253 void AJAVariant::SetInt8(int8_t value) {
254  mInt8Value = value;
255  mType = AJA_VARIANT_INT8;
256 }
257 void AJAVariant::SetUInt8(uint8_t value) {
258  mUInt8Value = value;
259  mType = AJA_VARIANT_UINT8;
260 }
261 void AJAVariant::SetInt16(int16_t value) {
262  mInt16Value = value;
263  mType = AJA_VARIANT_INT16;
264 }
265 void AJAVariant::SetUInt16(uint16_t value) {
266  mUInt16Value = value;
267  mType = AJA_VARIANT_UINT16;
268 }
269 void AJAVariant::SetInt32(int32_t value) {
270  mInt32Value = value;
271  mType = AJA_VARIANT_INT32;
272 }
273 void AJAVariant::SetUInt32(uint32_t value) {
274  mUInt32Value = value;
275  mType = AJA_VARIANT_UINT32;
276 }
277 void AJAVariant::SetInt64(int64_t value) {
278  mInt64Value = value;
279  mType = AJA_VARIANT_INT64;
280 }
281 void AJAVariant::SetUInt64(uint64_t value) {
282  mUInt64Value = value;
283  mType = AJA_VARIANT_UINT64;
284 }
285 void AJAVariant::SetString(const char* value) {
286  mStringValue = std::string(value);
287  mType = AJA_VARIANT_STRING;
288 }
289 void AJAVariant::SetString(const char* value, std::size_t length) {
290  mStringValue = std::string(value, length);
291  mType = AJA_VARIANT_STRING;
292 }
293 void AJAVariant::SetString(const std::string& value) {
294  mStringValue = value;
295  mType = AJA_VARIANT_STRING;
296 }
297 
298 // Type conversion methods
299 bool AJAVariant::AsBool() const {
300  switch(mType) {
301  case AJA_VARIANT_BOOL:
302  return mBooleanValue;
303  case AJA_VARIANT_FLOAT:
304  return mFloatValue ? true : false;
305  case AJA_VARIANT_DOUBLE:
306  return mDoubleValue ? true : false;
307  case AJA_VARIANT_INT8:
308  return mInt8Value ? true : false;
309  case AJA_VARIANT_UINT8:
310  return mUInt8Value ? true : false;
311  case AJA_VARIANT_INT16:
312  return mInt16Value ? true : false;
313  case AJA_VARIANT_UINT16:
314  return mUInt16Value ? true : false;
315  case AJA_VARIANT_INT32:
316  return mInt32Value ? true : false;
317  case AJA_VARIANT_UINT32:
318  return mUInt32Value ? true : false;
319  case AJA_VARIANT_INT64:
320  return mInt64Value ? true : false;
321  case AJA_VARIANT_UINT64:
322  return mUInt64Value ? true : false;
323  case AJA_VARIANT_STRING:
324  {
325  if (!mStringValue.empty()) {
326  std::string tmp = std::string(mStringValue);
327  std::string lower = aja::lower(tmp);
328  if (tmp == "true" || tmp == "1" || tmp == "y")
329  return true;
330  else
331  return false;
332  }
333  else
334  return false;
335  }
336  default:
337  case AJA_VARIANT_NONE:
338  return false;
339  }
340 
341  return false;
342 }
343 
344 float AJAVariant::AsFloat() const {
345  switch(mType) {
346  case AJA_VARIANT_BOOL:
347  return mBooleanValue ? 1.f : 0.f;
348  case AJA_VARIANT_FLOAT:
349  return mFloatValue;
350  case AJA_VARIANT_DOUBLE:
351  return static_cast<float>(mDoubleValue);
352  case AJA_VARIANT_INT8:
353  return static_cast<float>(mInt8Value);
354  case AJA_VARIANT_UINT8:
355  return static_cast<float>(mUInt8Value);
356  case AJA_VARIANT_INT16:
357  return static_cast<float>(mInt16Value);
358  case AJA_VARIANT_UINT16:
359  return static_cast<float>(mUInt16Value);
360  case AJA_VARIANT_INT32:
361  return static_cast<float>(mInt32Value);
362  case AJA_VARIANT_UINT32:
363  return static_cast<float>(mUInt32Value);
364  case AJA_VARIANT_INT64:
365  return static_cast<float>(mInt64Value);
366  case AJA_VARIANT_UINT64:
367  return static_cast<float>(mUInt64Value);
368  case AJA_VARIANT_STRING:
369  {
370  if (mStringValue.empty()) {
371  return 0.f;
372  } else {
373 #ifdef AJA_USE_CPLUSPLUS11
374  return std::strtof(mStringValue.data(), NULL);
375 #else
376  return (float)atof(mStringValue.data());
377 #endif
378  }
379  }
380  default:
381  case AJA_VARIANT_NONE:
382  return 0.f;
383  }
384 
385  return 0.f;
386 }
387 double AJAVariant::AsDouble() const {
388  switch(mType) {
389  case AJA_VARIANT_BOOL:
390  return mBooleanValue ? 1.0 : 0.0;
391  case AJA_VARIANT_FLOAT:
392  return mFloatValue;
393  case AJA_VARIANT_DOUBLE:
394  return mDoubleValue;
395  case AJA_VARIANT_INT8:
396  return static_cast<double>(mInt8Value);
397  case AJA_VARIANT_UINT8:
398  return static_cast<double>(mUInt8Value);
399  case AJA_VARIANT_INT16:
400  return static_cast<double>(mInt16Value);
401  case AJA_VARIANT_UINT16:
402  return static_cast<double>(mUInt16Value);
403  case AJA_VARIANT_INT32:
404  return static_cast<double>(mInt32Value);
405  case AJA_VARIANT_UINT32:
406  return static_cast<double>(mUInt32Value);
407  case AJA_VARIANT_INT64:
408  return static_cast<double>(mInt64Value);
409  case AJA_VARIANT_UINT64:
410  return static_cast<double>(mUInt64Value);
411  case AJA_VARIANT_STRING:
412  {
413  if (mStringValue.empty()) {
414  return 0.0;
415  } else {
416  return strtod(mStringValue.data(), NULL);
417  }
418  }
419  default:
420  case AJA_VARIANT_NONE:
421  return 0.0;
422  }
423 
424  return 0.0;
425 }
426 int8_t AJAVariant::AsInt8() const {
427  switch(mType) {
428  case AJA_VARIANT_BOOL:
429  return mBooleanValue ? 1 : 0;
430  case AJA_VARIANT_FLOAT:
431  return static_cast<int8_t>(mFloatValue);
432  case AJA_VARIANT_DOUBLE:
433  return static_cast<int8_t>(mDoubleValue);
434  case AJA_VARIANT_INT8:
435  return mInt8Value;
436  case AJA_VARIANT_UINT8:
437  return static_cast<int8_t>(mUInt8Value);
438  case AJA_VARIANT_INT16:
439  return static_cast<int8_t>(mInt16Value);
440  case AJA_VARIANT_UINT16:
441  return static_cast<int8_t>(mUInt16Value);
442  case AJA_VARIANT_INT32:
443  return static_cast<int8_t>(mInt32Value);
444  case AJA_VARIANT_UINT32:
445  return static_cast<int8_t>(mUInt32Value);
446  case AJA_VARIANT_INT64:
447  return static_cast<int8_t>(mInt64Value);
448  case AJA_VARIANT_UINT64:
449  return static_cast<int8_t>(mUInt64Value);
450  case AJA_VARIANT_STRING:
451  {
452  if (mStringValue.empty()) {
453  return 0;
454  } else {
455  return static_cast<int8_t>(strtol(mStringValue.data(), NULL, 0));
456  }
457  }
458  default:
459  case AJA_VARIANT_NONE:
460  return 0;
461  }
462 
463  return 0;
464 }
465 uint8_t AJAVariant::AsUInt8() const {
466  switch(mType) {
467  case AJA_VARIANT_BOOL:
468  return mBooleanValue ? 1 : 0;
469  case AJA_VARIANT_FLOAT:
470  return static_cast<uint8_t>(mFloatValue);
471  case AJA_VARIANT_DOUBLE:
472  return static_cast<uint8_t>(mDoubleValue);
473  case AJA_VARIANT_INT8:
474  return static_cast<uint8_t>(mInt8Value);
475  case AJA_VARIANT_UINT8:
476  return mUInt8Value;
477  case AJA_VARIANT_INT16:
478  return static_cast<uint8_t>(mInt16Value);
479  case AJA_VARIANT_UINT16:
480  return static_cast<uint8_t>(mUInt16Value);
481  case AJA_VARIANT_INT32:
482  return static_cast<uint8_t>(mInt32Value);
483  case AJA_VARIANT_UINT32:
484  return static_cast<uint8_t>(mUInt32Value);
485  case AJA_VARIANT_INT64:
486  return static_cast<uint8_t>(mInt64Value);
487  case AJA_VARIANT_UINT64:
488  return static_cast<uint8_t>(mUInt64Value);
489  case AJA_VARIANT_STRING:
490  {
491  if (mStringValue.empty()) {
492  return 0;
493  } else {
494  return static_cast<uint8_t>(strtol(mStringValue.data(), NULL, 0));
495  }
496  }
497  default:
498  case AJA_VARIANT_NONE:
499  return 0;
500  }
501 
502  return 0;
503 }
504 int16_t AJAVariant::AsInt16() const {
505  switch(mType) {
506  case AJA_VARIANT_BOOL:
507  return mBooleanValue ? 1 : 0;
508  case AJA_VARIANT_FLOAT:
509  return static_cast<int16_t>(mFloatValue);
510  case AJA_VARIANT_DOUBLE:
511  return static_cast<int16_t>(mDoubleValue);
512  case AJA_VARIANT_INT8:
513  return static_cast<int16_t>(mInt8Value);
514  case AJA_VARIANT_UINT8:
515  return static_cast<int16_t>(mUInt8Value);
516  case AJA_VARIANT_INT16:
517  return mInt16Value;
518  case AJA_VARIANT_UINT16:
519  return static_cast<int16_t>(mUInt16Value);
520  case AJA_VARIANT_INT32:
521  return static_cast<int16_t>(mInt32Value);
522  case AJA_VARIANT_UINT32:
523  return static_cast<int16_t>(mUInt32Value);
524  case AJA_VARIANT_INT64:
525  return static_cast<int16_t>(mInt64Value);
526  case AJA_VARIANT_UINT64:
527  return static_cast<int16_t>(mUInt64Value);
528  case AJA_VARIANT_STRING:
529  {
530  if (mStringValue.empty()) {
531  return 0;
532  } else {
533  return static_cast<int16_t>(strtol(mStringValue.data(), NULL, 0));
534  }
535  }
536  default:
537  case AJA_VARIANT_NONE:
538  return 0;
539  }
540 
541  return 0;
542 }
543 uint16_t AJAVariant::AsUInt16() const {
544  switch(mType) {
545  case AJA_VARIANT_BOOL:
546  return mBooleanValue ? 1 : 0;
547  case AJA_VARIANT_FLOAT:
548  return static_cast<uint16_t>(mFloatValue);
549  case AJA_VARIANT_DOUBLE:
550  return static_cast<uint16_t>(mDoubleValue);
551  case AJA_VARIANT_INT8:
552  return static_cast<uint16_t>(mInt8Value);
553  case AJA_VARIANT_UINT8:
554  return static_cast<uint16_t>(mUInt8Value);
555  case AJA_VARIANT_INT16:
556  return static_cast<uint16_t>(mInt16Value);
557  case AJA_VARIANT_UINT16:
558  return mUInt16Value;
559  case AJA_VARIANT_INT32:
560  return static_cast<uint16_t>(mInt32Value);
561  case AJA_VARIANT_UINT32:
562  return static_cast<uint16_t>(mUInt32Value);
563  case AJA_VARIANT_INT64:
564  return static_cast<uint16_t>(mInt64Value);
565  case AJA_VARIANT_UINT64:
566  return static_cast<uint16_t>(mUInt64Value);
567  case AJA_VARIANT_STRING:
568  {
569  if (mStringValue.empty()) {
570  return 0;
571  } else {
572  return static_cast<uint16_t>(strtol(mStringValue.data(), NULL, 0));
573  }
574  }
575  default:
576  case AJA_VARIANT_NONE:
577  return 0;
578  }
579 
580  return 0;
581 }
582 int32_t AJAVariant::AsInt32() const {
583  switch(mType) {
584  case AJA_VARIANT_BOOL:
585  return mBooleanValue ? 1 : 0;
586  case AJA_VARIANT_FLOAT:
587  return static_cast<int32_t>(mFloatValue);
588  case AJA_VARIANT_DOUBLE:
589  return static_cast<int32_t>(mDoubleValue);
590  case AJA_VARIANT_INT8:
591  return static_cast<int32_t>(mInt8Value);
592  case AJA_VARIANT_UINT8:
593  return static_cast<int32_t>(mUInt8Value);
594  case AJA_VARIANT_INT16:
595  return static_cast<int32_t>(mInt16Value);
596  case AJA_VARIANT_UINT16:
597  return static_cast<int32_t>(mUInt16Value);
598  case AJA_VARIANT_INT32:
599  return mInt32Value;
600  case AJA_VARIANT_UINT32:
601  return static_cast<int32_t>(mUInt32Value);
602  case AJA_VARIANT_INT64:
603  return static_cast<int32_t>(mInt64Value);
604  case AJA_VARIANT_UINT64:
605  return static_cast<int32_t>(mUInt64Value);
606  case AJA_VARIANT_STRING:
607  {
608  if (mStringValue.empty()) {
609  return 0;
610  } else {
611  return static_cast<int32_t>(strtol(mStringValue.data(), NULL, 0));
612  }
613  }
614  default:
615  case AJA_VARIANT_NONE:
616  return 0;
617  }
618 
619  return 0;
620 }
621 uint32_t AJAVariant::AsUInt32() const {
622  switch(mType) {
623  case AJA_VARIANT_BOOL:
624  return mBooleanValue ? 1 : 0;
625  case AJA_VARIANT_FLOAT:
626  return static_cast<uint32_t>(mFloatValue);
627  case AJA_VARIANT_DOUBLE:
628  return static_cast<uint32_t>(mDoubleValue);
629  case AJA_VARIANT_INT8:
630  return static_cast<uint32_t>(mInt8Value);
631  case AJA_VARIANT_UINT8:
632  return static_cast<uint32_t>(mUInt8Value);
633  case AJA_VARIANT_INT16:
634  return static_cast<uint32_t>(mInt16Value);
635  case AJA_VARIANT_UINT16:
636  return static_cast<uint32_t>(mUInt16Value);
637  case AJA_VARIANT_INT32:
638  return static_cast<uint32_t>(mInt32Value);
639  case AJA_VARIANT_UINT32:
640  return mUInt32Value;
641  case AJA_VARIANT_INT64:
642  return static_cast<uint32_t>(mInt64Value);
643  case AJA_VARIANT_UINT64:
644  return static_cast<uint32_t>(mUInt64Value);
645  case AJA_VARIANT_STRING:
646  {
647  if (mStringValue.empty()) {
648  return 0;
649  } else {
650  return strtoul(mStringValue.data(), NULL, 0);
651  }
652  }
653  default:
654  case AJA_VARIANT_NONE:
655  return 0;
656  }
657 
658  return 0;
659 }
660 int64_t AJAVariant::AsInt64() const {
661  switch(mType) {
662  case AJA_VARIANT_BOOL:
663  return mBooleanValue ? 1 : 0;
664  case AJA_VARIANT_FLOAT:
665  return static_cast<int64_t>(mFloatValue);
666  case AJA_VARIANT_DOUBLE:
667  return static_cast<int64_t>(mDoubleValue);
668  case AJA_VARIANT_INT8:
669  return static_cast<int64_t>(mInt8Value);
670  case AJA_VARIANT_UINT8:
671  return static_cast<int64_t>(mUInt8Value);
672  case AJA_VARIANT_INT16:
673  return static_cast<int64_t>(mInt16Value);
674  case AJA_VARIANT_UINT16:
675  return static_cast<int64_t>(mUInt16Value);
676  case AJA_VARIANT_INT32:
677  return static_cast<int64_t>(mInt32Value);
678  case AJA_VARIANT_UINT32:
679  return static_cast<int64_t>(mUInt32Value);
680  case AJA_VARIANT_INT64:
681  return mInt64Value;
682  case AJA_VARIANT_UINT64:
683  return static_cast<int64_t>(mUInt64Value);
684  case AJA_VARIANT_STRING:
685  {
686  if (mStringValue.empty()) {
687  return 0;
688  } else {
689 #ifdef AJA_USE_CPLUSPLUS11
690  return std::strtoll(mStringValue.data(), NULL, 0);
691 #else
692  return atol(mStringValue.data());
693 #endif
694  }
695  }
696  default:
697  case AJA_VARIANT_NONE:
698  return 0;
699  }
700 
701  return 0;
702 }
703 uint64_t AJAVariant::AsUInt64() const {
704  switch(mType) {
705  case AJA_VARIANT_BOOL:
706  return mBooleanValue ? 1 : 0;
707  case AJA_VARIANT_FLOAT:
708  return static_cast<uint64_t>(mFloatValue);
709  case AJA_VARIANT_DOUBLE:
710  return static_cast<uint64_t>(mDoubleValue);
711  case AJA_VARIANT_INT8:
712  return static_cast<uint64_t>(mInt8Value);
713  case AJA_VARIANT_UINT8:
714  return static_cast<uint64_t>(mUInt8Value);
715  case AJA_VARIANT_INT16:
716  return static_cast<uint64_t>(mInt16Value);
717  case AJA_VARIANT_UINT16:
718  return static_cast<uint64_t>(mUInt16Value);
719  case AJA_VARIANT_INT32:
720  return static_cast<uint64_t>(mInt32Value);
721  case AJA_VARIANT_UINT32:
722  return static_cast<uint64_t>(mUInt32Value);
723  case AJA_VARIANT_INT64:
724  return static_cast<uint64_t>(mInt64Value);
725  case AJA_VARIANT_UINT64:
726  return mUInt64Value;
727  case AJA_VARIANT_STRING:
728  {
729  if (mStringValue.empty()) {
730  return 0;
731  } else {
732 #ifdef AJA_USE_CPLUSPLUS11
733  return std::strtoull(mStringValue.data(), NULL, 0);
734 #else
735  char* endptr;
736  const char* data = mStringValue.data();
737 #if defined(_MSC_VER) && _MSC_VER < 1900
738  unsigned long value = _strtoui64(data, &endptr, 10);
739 #else
740  unsigned long value = strtoull(data, &endptr, 10);
741 #endif
742  if (data == endptr)
743  return 0;
744  return value;
745 #endif
746  }
747  }
748  default:
749  case AJA_VARIANT_NONE:
750  return 0;
751  }
752 
753  return 0;
754 }
755 std::string AJAVariant::AsString() const {
756  switch(mType) {
757  case AJA_VARIANT_BOOL:
758  return mBooleanValue ? "true" : "false";
759  case AJA_VARIANT_FLOAT:
760  return aja::to_string(mFloatValue);
761  case AJA_VARIANT_DOUBLE:
763  case AJA_VARIANT_INT8:
764  return aja::to_string(mInt8Value);
765  case AJA_VARIANT_UINT8:
766  return aja::to_string(mUInt8Value);
767  case AJA_VARIANT_INT16:
768  return aja::to_string(mInt16Value);
769  case AJA_VARIANT_UINT16:
771  case AJA_VARIANT_INT32:
772  return aja::to_string(mInt32Value);
773  case AJA_VARIANT_UINT32:
775  case AJA_VARIANT_INT64:
776  return aja::to_string((long long)mInt64Value);
777  case AJA_VARIANT_UINT64:
778  return aja::to_string((unsigned long long)mUInt64Value);
779  case AJA_VARIANT_STRING:
780  return mStringValue;
781  default:
782  case AJA_VARIANT_NONE:
783  return std::string();
784  }
785 
786  return std::string();
787 }
AJAVariant::SetString
void SetString(const char *value)
Definition: variant.cpp:285
AJA_VARIANT_INT32
@ AJA_VARIANT_INT32
Definition: variant.h:24
AJA_VARIANT_DOUBLE
@ AJA_VARIANT_DOUBLE
Definition: variant.h:19
AJAVariant::SetUInt16
void SetUInt16(uint16_t value)
Definition: variant.cpp:265
AJA_VARIANT_UINT64
@ AJA_VARIANT_UINT64
Definition: variant.h:27
AJAVariant::GetInt16
int16_t GetInt16() const
Definition: variant.cpp:218
AJA_VARIANT_UINT32
@ AJA_VARIANT_UINT32
Definition: variant.h:25
AJAVariant::GetUInt32
uint32_t GetUInt32() const
Definition: variant.cpp:227
AJAVariant::mBooleanValue
bool mBooleanValue
Definition: variant.h:278
AJAVariant::SetBool
void SetBool(bool value)
Definition: variant.cpp:241
NULL
#define NULL
Definition: ntv2caption608types.h:19
AJAVariant::mUInt8Value
uint8_t mUInt8Value
Definition: variant.h:282
AJA_VARIANT_INT64
@ AJA_VARIANT_INT64
Definition: variant.h:26
AJAVariant::GetFloat
float GetFloat() const
Definition: variant.cpp:206
AJAVariant::GetString
const std::string & GetString() const
Definition: variant.cpp:236
AJAVariant::SetUInt8
void SetUInt8(uint8_t value)
Definition: variant.cpp:257
AJAVariant::AsInt8
int8_t AsInt8() const
Definition: variant.cpp:426
AJAVariant::AsUInt8
uint8_t AsUInt8() const
Definition: variant.cpp:465
AJAVariant::AsFloat
float AsFloat() const
Definition: variant.cpp:344
AJAVariant::mInt64Value
int64_t mInt64Value
Definition: variant.h:287
AJAVariant::SetInt16
void SetInt16(int16_t value)
Definition: variant.cpp:261
AJAVariant::AsString
std::string AsString() const
Definition: variant.cpp:755
AJA_VARIANT_UINT8
@ AJA_VARIANT_UINT8
Definition: variant.h:21
AJAVariant::mInt16Value
int16_t mInt16Value
Definition: variant.h:283
AJAVariant::AsBool
bool AsBool() const
Definition: variant.cpp:299
AJAVariant::mInt32Value
int32_t mInt32Value
Definition: variant.h:285
aja::lower
std::string & lower(std::string &str)
Definition: common.cpp:436
AJAVariant::AsInt64
int64_t AsInt64() const
Definition: variant.cpp:660
AJAVariantType
AJAVariantType
Definition: variant.h:15
AJAVariant::AsInt16
int16_t AsInt16() const
Definition: variant.cpp:504
AJAVariant::AsDouble
double AsDouble() const
Definition: variant.cpp:387
AJAVariant::SetDouble
void SetDouble(double value)
Definition: variant.cpp:249
AJAVariant::AsInt32
int32_t AsInt32() const
Definition: variant.cpp:582
AJAVariant::mFloatValue
float mFloatValue
Definition: variant.h:279
AJAVariant::mDoubleValue
double mDoubleValue
Definition: variant.h:280
AJAVariant::AsUInt64
uint64_t AsUInt64() const
Definition: variant.cpp:703
AJA_VARIANT_NONE
@ AJA_VARIANT_NONE
Definition: variant.h:16
AJA_VARIANT_UINT16
@ AJA_VARIANT_UINT16
Definition: variant.h:23
AJAVariant::SetUInt32
void SetUInt32(uint32_t value)
Definition: variant.cpp:273
AJAVariant
A simple Variant class.
Definition: variant.h:34
AJAVariant::mUInt16Value
uint16_t mUInt16Value
Definition: variant.h:284
AJAVariant::AJAVariant
AJAVariant()
Definition: variant.cpp:17
AJAVariant::AsUInt16
uint16_t AsUInt16() const
Definition: variant.cpp:543
AJAVariant::GetUInt64
uint64_t GetUInt64() const
Definition: variant.cpp:233
AJAVariant::SetUInt64
void SetUInt64(uint64_t value)
Definition: variant.cpp:281
AJAVariant::mInt8Value
int8_t mInt8Value
Definition: variant.h:281
variant.h
Declares the AJAVariant class.
AJA_VARIANT_BOOL
@ AJA_VARIANT_BOOL
Definition: variant.h:17
AJA_VARIANT_STRING
@ AJA_VARIANT_STRING
Definition: variant.h:28
AJAVariant::GetUInt8
uint8_t GetUInt8() const
Definition: variant.cpp:215
common.h
Private include file for all ajabase sources.
AJAVariant::GetInt64
int64_t GetInt64() const
Definition: variant.cpp:230
AJAVariant::GetInt8
int8_t GetInt8() const
Definition: variant.cpp:212
AJAVariant::GetInt32
int32_t GetInt32() const
Definition: variant.cpp:224
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
true
#define true
Definition: ntv2devicefeatures.h:26
AJAVariant::SetInt8
void SetInt8(int8_t value)
Definition: variant.cpp:253
AJA_VARIANT_FLOAT
@ AJA_VARIANT_FLOAT
Definition: variant.h:18
AJAVariant::GetUInt16
uint16_t GetUInt16() const
Definition: variant.cpp:221
AJAVariant::GetBool
bool GetBool() const
Definition: variant.cpp:203
AJAVariant::SetInt32
void SetInt32(int32_t value)
Definition: variant.cpp:269
aja::to_string
std::string to_string(bool val)
Definition: common.cpp:180
AJA_VARIANT_INT16
@ AJA_VARIANT_INT16
Definition: variant.h:22
AJAVariant::SetInt64
void SetInt64(int64_t value)
Definition: variant.cpp:277
AJAVariant::GetDouble
double GetDouble() const
Definition: variant.cpp:209
AJAVariant::AsUInt32
uint32_t AsUInt32() const
Definition: variant.cpp:621
AJAVariant::SetFloat
void SetFloat(float value)
Definition: variant.cpp:245
AJAVariant::operator=
void operator=(const AJAVariant &other)
Definition: variant.cpp:107