#ifndef _BSPTREE_TREENODE_HPP_ #define _BSPTREE_TREENODE_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif template class TreeNode { public: TreeNode(void); TreeNode(const T &someItem); TreeNode(const TreeNode &someTreeNode); virtual ~TreeNode(); void leftNode(TreeNode *lpLeftNode); void rightNode(TreeNode *lpRightNode); TreeNode *leftNode(void); TreeNode *rightNode(void); T &item(void); WORD operator==(const TreeNode &someTreeNode)const; TreeNode &operator=(const TreeNode &someTreeNode); private: TreeNode *mlpLeftNode; TreeNode *mlpRightNode; T *mlpItem; }; template inline TreeNode::~TreeNode() { ::delete mlpItem; } template inline void TreeNode::leftNode(TreeNode *lpLeftNode) { mlpLeftNode=lpLeftNode; } template inline void TreeNode::rightNode(TreeNode *lpRightNode) { mlpRightNode=lpRightNode; } template inline TreeNode *TreeNode::leftNode(void) { return mlpLeftNode; } template inline TreeNode *TreeNode::rightNode(void) { return mlpRightNode; } template inline T &TreeNode::item(void) { return *mlpItem; } template inline TreeNode &TreeNode::operator=(const TreeNode &someTreeNode) { leftNode(((TreeNode&)someTreeNode).leftNode()); rightNode(((TreeNode&)someTreeNode).rightNode()); *mlpItem=*someTreeNode.mlpItem; return *this; } #if defined(_MSC_VER) #include #endif #endif