龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

我做的一个C++用的Serialization库(含部分源码)(4)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
64 ClassObject.SetFieldValue(FFieldName,VL_CommonObject::CreatePrimitive(FObject->*FFieldPointer)); 65 } 66 } 67 68 template 69 class FieldSerializer : public FieldSerializerBase 70 { 71 protected: 72

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

精彩图集

赞助商链接