我做的一个C++用的Serialization库(含部分源码)(3)
造这种东西出来是有特殊的目的的,并不打算将这个Serialization做成一个非常通用的Serialization。
关键部分的代码如下:
头文件:
1 /*******************************************************************************
2 Vczh Library++ 2.0
3 数据结构::序列化
4 开发者:陈梓瀚
5
6 接口:
7 类:
8 VL_SerializableObject :可序列化对象基类
9 VL_Serializer :序列化/反序列化处理器
10 函数:
11 VL_REGISTER_SERIALIZABLE_CLASS :注册可序列化类型
12 VL_REGISTER_SERIALIZABLE_FIELD :注册可序列化成员变量
13 *******************************************************************************/
14
15 #ifndef VL_SERIALIZATION
16 #define VL_SERIALIZATION
17
18 #include "DataVL_Data_List.h"
19 #include "DataVL_Data_Map.h"
20 #include "VL_CommonData.h"
21
22 namespace vl
23 {
24 namespace serialization
25 {
26 using namespace collection;
27 using namespace commondata;
28
29 class VL_Serializer;
30
31 class VL_SerializableObject : public VL_Base
32 {
33 protected:
34 class FieldSerializerBase : public VL_Base
35 {
36 public:
37 typedef VL_List
38 protected:
39 VUnicodeString FFieldName;
40
41 public:
42 FieldSerializerBase(VUnicodeString FieldName);
43
44 virtual void Serialize(VL_Serializer* Serializer , VL_CommonObject& ClassObject)=0;
45 };
46
47 #define DECLARE_PRIMITIVE_SERIALIZER(FIELD)
48 template
49 class FieldSerializer<_Type , FIELD> : public FieldSerializerBase
50 {
51 protected:
52 _Type* FObject;
53 FIELD _Type::* FFieldPointer;
54 public:
55 FieldSerializer(_Type* Object , FIELD _Type::* FieldPointer , VUnicodeString FieldName)
56 :FieldSerializerBase(FieldName)
57 {
58 FObject=Object;
59 FFieldPointer=FieldPointer;
60 }
61
62 void Serialize(VL_Serializer* Serializer , VL_CommonObject& ClassObject)
63 {
- 上一篇:POJ 1694 C++ (排序)
- 下一篇:CC++访问MySQL





