#ifndef CONNECTIVITY_COMPUTER_HPP
#define CONNECTIVITY_COMPUTER_HPP

#include <ConnectivityMatrix.hpp>
#include <SubItemValuePerItem.hpp>

struct ConnectivityComputer
{
  void computeInverseConnectivityMatrix(const ConnectivityMatrix& item_to_child_item_matrix,
                                        ConnectivityMatrix& child_item_to_item_matrix) const;

  template <TypeOfItem child_item_type,
            TypeOfItem item_type,
            typename ConnectivityType>
  SubItemValuePerItem<const unsigned short, item_type, child_item_type>
  computeLocalItemNumberInChildItem(const ConnectivityType& c) const;
};

#endif // CONNECTIVITY_COMPUTER_HPP