📄 collectionhelper.h
字号:
// CollectionHelper.h Created by Posy at October, 2001
// for Helper Macros for Implement Custom Collcetion Interface or Object.
#ifndef _COLLECTIONHELPER_H_
#define _COLLECTIONHELPER_H_
#define DEFINE_CUSTOM_COLLECTION_INTERFACE(IntfName, IntfNum, TypeName) \
BEGIN_INTERFACE_DECLARATION(IntfName, IntfNum) \
virtual LONG GetCount() const = 0; \
virtual COLPOS GetPosAt(LONG nIndex) const = 0; \
virtual COLPOS GetHeadPos() const = 0; \
virtual COLPOS GetTailPos() const = 0; \
virtual BOOL GetNext(COLPOS &nPos, TypeName** ppIntf) const = 0; \
virtual BOOL GetPrev(COLPOS &nPos, TypeName** ppIntf) const = 0; \
virtual BOOL GetAtPos(COLPOS nPos, TypeName** ppIntf) const = 0; \
virtual BOOL SetAtPos(COLPOS nPos, TypeName *pIntf) = 0; \
virtual BOOL InsertBeforePos(COLPOS &nPos, TypeName *pIntf) = 0; \
virtual BOOL InsertAfterPos(COLPOS &nPos, TypeName *pIntf) = 0; \
virtual BOOL RemoveAtPos(COLPOS nPos) = 0; \
virtual BOOL IsEmpty() const = 0; \
virtual BOOL InsertAt(LONG nIndex, TypeName *pIntf) = 0; \
virtual BOOL RemoveAt(LONG nIndex) = 0; \
virtual BOOL GetAt(LONG nIndex, TypeName** ppIntf) const = 0; \
virtual BOOL SetAt(LONG nIndex, TypeName *pIntf) = 0; \
virtual BOOL InsertHead(TypeName *pIntf) = 0; \
virtual BOOL InsertTail(TypeName *pIntf) = 0; \
virtual BOOL RemoveHead() = 0; \
virtual BOOL RemoveTail() = 0; \
virtual BOOL GetHead(TypeName** ppIntf) const = 0; \
virtual BOOL GetTail(TypeName** ppIntf) const = 0; \
virtual BOOL Empty(BOOL bDestroy = FALSE) = 0; \
END_INTERFACE_DECLARATION()
#define DEFINE_CUSTOM_COLLECTION_HELPER(HelperName, IntfName, TypeName, TypeNum) \
class HelperName : public IntfName \
{ \
ICollection *x_pCol; \
public: \
HelperName() \
{x_pCol = NULL;}; \
void SetHelper(ICollection* pCollection) \
{x_pCol = pCollection;}; \
ICollection* GetHelper() \
{return x_pCol;}; \
virtual LONG GetCount() const \
{return x_pCol->GetCount();}; \
virtual COLPOS GetPosAt(LONG nIndex) const \
{return x_pCol->GetPosAt(nIndex);}; \
virtual COLPOS GetHeadPos() const \
{return x_pCol->GetHeadPos();}; \
virtual COLPOS GetTailPos() const \
{return x_pCol->GetTailPos();}; \
virtual BOOL GetNext(COLPOS &nPos, TypeName** ppIntf) const \
{return x_pCol->GetNext(nPos, (void**)ppIntf, TypeNum);}; \
virtual BOOL GetPrev(COLPOS &nPos, TypeName** ppIntf) const \
{return x_pCol->GetPrev(nPos, (void**)ppIntf, TypeNum);}; \
virtual BOOL GetAtPos(COLPOS nPos, TypeName** ppIntf) const \
{return x_pCol->GetAtPos(nPos, (void**)ppIntf, TypeNum);}; \
virtual BOOL SetAtPos(COLPOS nPos, TypeName *pIntf) \
{return x_pCol->SetAtPos(nPos, pIntf);}; \
virtual BOOL InsertBeforePos(COLPOS &nPos, TypeName *pIntf) \
{return x_pCol->InsertBeforePos(nPos, pIntf);}; \
virtual BOOL InsertAfterPos(COLPOS &nPos, TypeName *pIntf) \
{return x_pCol->InsertAfterPos(nPos, pIntf);}; \
virtual BOOL RemoveAtPos(COLPOS nPos) \
{return x_pCol->RemoveAtPos(nPos);}; \
virtual BOOL IsEmpty() const \
{return x_pCol->IsEmpty();}; \
virtual BOOL InsertAt(LONG nIndex, TypeName *pIntf) \
{return x_pCol->InsertAt(nIndex, pIntf);}; \
virtual BOOL RemoveAt(LONG nIndex) \
{return x_pCol->RemoveAt(nIndex);}; \
virtual BOOL GetAt(LONG nIndex, TypeName** ppIntf) const \
{return x_pCol->GetAt(nIndex, (void**)ppIntf, TypeNum);}; \
virtual BOOL SetAt(LONG nIndex, TypeName *pIntf) \
{return x_pCol->SetAt(nIndex, pIntf);}; \
virtual BOOL InsertHead(TypeName *pIntf) \
{return x_pCol->InsertHead(pIntf);}; \
virtual BOOL InsertTail(TypeName *pIntf) \
{return x_pCol->InsertTail(pIntf);}; \
virtual BOOL RemoveHead() \
{return x_pCol->RemoveHead();}; \
virtual BOOL RemoveTail() \
{return x_pCol->RemoveTail();}; \
virtual BOOL GetHead(TypeName** ppIntf) const \
{return x_pCol->GetHead((void**)ppIntf, TypeNum);}; \
virtual BOOL GetTail(TypeName** ppIntf) const \
{return x_pCol->GetTail((void**)ppIntf, TypeNum);}; \
virtual BOOL Empty(BOOL bDestroy = FALSE) \
{return x_pCol->Empty(bDestroy);}; \
};
#define DEFINE_CUSTOM_COLLECTION_OBJECT(ObjName, IntfName, TypeName, TypeNum) \
DEFINE_CUSTOM_COLLECTION_HELPER(X##ObjName##Helper, IntfName, TypeName, TypeNum) \
class C##ObjName : public CBaseObject, \
public X##ObjName##Helper \
{ \
BEGIN_OBJECT_DECLARATION(C##ObjName) \
ADD_INTERFACE(IntfName) \
END_OBJECT_DECLARATION() \
};
#define IMPLEMENT_CUSTOM_COLLECTION_OBJECT(ObjName) \
IMPLEMENT_OBJECT_CUSTOM_INIT(C##ObjName) \
C##ObjName::C##ObjName() \
{ \
ICollection *pCol = NULL; \
ObjServ::CreateInstance(ON_BaseCollection, IN_ICollection, (void**)&pCol); \
SetHelper(pCol); \
}; \
C##ObjName::~C##ObjName() \
{ \
GetHelper()->DestroyInstance(); \
};
#endif //_COLLECTIONHELPER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -