00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00033 #ifndef __vtkVariant_h
00034 #define __vtkVariant_h
00035
00036 #include "vtkType.h"
00037 #include "vtkSystemIncludes.h"
00038 #include "vtkSetGet.h"
00039 #include "vtkStdString.h"
00040
00041
00042
00043
00044
00045
00046 #define vtkExtraExtendedTemplateMacro(call) \
00047 vtkExtendedTemplateMacro(call); \
00048 vtkTemplateMacroCase(VTK_VARIANT, vtkVariant, call)
00049
00050
00051 #define vtkExtendedArrayIteratorTemplateMacro(call) \
00052 vtkArrayIteratorTemplateMacro(call); \
00053 vtkArrayIteratorTemplateMacroCase(VTK_VARIANT, vtkVariant, call);
00054
00055 class vtkStdString;
00056 class vtkObjectBase;
00057 class vtkAbstractArray;
00058
00059 class VTK_COMMON_EXPORT vtkVariant
00060 {
00061 public:
00062
00064 vtkVariant();
00065
00067 ~vtkVariant();
00068
00070 vtkVariant(const vtkVariant & other);
00071
00073 vtkVariant(char value);
00074
00076 vtkVariant(unsigned char value);
00077
00079 vtkVariant(signed char value);
00080
00082 vtkVariant(short value);
00083
00085 vtkVariant(unsigned short value);
00086
00088 vtkVariant(int value);
00089
00091 vtkVariant(unsigned int value);
00092
00094 vtkVariant(long value);
00095
00097 vtkVariant(unsigned long value);
00098
00099 #if defined(VTK_TYPE_USE___INT64)
00100
00101 vtkVariant(__int64 value);
00102
00104 vtkVariant(unsigned __int64 value);
00105 #endif
00106 #if defined(VTK_TYPE_USE_LONG_LONG)
00107
00108 vtkVariant(long long value);
00109
00111 vtkVariant(unsigned long long value);
00112 #endif
00113
00115 vtkVariant(float value);
00116
00118 vtkVariant(double value);
00119
00121 vtkVariant(const char* value);
00122
00124 vtkVariant(vtkStdString value);
00125
00127 vtkVariant(vtkObjectBase* value);
00128
00130 const vtkVariant & operator= (const vtkVariant & other);
00131
00133 bool IsValid() const;
00134
00136 bool IsString() const;
00137
00139 bool IsNumeric() const;
00140
00142 bool IsFloat() const;
00143
00145 bool IsDouble() const;
00146
00148 bool IsChar() const;
00149
00151 bool IsUnsignedChar() const;
00152
00154 bool IsSignedChar() const;
00155
00157 bool IsShort() const;
00158
00160 bool IsUnsignedShort() const;
00161
00163 bool IsInt() const;
00164
00166 bool IsUnsignedInt() const;
00167
00169 bool IsLong() const;
00170
00172 bool IsUnsignedLong() const;
00173
00175 bool Is__Int64() const;
00176
00178 bool IsUnsigned__Int64() const;
00179
00181 bool IsLongLong() const;
00182
00184 bool IsUnsignedLongLong() const;
00185
00187 bool IsVTKObject() const;
00188
00191 bool IsArray() const;
00192
00194 unsigned int GetType() const;
00195
00197 const char* GetTypeAsString() const;
00198
00200 vtkStdString ToString() const;
00201
00203
00209 float ToFloat(bool* valid = 0) const;
00210 double ToDouble(bool* valid = 0) const;
00211 char ToChar(bool* valid = 0) const;
00212 unsigned char ToUnsignedChar(bool* valid = 0) const;
00213 signed char ToSignedChar(bool* valid = 0) const;
00214 short ToShort(bool* valid = 0) const;
00215 unsigned short ToUnsignedShort(bool* valid = 0) const;
00216 int ToInt(bool* valid = 0) const;
00217 unsigned int ToUnsignedInt(bool* valid = 0) const;
00218 long ToLong(bool* valid = 0) const;
00219 unsigned long ToUnsignedLong(bool* valid = 0) const;
00220 #if defined(VTK_TYPE_USE___INT64)
00221 __int64 To__Int64(bool* valid = 0) const;
00222 unsigned __int64 ToUnsigned__Int64(bool* valid = 0) const;
00224 #endif
00225 #if defined(VTK_TYPE_USE_LONG_LONG)
00226 long long ToLongLong(bool* valid = 0) const;
00227 unsigned long long ToUnsignedLongLong(bool* valid = 0) const;
00228 #endif
00229 vtkTypeInt64 ToTypeInt64(bool* valid = 0) const;
00230 vtkTypeUInt64 ToTypeUInt64(bool* valid = 0) const;
00231
00233 vtkObjectBase* ToVTKObject() const;
00234
00236 vtkAbstractArray* ToArray() const;
00237
00238 template <typename T>
00239 T ToNumeric(bool* valid, T* vtkNotUsed(ignored)) const;
00240
00241 private:
00242 union
00243 {
00244 vtkStdString* String;
00245 float Float;
00246 double Double;
00247 char Char;
00248 unsigned char UnsignedChar;
00249 signed char SignedChar;
00250 short Short;
00251 unsigned short UnsignedShort;
00252 int Int;
00253 unsigned int UnsignedInt;
00254 long Long;
00255 unsigned long UnsignedLong;
00256 #if defined(VTK_TYPE_USE___INT64)
00257 __int64 __Int64;
00258 unsigned __int64 Unsigned__Int64;
00259 #endif
00260 #if defined(VTK_TYPE_USE_LONG_LONG)
00261 long long LongLong;
00262 unsigned long long UnsignedLongLong;
00263 #endif
00264 vtkObjectBase* VTKObject;
00265 } Data;
00266
00267 unsigned char Valid;
00268 unsigned char Type;
00269 };
00270
00271
00272
00273 struct VTK_COMMON_EXPORT vtkVariantLessThan
00274 {
00275 vtkVariantLessThan();
00276 bool operator()(const vtkVariant& s1, const vtkVariant& s2) const;
00277 };
00278
00279 #endif