#ifndef DIAMOND_DUAL_CONNECTIVITY_BUILDER_HPP
#define DIAMOND_DUAL_CONNECTIVITY_BUILDER_HPP

#include <mesh/ConnectivityBuilderBase.hpp>

#include <memory>

template <size_t>
class Connectivity;
class ConnectivityDescriptor;

class DiamondDualConnectivityBuilder : public ConnectivityBuilderBase
{
 private:
  template <size_t Dimension>
  void _buildDiamondConnectivityDescriptor(const Connectivity<Dimension>&, ConnectivityDescriptor&);

  template <size_t Dimension>
  void _buildDiamondConnectivityFrom(const IConnectivity&);

  friend class DiamondDualConnectivityManager;
  DiamondDualConnectivityBuilder(const IConnectivity&);

 public:
  ~DiamondDualConnectivityBuilder() = default;
};

#endif   // DIAMOND_DUAL_CONNECTIVITY_BUILDER_HPP