// Tree.h: interface for the CTreeNode and CTree classes. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_TREE_H__988BB458_8C93_11D3_BE83_0000F87A3912__INCLUDED_) #define AFX_TREE_H__988BB458_8C93_11D3_BE83_0000F87A3912__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ////////////////////////////////////////////////////////////////////// template class CTreeNode : public CObject { // Construction/Destruction public: CTreeNode(); ~CTreeNode(); // Destroy public: virtual void Destroy(); // Parent Members public: CTreeNode* GetParent() { return m_pParent; } void SetParent(CTreeNode* pParent) { m_pParent = pParent; } protected: CTreeNode* m_pParent; // Children Members public: int GetChildCount(); CTreeNode* GetChild(int iIndex); int AddChild(CTreeNode* pNode); void RemoveChild(CTreeNode* pNode); void RemoveChild(int iIndex); protected: CTypedPtrArray*> m_Children; // Associations public: int GetAssocCount(); CTreeNode* GetAssoc(int iIndex); int AddAssoc(CTreeNode* pNode); void RemoveAssoc(CTreeNode* pNode); void RemoveAssoc(int iIndex); protected: CTypedPtrArray*> m_Associations; // Object Members public: T GetObject() { return m_Object; } void SetObject(T Object) { m_Object = Object; } protected: T m_Object; }; ////////////////////////////////////////////////////////////////////// template class CTree : public CObject { // Construction/Destruction public: CTree(); virtual ~CTree(); // Root Node public: CTreeNode* GetRootNode() { return m_pRootNode; } void SetRootNode(CTreeNode* pRootNode) { m_pRootNode = pRootNode; } protected: CTreeNode* m_pRootNode; }; #include "tree.inl" ////////////////////////////////////////////////////////////////////// #endif // !defined(AFX_TREE_H__988BB458_8C93_11D3_BE83_0000F87A3912__INCLUDED_)