VTK  9.3.20240420
vtkVariantExtract.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright 2008 Sandia Corporation
3// SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov
4
21#ifndef vtkVariantExtract_h
22#define vtkVariantExtract_h
23
24#include "vtkVariant.h"
25#include <typeinfo> // for typeid
26
27VTK_ABI_NAMESPACE_BEGIN
28template <typename T>
29T vtkVariantExtract(const vtkVariant& value, bool& valid)
30{
31 vtkGenericWarningMacro(
32 << "Cannot convert vtkVariant containing [" << value.GetTypeAsString() << "] "
33 << "to unsupported type [" << typeid(T).name() << "]. "
34 << "Create a vtkVariantExtract<> specialization to eliminate this warning.");
35
36 valid = false;
37
38 static T dummy;
39 return dummy;
40}
41
42template <>
43inline char vtkVariantExtract<char>(const vtkVariant& value, bool& valid)
44{
45 valid = value.IsChar();
46 return valid ? value.ToChar() : 0;
47}
48
49template <>
50inline unsigned char vtkVariantExtract<unsigned char>(const vtkVariant& value, bool& valid)
51{
52 valid = value.IsUnsignedChar();
53 return valid ? value.ToUnsignedChar() : 0;
54}
55
56template <>
57inline short vtkVariantExtract<short>(const vtkVariant& value, bool& valid)
58{
59 valid = value.IsShort();
60 return valid ? value.ToShort() : 0;
61}
62
63template <>
64inline unsigned short vtkVariantExtract<unsigned short>(const vtkVariant& value, bool& valid)
65{
66 valid = value.IsUnsignedShort();
67 return valid ? value.ToUnsignedShort() : 0;
68}
69
70template <>
71inline int vtkVariantExtract<int>(const vtkVariant& value, bool& valid)
72{
73 valid = value.IsInt();
74 return valid ? value.ToInt() : 0;
75}
76
77template <>
78inline unsigned int vtkVariantExtract<unsigned int>(const vtkVariant& value, bool& valid)
79{
80 valid = value.IsUnsignedInt();
81 return valid ? value.ToUnsignedInt() : 0;
82}
83
84template <>
85inline long vtkVariantExtract<long>(const vtkVariant& value, bool& valid)
86{
87 valid = value.IsLong();
88 return valid ? value.ToLong() : 0;
89}
90
91template <>
92inline unsigned long vtkVariantExtract<unsigned long>(const vtkVariant& value, bool& valid)
93{
94 valid = value.IsUnsignedLong();
95 return valid ? value.ToUnsignedLong() : 0;
96}
97
98template <>
99inline long long vtkVariantExtract<long long>(const vtkVariant& value, bool& valid)
100{
101 valid = value.IsLongLong();
102 return valid ? value.ToLongLong() : 0;
103}
104
105template <>
107 const vtkVariant& value, bool& valid)
108{
109 valid = value.IsUnsignedLongLong();
110 return valid ? value.ToUnsignedLongLong() : 0;
111}
112
113template <>
114inline float vtkVariantExtract<float>(const vtkVariant& value, bool& valid)
115{
116 valid = value.IsFloat();
117 return valid ? value.ToFloat() : 0.0f;
118}
119
120template <>
121inline double vtkVariantExtract<double>(const vtkVariant& value, bool& valid)
122{
123 valid = value.IsDouble();
124 return valid ? value.ToDouble() : 0.0;
125}
126
127template <>
129{
130 valid = value.IsString();
131 return valid ? value.ToString() : vtkStdString();
132}
133
134template <>
135inline vtkVariant vtkVariantExtract<vtkVariant>(const vtkVariant& value, bool& valid)
136{
137 valid = true;
138 return value;
139}
140
141VTK_ABI_NAMESPACE_END
142#endif
143
144// VTK-HeaderTest-Exclude: vtkVariantExtract.h
Wrapper around std::string to keep symbols short.
Performs an explicit conversion from a vtkVariant to the type that it contains.
A type representing the union of many types.
Definition vtkVariant.h:162
vtkVariant vtkVariantExtract< vtkVariant >(const vtkVariant &value, bool &valid)
long long vtkVariantExtract< long long >(const vtkVariant &value, bool &valid)
double vtkVariantExtract< double >(const vtkVariant &value, bool &valid)
unsigned long long vtkVariantExtract< unsigned long long >(const vtkVariant &value, bool &valid)
unsigned long vtkVariantExtract< unsigned long >(const vtkVariant &value, bool &valid)
int vtkVariantExtract< int >(const vtkVariant &value, bool &valid)
unsigned char vtkVariantExtract< unsigned char >(const vtkVariant &value, bool &valid)
vtkStdString vtkVariantExtract< vtkStdString >(const vtkVariant &value, bool &valid)
long vtkVariantExtract< long >(const vtkVariant &value, bool &valid)
float vtkVariantExtract< float >(const vtkVariant &value, bool &valid)
short vtkVariantExtract< short >(const vtkVariant &value, bool &valid)
unsigned short vtkVariantExtract< unsigned short >(const vtkVariant &value, bool &valid)
char vtkVariantExtract< char >(const vtkVariant &value, bool &valid)
unsigned int vtkVariantExtract< unsigned int >(const vtkVariant &value, bool &valid)