#ifndef _ITEM_CONTAINER_H_ #define _ITEM_CONTAINER_H_ #include "ItemStructure.h" // Àü¹æ ÂüÁ¶ namespace Item { class CItem; class CItemContainer { public: CItemContainer(); virtual ~CItemContainer(); bool Initialize(unsigned long dwCID, unsigned short nMaxSize); virtual CItem* GetItem(ItemPos itemPos) = 0; virtual bool SetItem(ItemPos itemPos, CItem* lpItem) = 0; virtual bool RemoveItem(ItemPos itemPos) = 0; virtual bool SerializeOut(char* szItemBuffer_Out, unsigned long& dwBufferSize_InOut) const; virtual bool SerializeIn(const char* szItemBuffer_In, unsigned long dwBufferSize_InOut) = 0; virtual void DumpItemInfo(); protected: void Destroy(); CItem** m_lppItems; CItem* m_lpNullItem; unsigned long m_dwCID; unsigned short m_nMaxSize; unsigned short m_usFlags; }; class CArrayContainer : public CItemContainer { public: CArrayContainer(); virtual ~CArrayContainer(); bool Initialize(unsigned long dwCID, unsigned char nXSize, unsigned char nYSize, unsigned char nTabNum); virtual CItem* GetItem(ItemPos itemPos); virtual bool SetItem(ItemPos itemPos, CItem* lpItem); virtual bool RemoveItem(ItemPos itemPos); virtual bool SerializeIn(const char* szItemBuffer_In, unsigned long dwBufferSize_In); virtual void DumpItemInfo(); private: unsigned char m_nXSize; unsigned char m_nYSize; unsigned char m_nTabNum; unsigned char m_nSizePerTab; }; class CListContainer : public CItemContainer { public: CListContainer(); virtual ~CListContainer(); virtual CItem* GetItem(ItemPos itemPos); virtual bool SetItem(ItemPos itemPos, CItem* lpItem); virtual bool RemoveItem(ItemPos itemPos); virtual bool SerializeIn(const char* szItemBuffer_In, unsigned long dwBufferSize_In); }; }; #endif