|
@@ -45,10 +45,21 @@
|
|
|
#define SERIALIZE_TYPE(Type,Params) \
|
|
|
namespace igl { namespace serialization { \
|
|
|
void _serialization(bool s,Type& obj,std::vector<char>& buffer) {Params} \
|
|
|
- void serialize(const Type& obj,std::vector<char>& buffer) { \
|
|
|
+ template<> inline void serialize(const Type& obj,std::vector<char>& buffer) { \
|
|
|
_serialization(true,const_cast<Type&>(obj),buffer); \
|
|
|
} \
|
|
|
- void deserialize(Type& obj,const std::vector<char>& buffer) { \
|
|
|
+ template<> inline void deserialize(Type& obj,const std::vector<char>& buffer) { \
|
|
|
+ _serialization(false,obj,const_cast<std::vector<char>&>(buffer)); \
|
|
|
+ } \
|
|
|
+}}
|
|
|
+
|
|
|
+#define SERIALIZE_TYPE_SOURCE(Type,Params) \
|
|
|
+namespace igl { namespace serialization { \
|
|
|
+ void _serialization(bool s,Type& obj,std::vector<char>& buffer) {Params} \
|
|
|
+ void _serialize(const Type& obj,std::vector<char>& buffer) { \
|
|
|
+ _serialization(true,const_cast<Type&>(obj),buffer); \
|
|
|
+ } \
|
|
|
+ void _deserialize(Type& obj,const std::vector<char>& buffer) { \
|
|
|
_serialization(false,obj,const_cast<std::vector<char>&>(buffer)); \
|
|
|
} \
|
|
|
}}
|
|
@@ -56,6 +67,7 @@ namespace igl { namespace serialization { \
|
|
|
#define SERIALIZE_MEMBER(Object) igl::serializer(s,obj.Object,std::string(#Object),buffer);
|
|
|
#define SERIALIZE_MEMBER_NAME(Object,Name) igl::serializer(s,obj.Object,std::string(Name),buffer);
|
|
|
|
|
|
+
|
|
|
namespace igl
|
|
|
{
|
|
|
struct IndexedPointerBase;
|
|
@@ -112,10 +124,12 @@ namespace igl
|
|
|
//
|
|
|
// namespace igl { namespace serialization
|
|
|
// {
|
|
|
+ // template<>
|
|
|
// inline void serialize(const UserType& obj,std::vector<char>& buffer) {
|
|
|
// ::igl::serialize(obj.var,"var",buffer);
|
|
|
// }
|
|
|
//
|
|
|
+ // template<>
|
|
|
// inline void deserialize(UserType& obj,const std::vector<char>& buffer) {
|
|
|
// ::igl::deserialize(obj.var,"var",buffer);
|
|
|
// }
|
|
@@ -657,7 +671,7 @@ namespace igl
|
|
|
{
|
|
|
// data
|
|
|
std::vector<char> tmp;
|
|
|
- igl::serialization::serialize<>(obj,tmp);
|
|
|
+ serialize<>(obj,tmp);
|
|
|
|
|
|
// size
|
|
|
size_t size = buffer.size();
|
|
@@ -679,7 +693,7 @@ namespace igl
|
|
|
tmp.resize(size);
|
|
|
std::copy(iter,iter+size,tmp.begin());
|
|
|
|
|
|
- deserialize(obj,tmp);
|
|
|
+ deserialize<>(obj,tmp);
|
|
|
iter += size;
|
|
|
}
|
|
|
|
|
@@ -1146,13 +1160,13 @@ namespace igl
|
|
|
template <typename T>
|
|
|
inline void serialize(const T& obj,std::vector<char>& buffer)
|
|
|
{
|
|
|
- std::cerr << typeid(obj).name() << " is not serializable: derive from igl::Serializable or overload the function igl::serialization::serialize(const T& obj,std::vector<char>& buffer)" << std::endl;
|
|
|
+ std::cerr << typeid(obj).name() << " is not serializable: derive from igl::Serializable or spezialize the template function igl::serialization::serialize(const T& obj,std::vector<char>& buffer)" << std::endl;
|
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
|
inline void deserialize(T& obj,const std::vector<char>& buffer)
|
|
|
{
|
|
|
- std::cerr << typeid(obj).name() << " is not deserializable: derive from igl::Serializable or overload the function igl::serialization::deserialize(T& obj, const std::vector<char>& buffer)" << std::endl;
|
|
|
+ std::cerr << typeid(obj).name() << " is not deserializable: derive from igl::Serializable or spezialize the template function igl::serialization::deserialize(T& obj, const std::vector<char>& buffer)" << std::endl;
|
|
|
}
|
|
|
|
|
|
// helper functions
|