32 #ifndef __vtkVariantBoostSerialization_h
33 #define __vtkVariantBoostSerialization_h
35 #include "vtkSetGet.h"
37 #include "vtkVariant.h"
38 #include "vtkVariantArray.h"
42 #include <boost/archive/binary_oarchive.hpp>
44 #include <boost/serialization/base_object.hpp>
45 #include <boost/serialization/export.hpp>
46 #include <boost/serialization/extended_type_info_no_rtti.hpp>
47 #include <boost/serialization/split_free.hpp>
52 template<
typename Archiver>
54 const unsigned int vtkNotUsed(version))
56 ar & boost::serialization::base_object<std::string>(str);
63 template<
typename Archiver>
64 void save(Archiver& ar,
const vtkUnicodeString& str,
65 const unsigned int vtkNotUsed(version))
67 std::string utf8(str.utf8_str());
71 template<
typename Archiver>
72 void load(Archiver& ar, vtkUnicodeString& str,
73 const unsigned int vtkNotUsed(version))
77 str = vtkUnicodeString::from_utf8(utf8);
80 BOOST_SERIALIZATION_SPLIT_FREE(vtkUnicodeString)
87 template<typename Archiver>
88 void save(Archiver& ar, const vtkVariant& variant,
89 const
unsigned int vtkNotUsed(version))
91 if (!variant.IsValid())
99 char Type = variant.GetType();
103 #define VTK_VARIANT_SAVE(Value,Type,Function) \
106 Type value = variant.Function(); \
125 #if defined(VTK_TYPE_USE___INT64)
129 #if defined(VTK_TYPE_USE_LONG_LONG)
135 cerr <<
"cannot serialize variant with type " << variant.GetType()
138 #undef VTK_VARIANT_SAVE
141 template<
typename Archiver>
142 void load(Archiver& ar, vtkVariant& variant,
143 const unsigned int vtkNotUsed(version))
148 #define VTK_VARIANT_LOAD(Value,Type) \
153 variant = vtkVariant(value); \
159 case 0: variant = vtkVariant();
return;
172 #if defined(VTK_TYPE_USE___INT64)
176 #if defined(VTK_TYPE_USE_LONG_LONG)
181 cerr <<
"cannot deserialize variant with type " <<
static_cast<unsigned int>(Type) <<
'\n';
182 variant = vtkVariant();
184 #undef VTK_VARIANT_LOAD
187 BOOST_SERIALIZATION_SPLIT_FREE(vtkVariant)
193 template<typename Archiver>
194 void save(Archiver& ar, const vtkVariantArray& c_array,
195 const
unsigned int vtkNotUsed(version))
197 vtkVariantArray& array =
const_cast<vtkVariantArray&
>(c_array);
201 if(array.GetName()!=NULL) name=array.GetName();
205 vtkIdType n = array.GetNumberOfTuples();
207 for (vtkIdType i = 0; i < n; ++i)
209 ar & array.GetValue(i);
213 template<
typename Archiver>
214 void load(Archiver& ar, vtkVariantArray& array,
215 const unsigned int vtkNotUsed(version))
220 array.SetName(name.c_str());
228 array.SetName(name.c_str());
234 array.SetNumberOfTuples(n);
236 for (vtkIdType i = 0; i < n; ++i)
239 array.SetValue(i, value);
243 BOOST_SERIALIZATION_SPLIT_FREE(vtkVariantArray)
#define VTK_VARIANT_SAVE(Value, Type, Function)
void load(Archiver &ar, vtkUnicodeString &str, const unsigned int vtkNotUsed(version))
void serialize(Archiver &ar, vtkStdString &str, const unsigned int vtkNotUsed(version))
#define VTK_VARIANT_LOAD(Value, Type)
void save(Archiver &ar, const vtkUnicodeString &str, const unsigned int vtkNotUsed(version))