#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); }