template class cv::Node

#include <utility.hpp>

template <class OBJECT>
class Node
{
public:
    // fields

    std::vector<Node<OBJECT>*> m_childs;
    OBJECT m_payload;
    Node<OBJECT>* m_pParent;

    // construction

    Node();
    Node(OBJECT& payload);

    // methods

    void
    addChild(Node<OBJECT>* pNode);

    Node<OBJECT>*
    findChild(OBJECT& payload) const;

    int
    findChild(Node<OBJECT>* pNode) const;

    int
    getDepth();

    void
    removeChilds();
};