107 lines
2.4 KiB
C++
107 lines
2.4 KiB
C++
/********************************************************************
|
|
创建日期:2018年6月9日
|
|
文 件 名:PDSUID.h
|
|
原始作者:孙宇飞
|
|
描 述:唯一ID类
|
|
|
|
修改记录:
|
|
版本号 修改日期 作者 修改内容
|
|
*********************************************************************/
|
|
#ifndef _PDS_UID_H_
|
|
#define _PDS_UID_H_
|
|
|
|
#include <afxwin.h>
|
|
|
|
//唯一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 <CPDSUID,CPDSUID&,int,int&>
|
|
{
|
|
public: //扩展的变量
|
|
public: //扩展的方法
|
|
};
|
|
|
|
//唯一ID的链表
|
|
class CPDSUIDList : public CList<CPDSUID,CPDSUID&>
|
|
{
|
|
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<CPDSUIDList,CPDSUIDList>
|
|
{
|
|
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_
|