我做的一个C++用的Serialization库(含部分源码)
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-29
ializer<_Type,_Field>(Object,FieldPointer,FieldName)); 144 } 145 private: 146 FieldSerializerBase::List FFieldSerializers; 147 public: 148 VL_SerializableObject(); 149 ~VL_SerializableObject(); 150 151 virtual void Serialize(VL_Serializer* Serializer , VL_CommonObject& ClassObject); 152 virtual VBool Deserialize(VL_Serializer* Serializer , const VL_CommonObject& ClassObject); 153 }; 154 155 class VL_Serializer : public VL_Base 156 { 157 public: 158 class ClassSerializerBase : public VL_Base 159 { 160 public: 161 typedef VL_List<VL_AutoPtr<ClassSerializerBase> , false , ClassSerializerBase*> List; 162 virtual VBool Accept(VL_SerializableObject* Object)=0; 163 virtual VUnicodeString GetClassTypeName()=0; 164 }; 165 166 template<typename _Type> 167 class ClassSerializer : public ClassSerializerBase 168 { 169 protected: 170 VUnicodeString FClassTypeName; 171 172 public: 173 ClassSerializer(VUnicodeString ClassTypeName) 174 { 175 FClassTypeName=ClassTypeName; 176 } 177 178 VBool Accept(VL_SerializableObject* Object) 179 { 180 return dynamic_cast<_Type*>(Object)!=0; 181 } 182 183 VUnicodeString GetClassTypeName() 184 { 185 return FClassTypeName; 186 } 187 }; 188 protected: 189 ClassSerializerBase::List FClassSerializers; 190 public: 191 VL_Serializer(); 192 ~VL_Serializer(); 193 194 void RegisterClass(ClassSerializerBase* aClassSerializer); 195 ClassSerializerBase* SelectClass(VL_SerializableObject* Object); 196 VL_CommonObject Serialize(VL_SerializableObject* Object); 197 }; 198 199 template<typename _Type> 200 void GenericDeserializerMethod(VL_Serializer* Serializer , const VL_CommonObject& Object , VL_SerializableObject*& Result) 201 { 202 Result=new _Type(); 203 Result->Deserialize(Serializer,Object); 204 } 205 206 #define VL_REGISTER_SERIALIZABLE_CLASS(SERIALIZER,CLASS) \ 207 do{ \ 208 (SERIALIZER)->RegisterClass(new VL_Serializer::ClassSerializer<CLASS>(L#CLASS)); \ 209 }while(0) 210 211 #define VL_REGISTER_SERIALIZABLE_FIELD(CLASS,FIELD) |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 浅析C++标准头文件结构下一篇: COM原理及应用---- 结构化存储
关于我做的一个C++用的Serialization库(含部分源码)的所有评论