VTK
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
dox
Common
Core
vtkVariantCast.h
Go to the documentation of this file.
1
/*=========================================================================
2
3
Program: Visualization Toolkit
4
Module: vtkVariantCast.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
38
#ifndef __vtkVariantCast_h
39
#define __vtkVariantCast_h
40
41
#include <
vtkUnicodeString.h
>
42
43
template
<
typename
T>
44
T
vtkVariantCast
(
const
vtkVariant
&
value
,
bool
* valid = 0)
45
{
46
vtkGenericWarningMacro(
47
<<
"Cannot convert vtkVariant containing ["
<< value.
GetTypeAsString
() <<
"] "
48
<<
"to unsupported type ["
<<
typeid
(T).
name
() <<
"]. "
49
<<
"Create a vtkVariantCast<> specialization to eliminate this warning."
50
);
51
52
if
(valid)
53
*valid =
false
;
54
55
static
T dummy;
56
return
dummy;
57
}
58
59
template
<>
60
inline
char
vtkVariantCast<char>
(
const
vtkVariant
&
value
,
bool
* valid)
61
{
62
return
value
.ToChar(valid);
63
}
64
65
template
<>
66
inline
unsigned
char
vtkVariantCast<unsigned char>
(
const
vtkVariant
&
value
,
bool
* valid)
67
{
68
return
value
.ToUnsignedChar(valid);
69
}
70
71
template
<>
72
inline
short
vtkVariantCast<short>
(
const
vtkVariant
&
value
,
bool
* valid)
73
{
74
return
value
.ToShort(valid);
75
}
76
77
template
<>
78
inline
unsigned
short
vtkVariantCast<unsigned short>
(
const
vtkVariant
&
value
,
bool
* valid)
79
{
80
return
value
.ToUnsignedShort(valid);
81
}
82
83
template
<>
84
inline
int
vtkVariantCast<int>
(
const
vtkVariant
&
value
,
bool
* valid)
85
{
86
return
value
.ToInt(valid);
87
}
88
89
template
<>
90
inline
unsigned
int
vtkVariantCast<unsigned int>
(
const
vtkVariant
&
value
,
bool
* valid)
91
{
92
return
value
.ToUnsignedInt(valid);
93
}
94
95
template
<>
96
inline
long
vtkVariantCast<long>
(
const
vtkVariant
&
value
,
bool
* valid)
97
{
98
return
value
.ToLong(valid);
99
}
100
101
template
<>
102
inline
unsigned
long
vtkVariantCast<unsigned long>
(
const
vtkVariant
&
value
,
bool
* valid)
103
{
104
return
value
.ToUnsignedLong(valid);
105
}
106
107
#ifdef VTK_TYPE_USE___INT64
108
109
template
<>
110
inline
__int64
vtkVariantCast<__int64>
(
const
vtkVariant
&
value
,
bool
* valid)
111
{
112
return
value
.To__Int64(valid);
113
}
114
115
template
<>
116
inline
unsigned
__int64
vtkVariantCast<unsigned __int64>
(
const
vtkVariant
&
value
,
bool
* valid)
117
{
118
return
value.ToUnsigned__Int64(valid);
119
}
120
121
#endif
122
123
124
#ifdef VTK_TYPE_USE_LONG_LONG
125
126
template
<>
127
inline
long
long
vtkVariantCast<long long>
(
const
vtkVariant
&
value
,
bool
* valid)
128
{
129
return
value.ToLongLong(valid);
130
}
131
132
template
<>
133
inline
unsigned
long
long
vtkVariantCast<unsigned long long>
(
const
vtkVariant
&
value
,
bool
* valid)
134
{
135
return
value.ToUnsignedLongLong(valid);
136
}
137
138
#endif
139
140
template
<>
141
inline
float
vtkVariantCast<float>
(
const
vtkVariant
&
value
,
bool
* valid)
142
{
143
return
value.ToFloat(valid);
144
}
145
146
template
<>
147
inline
double
vtkVariantCast<double>
(
const
vtkVariant
&
value
,
bool
* valid)
148
{
149
return
value.ToDouble(valid);
150
}
151
152
template
<>
153
inline
vtkStdString
vtkVariantCast<vtkStdString>
(
const
vtkVariant
&
value
,
bool
* valid)
154
{
155
if
(valid)
156
*valid =
true
;
157
158
return
value.ToString();
159
}
160
161
template
<>
162
inline
vtkUnicodeString
vtkVariantCast<vtkUnicodeString>
(
const
vtkVariant
&
value
,
bool
* valid)
163
{
164
if
(valid)
165
*valid =
true
;
166
167
return
value.ToUnicodeString();
168
}
169
170
template
<>
171
inline
vtkVariant
vtkVariantCast<vtkVariant>
(
const
vtkVariant
&
value
,
bool
* valid)
172
{
173
if
(valid)
174
*valid =
true
;
175
176
return
value
;
177
}
178
179
#endif
180
181
// VTK-HeaderTest-Exclude: vtkVariantCast.h
Generated on Thu May 24 2012 22:22:09 for VTK by
1.8.1