VTK  9.0.1
vtkVariantExtract.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVariantExtract.h
5 
6 -------------------------------------------------------------------------
7  Copyright 2008 Sandia Corporation.
8  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9  the U.S. Government retains certain rights in this software.
10 -------------------------------------------------------------------------
11 
12  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
13  All rights reserved.
14  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
15 
16  This software is distributed WITHOUT ANY WARRANTY; without even
17  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
18  PURPOSE. See the above copyright notice for more information.
19 
20 =========================================================================*/
21 
35 #ifndef vtkVariantExtract_h
36 #define vtkVariantExtract_h
37 
38 #include <typeinfo> // for typeid
39 
40 template <typename T>
41 T vtkVariantExtract(const vtkVariant& value, bool& valid)
42 {
43  vtkGenericWarningMacro(
44  << "Cannot convert vtkVariant containing [" << value.GetTypeAsString() << "] "
45  << "to unsupported type [" << typeid(T).name() << "]. "
46  << "Create a vtkVariantExtract<> specialization to eliminate this warning.");
47 
48  valid = false;
49 
50  static T dummy;
51  return dummy;
52 }
53 
54 template <>
55 inline char vtkVariantExtract<char>(const vtkVariant& value, bool& valid)
56 {
57  valid = value.IsChar();
58  return valid ? value.ToChar() : 0;
59 }
60 
61 template <>
62 inline unsigned char vtkVariantExtract<unsigned char>(const vtkVariant& value, bool& valid)
63 {
64  valid = value.IsUnsignedChar();
65  return valid ? value.ToUnsignedChar() : 0;
66 }
67 
68 template <>
69 inline short vtkVariantExtract<short>(const vtkVariant& value, bool& valid)
70 {
71  valid = value.IsShort();
72  return valid ? value.ToShort() : 0;
73 }
74 
75 template <>
76 inline unsigned short vtkVariantExtract<unsigned short>(const vtkVariant& value, bool& valid)
77 {
78  valid = value.IsUnsignedShort();
79  return valid ? value.ToUnsignedShort() : 0;
80 }
81 
82 template <>
83 inline int vtkVariantExtract<int>(const vtkVariant& value, bool& valid)
84 {
85  valid = value.IsInt();
86  return valid ? value.ToInt() : 0;
87 }
88 
89 template <>
90 inline unsigned int vtkVariantExtract<unsigned int>(const vtkVariant& value, bool& valid)
91 {
92  valid = value.IsUnsignedInt();
93  return valid ? value.ToUnsignedInt() : 0;
94 }
95 
96 template <>
97 inline long vtkVariantExtract<long>(const vtkVariant& value, bool& valid)
98 {
99  valid = value.IsLong();
100  return valid ? value.ToLong() : 0;
101 }
102 
103 template <>
104 inline unsigned long vtkVariantExtract<unsigned long>(const vtkVariant& value, bool& valid)
105 {
106  valid = value.IsUnsignedLong();
107  return valid ? value.ToUnsignedLong() : 0;
108 }
109 
110 template <>
111 inline long long vtkVariantExtract<long long>(const vtkVariant& value, bool& valid)
112 {
113  valid = value.IsLongLong();
114  return valid ? value.ToLongLong() : 0;
115 }
116 
117 template <>
118 inline unsigned long long vtkVariantExtract<unsigned long long>(
119  const vtkVariant& value, bool& valid)
120 {
121  valid = value.IsUnsignedLongLong();
122  return valid ? value.ToUnsignedLongLong() : 0;
123 }
124 
125 template <>
126 inline float vtkVariantExtract<float>(const vtkVariant& value, bool& valid)
127 {
128  valid = value.IsFloat();
129  return valid ? value.ToFloat() : 0.0f;
130 }
131 
132 template <>
133 inline double vtkVariantExtract<double>(const vtkVariant& value, bool& valid)
134 {
135  valid = value.IsDouble();
136  return valid ? value.ToDouble() : 0.0;
137 }
138 
139 template <>
141 {
142  valid = value.IsString();
143  return valid ? value.ToString() : vtkStdString();
144 }
145 
146 template <>
148 {
149  valid = value.IsUnicodeString();
150  return valid ? value.ToUnicodeString() : vtkUnicodeString();
151 }
152 
153 template <>
155 {
156  valid = true;
157  return value;
158 }
159 
160 #endif
161 
162 // VTK-HeaderTest-Exclude: vtkVariantExtract.h
vtkVariantExtract
T vtkVariantExtract(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:41
vtkVariantExtract< int >
int vtkVariantExtract< int >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:83
vtkX3D::value
@ value
Definition: vtkX3D.h:226
vtkVariantExtract< unsigned short >
unsigned short vtkVariantExtract< unsigned short >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:76
vtkVariantExtract< char >
char vtkVariantExtract< char >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:55
vtkVariantExtract< vtkVariant >
vtkVariant vtkVariantExtract< vtkVariant >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:154
vtkVariantExtract< vtkUnicodeString >
vtkUnicodeString vtkVariantExtract< vtkUnicodeString >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:147
vtkVariantExtract< double >
double vtkVariantExtract< double >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:133
vtkVariantExtract< long >
long vtkVariantExtract< long >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:97
vtkUnicodeString
String class that stores Unicode text.
Definition: vtkUnicodeString.h:69
vtkVariant
A atomic type representing the union of many types.
Definition: vtkVariant.h:65
vtkVariantExtract< vtkStdString >
vtkStdString vtkVariantExtract< vtkStdString >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:140
vtkVariantExtract< unsigned long long >
unsigned long long vtkVariantExtract< unsigned long long >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:118
vtkVariantExtract< unsigned char >
unsigned char vtkVariantExtract< unsigned char >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:62
vtkVariantExtract< short >
short vtkVariantExtract< short >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:69
vtkVariantExtract< unsigned int >
unsigned int vtkVariantExtract< unsigned int >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:90
vtkVariantExtract< long long >
long long vtkVariantExtract< long long >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:111
vtkVariantExtract< unsigned long >
unsigned long vtkVariantExtract< unsigned long >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:104
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkVariantExtract< float >
float vtkVariantExtract< float >(const vtkVariant &value, bool &valid)
Definition: vtkVariantExtract.h:126