我做的一个C++用的Serialization库(含部分源码)
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-29
82 void Serialize(VL_Serializer* Serializer , VL_CommonObject& ClassObject) 83 { 84 ClassObject.SetFieldValue(FFieldName,Serializer->Serialize(&(FObject->*FFieldPointer))); 85 } 86 }; 87 88 DECLARE_PRIMITIVE_SERIALIZER(VBool); 89 DECLARE_PRIMITIVE_SERIALIZER(VByte); 90 DECLARE_PRIMITIVE_SERIALIZER(VInt); 91 DECLARE_PRIMITIVE_SERIALIZER(VFloat); 92 DECLARE_PRIMITIVE_SERIALIZER(VDouble); 93 DECLARE_PRIMITIVE_SERIALIZER(VSize); 94 DECLARE_PRIMITIVE_SERIALIZER(VChar); 95 DECLARE_PRIMITIVE_SERIALIZER(VWChar); 96 DECLARE_PRIMITIVE_SERIALIZER(VUnicodeString); 97 98 #undef DECLARE_PRIMITIVE_SERIALIZER 99 100 template<typename _Type , typename _Field> 101 class FieldSerializer<_Type , _Field*> : public FieldSerializerBase 102 { 103 protected: 104 _Type* FObject; 105 _Field* _Type::* FFieldPointer; 106 public: 107 FieldSerializer(_Type* Object , _Field* _Type::* FieldPointer , VUnicodeString FieldName) 108 :FieldSerializerBase(FieldName) 109 { 110 FObject=Object; 111 FFieldPointer=FieldPointer; 112 } 113 114 void Serialize(VL_Serializer* Serializer , VL_CommonObject& ClassObject) 115 { 116 ClassObject.SetFieldValue(FFieldName,Serializer->Serialize(FObject->*FFieldPointer)); 117 } 118 }; 119 120 template<typename _Type , typename _Field> 121 class FieldSerializer<_Type , VL_AutoPtr<_Field>> : public FieldSerializerBase 122 { 123 protected: 124 _Type* FObject; 125 VL_AutoPtr<_Field> _Type::* FFieldPointer; 126 public: 127 FieldSerializer(_Type* Object , VL_AutoPtr<_Field> _Type::* FieldPointer , VUnicodeString FieldName) 128 :FieldSerializerBase(FieldName) 129 { 130 FObject=Object; 131 FFieldPointer=FieldPointer; 132 } 133 134 void Serialize(VL_Serializer* Serializer , VL_CommonObject& ClassObject) 135 { 136 ClassObject.SetFieldValue(FFieldName,Serializer->Serialize((FObject->*FFieldPointer).Object())); 137 } 138 }; 139 140 template<typename _Type , typename _Field> 141 void AddFieldSerializer(_Type* Object , _Field _Type::* FieldPointer , VUnicodeString FieldName) 142 { 143 FFieldSerializers.Add(new FieldSer |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 浅析C++标准头文件结构下一篇: COM原理及应用---- 结构化存储
关于我做的一个C++用的Serialization库(含部分源码)的所有评论