Files
Work/bsptree/TREENODE.HPP
2024-08-07 09:12:07 -04:00

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