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

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

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
造这种东西出来是有特殊的目的的,并不打算将这个Serialization做成一个非常通用的Serialization。 关键部分的代码如下: 头文件: 1 /***************************

  造这种东西出来是有特殊的目的的,并不打算将这个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 , false , FieldSerializerBase*>    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         {                                                    

精彩图集

赞助商链接