dakcomptrlist.h

来自「DarkATLSmtp(SMTP COM 组件原创代码),注册后可在Delphi」· C头文件 代码 · 共 57 行

H
57
字号
// DakComPtrList.h: interface for the CDakComPtrList class.
//作者:高越 邮箱:darkprince@v.cn
//QQ:1738387 (本人只接受技术探讨以及软件项目合作事宜,其他误扰)
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DAKCOMPTRLIST_H__96C5DBB4_6197_4495_BAB2_889F8C68475E__INCLUDED_)
#define AFX_DAKCOMPTRLIST_H__96C5DBB4_6197_4495_BAB2_889F8C68475E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

struct __DAKPOSITION {};
typedef __DAKPOSITION* DAKPOSITION;
class CDakComPtrList  
{
private:
	typedef struct _tagPTRNODE
	{
		_tagPTRNODE* pPrev;
		_tagPTRNODE* pNext;
		LPVOID    pData;
	}PTRNODE,*LPPTRNODE;
public:
	CDakComPtrList();
	virtual ~CDakComPtrList();
	CDakComPtrList(long nBlockSize);
	long GetCount(void);
	DAKPOSITION FindIndex(long nIndex);
	DAKPOSITION GetTailPosition(void);
	DAKPOSITION GetHeadPosition(void);
	LPVOID GetHead(void);
	LPVOID GetTail(void);
	LPVOID GetAt(DAKPOSITION position);
	LPVOID SetAt(DAKPOSITION pos,LPVOID newElement);
	LPVOID RemoveAt(DAKPOSITION position);
	LPVOID RemoveHead(void);
	LPVOID RemoveTail(void);
	LPVOID GetNext(DAKPOSITION position);
	LPVOID GetPrev(DAKPOSITION position);
	void RemoveAll(void);
	DAKPOSITION AddTail(LPVOID newElement);
	DAKPOSITION AddHead(LPVOID newElement);
	DAKPOSITION InsertBefore(DAKPOSITION position,LPVOID newElement);
	DAKPOSITION InsertAfter(DAKPOSITION position,LPVOID newElement);
	DAKPOSITION Find(LPVOID searchValue,DAKPOSITION startAfter=NULL);
	BOOL IsEmpty(void); 
private:
	DAKPOSITION AllocNewNodes(long nNodeCount,DAKPOSITION posAfterNode);
	void ReleaseArr(void);
	CDakComPtrList::LPPTRNODE FindNodeByIndex(long nIndex);
private:
	LPPTRNODE m_pArrPtrNode;//_PTRNODE array pointer
};

#endif // !defined(AFX_DAKCOMPTRLIST_H__96C5DBB4_6197_4495_BAB2_889F8C68475E__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?