// // $Log: get_subclasses.pp,v $ // Revision 5.5.1.1 1994/08/24 19:32:23 demeter // *** empty log message *** // // Revision 5.5 1994/08/24 19:32:22 demeter // *** empty log message *** // // Revision 5.4.1.1 1994/02/20 19:53:26 demeter // *** empty log message *** // // Revision 5.4 1994/02/20 19:53:25 demeter // *** empty log message *** // // Revision 5.3.1.1 1994/01/26 20:08:01 demeter // *** empty log message *** // // Revision 5.3 1994/01/26 20:08:00 demeter // *** empty log message *** // // Revision 5.2.1.1 1994/01/25 17:25:29 demeter // *** empty log message *** // // Revision 5.2 1994/01/25 17:25:28 demeter // *** empty log message *** // // Revision 5.1.1.2 1993/11/16 23:30:44 demeter // add if for bypassing inheritance edges. // // *operation* void get_subclasses(Vertex *avertex, Vertex_List* result, Path_constraint_exp* c) *wrapper* Cd_graph *prefix* (@ adjacencies->get_subclasses(avertex, result, c); @) *wrapper* Adjacency_Nlist *prefix* (@ Adjacency_list_iterator next(*this); Adjacency* each; while (each = next()) if (each->get_source()->equal(avertex)) { result->append(each->get_source()); each->get_subclasses(this,result,c); return; } @) *operation* void get_subclasses(Adjacency_Nlist *adjs, Vertex_List* result, Path_constraint_exp* c) *wrapper* Adjacency *prefix* (@ ns->get_subclasses(source, adjs, result, c); @) *operation* void get_subclasses(Vertex* source, Adjacency_Nlist *adjs, Vertex_List* result, Path_constraint_exp* c) *wrapper* Neighbors *prefix* (@ @) *wrapper* Alternat_ns *prefix* (@ if (alternat_ns) alternat_ns->get_subclasses(source, adjs, result, c); @) *wrapper* Term_Barlist *prefix* (@ static DemString * mark = new DemString("bypassing"); Term_list_iterator next(*this); Term* each; while (each = next()) if (!mark->g_equal(each->get_bypassing())) { if (c && c->isXInhEdgeInTheList(each->get_vertex(), source)) continue; adjs->get_subclasses(each->get_vertex(),result,c); } @)