PlotterHMI/datafile/dxf/dxflib/PDSMath/PDSUID.h
huahaiyan 9f74511e69 20240315
1、增加数据分割功能(完成)
2、更换dxf库(进行中)
2024-03-15 16:49:50 +08:00

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_