#include "semcheck.h" void Cd_graph::FinishupFset(Cd_graph *originalCd) { adjacencies->FinishupFset(originalCd); } void Adjacency_Nlist::FinishupFset(Cd_graph *originalCd) { Adjacency_list_iterator next(*this); Adjacency_ each; while (each = next()) each->FinishupFset(this,originalCd); } void Adjacency::FinishupFset(Adjacency_Nlist*fsetAdjs,Cd_graph *originalCd) { Ll1SetElement_Comma_list *result = new Ll1SetElement_Comma_list(); parameters->CollectFsets(result,originalCd); ns->FinishupFset(fsetAdjs,result); followset = result; parameters->RsetFsets(result,originalCd); } void Vertex_Comma_list::RsetFsets(Ll1SetElement_Comma_list *result, Cd_graph *originalCd) { Vertex_list_iterator next(*this); Vertex_ each; while (each = next()) originalCd->RsetFsets(result,each); } void Cd_graph::RsetFsets(Ll1SetElement_Comma_list *result,Vertex*avertex) { adjacencies->RsetFsets(result,avertex); } void Adjacency_Nlist::RsetFsets(Ll1SetElement_Comma_list *result,Vertex*avertex) { Adjacency_list_iterator next(*this); Adjacency_ each; while (each = next()) if (each->get_source()->g_equal(avertex)) { each->rset_followset(result); return; } } void Vertex_Comma_list::CollectFsets(Ll1SetElement_Comma_list *result, Cd_graph *originalCd) { Vertex_list_iterator next(*this); Vertex_ each; while (each = next()) originalCd->CollectFsets(result,each); } void Cd_graph::CollectFsets(Ll1SetElement_Comma_list *result,Vertex*avertex) { adjacencies->CollectFsets(result,avertex); } void Adjacency_Nlist::CollectFsets(Ll1SetElement_Comma_list *result,Vertex*avertex) { Adjacency_list_iterator next(*this); Adjacency_ each; while (each = next()) if (each->get_source()->g_equal(avertex)) { each->CollectFsets(result,avertex); return; } } void Adjacency::CollectFsets(Ll1SetElement_Comma_list *result,Vertex*avertex) { Ll1SetElement_list_iterator next(*followset); Ll1SetElement_ each; while (each = next()) if (!result->contain(each)) result->append(each); } void Neighbors::FinishupFset(Adjacency_Nlist*fsetAdjs,Ll1SetElement_Comma_list *result) { } void Neighbors_wc::FinishupFset(Adjacency_Nlist*fsetAdjs,Ll1SetElement_Comma_list *result) { Any_vertex_list_iterator next(*construct_ns); Any_vertex_ each; while (each = next()) each->FinishupFset(fsetAdjs,result); } void Any_vertex::FinishupFset(Adjacency_Nlist*fsetAdjs,Ll1SetElement_Comma_list *result) { } void Opt_labeled_term::FinishupFset(Adjacency_Nlist*fsetAdjs,Ll1SetElement_Comma_list *result) { } void Regular::FinishupFset(Adjacency_Nlist*fsetAdjs,Ll1SetElement_Comma_list *result) { Adjacency_list_iterator next(*fsetAdjs); Adjacency_ each; while (each = next()) if (each->get_source()->g_equal(this->get_vertex()->get_vertex())) { Ll1SetElement_list_iterator nexte(*each->get_followset()); Ll1SetElement_ eache; while (eache = nexte()) if (!result->contain(eache)) result->append(eache); return; } }