VTK  9.3.0
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 
27 VTK_ABI_NAMESPACE_BEGIN
28 template <typename T>
29 T 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 
42 template <>
43 inline char vtkVariantExtract<char>(const vtkVariant& value, bool& valid)
44 {
45  valid = value.IsChar();
46  return valid ? value.ToChar() : 0;
47 }
48 
49 template <>
50 inline unsigned char vtkVariantExtract<unsigned char>(const vtkVariant& value, bool& valid)
51 {
52  valid = value.IsUnsignedChar();
53  return valid ? value.ToUnsignedChar() : 0;
54 }
55 
56 template <>
57 inline short vtkVariantExtract<short>(const vtkVariant& value, bool& valid)
58 {
59  valid = value.IsShort();
60  return valid ? value.ToShort() : 0;
61 }
62 
63 template <>
64 inline unsigned short vtkVariantExtract<unsigned short>(const vtkVariant& value, bool& valid)
65 {
66  valid = value.IsUnsignedShort();
67  return valid ? value.ToUnsignedShort() : 0;
68 }
69 
70 template <>
71 inline int vtkVariantExtract<int>(const vtkVariant& value, bool& valid)
72 {
73  valid = value.IsInt();
74  return valid ? value.ToInt() : 0;
75 }
76 
77 template <>
78 inline unsigned int vtkVariantExtract<unsigned int>(const vtkVariant& value, bool& valid)
79 {
80  valid = value.IsUnsignedInt();
81  return valid ? value.ToUnsignedInt() : 0;
82 }
83 
84 template <>
85 inline long vtkVariantExtract<long>(const vtkVariant& value, bool& valid)
86 {
87  valid = value.IsLong();
88  return valid ? value.ToLong() : 0;
89 }
90 
91 template <>
92 inline unsigned long vtkVariantExtract<unsigned long>(const vtkVariant& value, bool& valid)
93 {
94  valid = value.IsUnsignedLong();
95  return valid ? value.ToUnsignedLong() : 0;
96 }
97 
98 template <>
99 inline long long vtkVariantExtract<long long>(const vtkVariant& value, bool& valid)
100 {
101  valid = value.IsLongLong();
102  return valid ? value.ToLongLong() : 0;
103 }
104 
105 template <>
106 inline unsigned long long vtkVariantExtract<unsigned long long>(
107  const vtkVariant& value, bool& valid)
108 {
109  valid = value.IsUnsignedLongLong();
110  return valid ? value.ToUnsignedLongLong() : 0;
111 }
112 
113 template <>
114 inline float vtkVariantExtract<float>(const vtkVariant& value, bool& valid)
115 {
116  valid = value.IsFloat();
117  return valid ? value.ToFloat() : 0.0f;
118 }
119 
120 template <>
121 inline double vtkVariantExtract<double>(const vtkVariant& value, bool& valid)
122 {
123  valid = value.IsDouble();
124  return valid ? value.ToDouble() : 0.0;
125 }
126 
127 template <>
129 {
130  valid = value.IsString();
131  return valid ? value.ToString() : vtkStdString();
132 }
133 
134 template <>
136 {
137  valid = true;
138  return value;
139 }
140 
141 VTK_ABI_NAMESPACE_END
142 #endif
143 
144 // VTK-HeaderTest-Exclude: vtkVariantExtract.h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:38
A type representing the union of many types.
Definition: vtkVariant.h:62
@ value
Definition: vtkX3D.h:220
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)
T vtkVariantExtract(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)