我做的一个C++用的Serialization库(含部分源码)(4)
64 ClassObject.SetFieldValue(FFieldName,VL_CommonObject::CreatePrimitive(FObject->*FFieldPointer));
65 }
66 }
67
68 template
69 class FieldSerializer : public FieldSerializerBase
70 {
71 protected:
72 _Type* FObject;
73 _Field _Type::* FFieldPointer;
74 public:
75 FieldSerializer(_Type* Object , _Field _Type::* FieldPointer , VUnicodeString FieldName)
76 :FieldSerializerBase(FieldName)
77 {
78 FObject=Object;
79 FFieldPointer=FieldPointer;
80 }
81
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
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
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
- 上一篇:POJ 1694 C++ (排序)
- 下一篇:CC++访问MySQL





