/******************************************************************** 创建日期:2018年6月9日 文 件 名:PDSUID.h 原始作者:孙宇飞 描 述:唯一ID类 修改记录: 版本号 修改日期 作者 修改内容 *********************************************************************/ #ifndef _PDS_UID_H_ #define _PDS_UID_H_ #include //唯一ID class CPDSUID : public CObject { public: GUID guid; public: CPDSUID(void); CPDSUID(const CPDSUID& rhs); virtual ~CPDSUID(); CPDSUID& operator=(const CPDSUID& rhs); BOOL operator==(const CPDSUID& rhs) const; //初始化 //特别说明: // 将guid的每一个成员都设置为0 void Initial(void); //生成UID,并保存在guid中(每次调用都会生成不同的结果) void CreateUID(void); //判断this是否为空 //返回值: // =true 为空,guid的每一个成员变量都是0,=false 非空 BOOL IsNULL(void); //判断this是否有效 //返回值: // =true 有效,=false 无效,即IsNULL BOOL IsValid(void); //将this格式化为字符串并返回 //返回值: // 38位字符串,例如{77046E66-C274-42CE-85AD-5DCFA5B4D2A5} CString GetString(void); //解析字符串,将结果保存在guid void ParseString(CString strGUID); //将id赋值给this void SetUID(GUID id); BOOL Read(CArchive& ar); BOOL Write(CArchive& ar); }; CArchive& AFXAPI operator>>(CArchive& ar, CPDSUID& uid); CArchive& AFXAPI operator<<(CArchive& ar, CPDSUID& uid); //唯一ID的Map class CPDSUIDMap : public CMap { public: //扩展的变量 public: //扩展的方法 }; //唯一ID的链表 class CPDSUIDList : public CList { public: //扩展的变量 public: //扩展的方法 CPDSUIDList& operator=(CPDSUIDList& rhs); //赋值 CPDSUID& operator[](int iIndex); //根据索引值检索,不可越界 void Read(CArchive& ar); void Write(CArchive& ar); }; CArchive& AFXAPI operator>>(CArchive& ar, CPDSUIDList& listUID); CArchive& AFXAPI operator<<(CArchive& ar, CPDSUIDList& listUID); //唯一ID链表的数组 class CPDSUIDListArray : public CArray { public: //扩展的变量 public: //扩展的方法 CPDSUIDListArray& operator=(CPDSUIDListArray& rhs); //赋值 void Read(CArchive& ar); void Write(CArchive& ar); }; CArchive& AFXAPI operator>>(CArchive& ar, CPDSUIDListArray& alUID); CArchive& AFXAPI operator<<(CArchive& ar, CPDSUIDListArray& alUID); template<> AFX_INLINE UINT AFXAPI HashKey(CPDSUID& key) { return HashKey(key.guid.Data1); // 将第一个unsigned long传入 } #endif // _PDS_UID_H_