84 lines
1.5 KiB
C++
84 lines
1.5 KiB
C++
#ifndef _BSPTREE_TREENODE_HPP_
|
|
#define _BSPTREE_TREENODE_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
|
|
template <class T>
|
|
class TreeNode
|
|
{
|
|
public:
|
|
TreeNode(void);
|
|
TreeNode(const T &someItem);
|
|
TreeNode(const TreeNode<T> &someTreeNode);
|
|
virtual ~TreeNode();
|
|
void leftNode(TreeNode<T> *lpLeftNode);
|
|
void rightNode(TreeNode<T> *lpRightNode);
|
|
TreeNode<T> *leftNode(void);
|
|
TreeNode<T> *rightNode(void);
|
|
T &item(void);
|
|
WORD operator==(const TreeNode<T> &someTreeNode)const;
|
|
TreeNode<T> &operator=(const TreeNode<T> &someTreeNode);
|
|
private:
|
|
TreeNode<T> *mlpLeftNode;
|
|
TreeNode<T> *mlpRightNode;
|
|
T *mlpItem;
|
|
};
|
|
|
|
template <class T>
|
|
inline
|
|
TreeNode<T>::~TreeNode()
|
|
{
|
|
::delete mlpItem;
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
void TreeNode<T>::leftNode(TreeNode<T> *lpLeftNode)
|
|
{
|
|
mlpLeftNode=lpLeftNode;
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
void TreeNode<T>::rightNode(TreeNode<T> *lpRightNode)
|
|
{
|
|
mlpRightNode=lpRightNode;
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
TreeNode<T> *TreeNode<T>::leftNode(void)
|
|
{
|
|
return mlpLeftNode;
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
TreeNode<T> *TreeNode<T>::rightNode(void)
|
|
{
|
|
return mlpRightNode;
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
T &TreeNode<T>::item(void)
|
|
{
|
|
return *mlpItem;
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
TreeNode<T> &TreeNode<T>::operator=(const TreeNode<T> &someTreeNode)
|
|
{
|
|
leftNode(((TreeNode<T>&)someTreeNode).leftNode());
|
|
rightNode(((TreeNode<T>&)someTreeNode).rightNode());
|
|
*mlpItem=*someTreeNode.mlpItem;
|
|
return *this;
|
|
}
|
|
#if defined(_MSC_VER)
|
|
#include <bsptree/treenode.hpp>
|
|
#endif
|
|
#endif
|
|
|