#ifndef MKF_NODE_HPP_INCLUDED
#define MKF_NODE_HPP_INCLUDED


#include"mkf_definition.hpp"
#include"mkf_print.hpp"




struct
Node
{
  Node*  parent;

  const Definition*  definition;

  int  depth;

  std::vector<Node*>  children;

  int  character;

   Node(const Definition*  def=nullptr, int  c=0);
   Node(Node&&  rhs);
  ~Node();


  void  append(Node*  child);

  void  omit();
  void  omit_children_all();

  void  print(int  indent=0) const;

};




#endif




