#include "cdabs.h"

// This File contains the functions to abstract similarities between 2 cds

Cd_graph* Cd_graph::abstract(Cd_graph* graph)
// Function to abstract similarities between 2 cds
{
  return (adjacencies->abstract(graph->get_adjacencies()));
  }

Cd_graph* Adjacency_Nlist::abstract(Adjacency_Nlist* anl)
{
  extern Adjacency_Nlist* new_anl;
  Cd_graph* ret_graph = new Cd_graph();
  Adjacency_Nlist* ret_anl = new Adjacency_Nlist();
  Adjacency_list_iterator next_arg(*this);
  Adjacency_ each_arg;
  while (each_arg = next_arg())
     each_arg->abstract(this,anl);
  if (new_anl->list_length() == 0)
      return ((Cd_graph*)NULL); /* Nothing in common */
  ret_graph->set_adjacencies(new_anl);
  return (ret_graph);
  }


void Adjacency::abstract(Adjacency_Nlist* anl1,Adjacency_Nlist* anl2)
{
     if (ns->is_alns())
     // check Alternate classes only if they can be reached from a Construction or a Repetition class
          return;	
    anl2->similar(this,anl1);
}
