cppDelVertex
UseCase2
*operation* int cppDelVertex( char* Labelname )
*init* (@ 0 @)
*traverse*
*from* Graph
*through* -> *,vertices,*
*to* { AltVertex, ConstVertex }
*carry*
*in* Graph* iGraph = (@ this @)
*along* *from* Graph *through* -> *,vertices,* *to* { AltVertex, ConstVertex }
*carry*
*in* Vertex_List* new_VList = (@ new Vertex_List() @)
*along* *from* Graph *through* -> *,vertices,* *to* { AltVertex, ConstVertex }
*wrapper* Graph
*suffix*
(@
delete (this -> get_vertices());
this -> set_vertices(new_VList);
this -> cppDrawVertices();
this -> cppDrawEdges();
@)
*wrapper* AltVertex
(@
DemIdent* targetVname = this->get_vertexname()->get_name();
if(!strcmp(Labelname, targetVname->get_val())) {
iGraph -> delAttachedEdges(Labelname);
delete (targetVname);
delete (this->get_vertexname()->get_vn_offset()->get_coords());
delete (this->get_vertexname()->get_vn_offset());
delete (this->get_vertexname());
delete (this);
return_val = 1;
} else {
new_VList -> append(this);
}
@)
*wrapper* ConstVertex
(@
DemIdent* targetVname = this->get_vertexname()->get_name();
if(!strcmp(Labelname, targetVname->get_val())) {
iGraph -> delAttachedEdges(Labelname);
delete (targetVname);
delete (this->get_vertexname()->get_vn_offset()->get_coords());
delete (this->get_vertexname()->get_vn_offset());
delete (this->get_vertexname());
delete (this);
return_val = 1;
} else {
new_VList -> append(this);
}
@)
*operation* void delAttachedEdges(char* Labelname)
*traverse*
*from* Graph
*through* -> *,edges,*
*to* { ConstEdge, AltEdge }
*carry*
*in* Edge_List* new_EList = (@ new Edge_List() @)
*along* *from* Graph *through* -> *,edges,* *to* { ConstEdge, AltEdge }
*wrapper* Graph
*suffix*
(@
delete(this->get_edges());
this->set_edges(new_EList);
@)
*wrapper* AltEdge
(@
DemIdent* srcVname = this->get_from()->get_vertexname()->get_name();
DemIdent* desVname = this->get_to()->get_vertexname()->get_name();
if(!strcmp(Labelname, srcVname->get_val()) ||
!strcmp(Labelname, desVname->get_val())) {
if(this->get_middlepoints() != NULL) {
delete(this->get_middlepoints()->get_coords());
delete(this->get_middlepoints());
}
delete(this);
} else {
new_EList -> append(this);
}
@)
*wrapper* ConstEdge
(@
DemIdent* srcVname = this->get_from()->get_vertexname()->get_name();
DemIdent* desVname = this->get_to()->get_vertexname()->get_name();
if(!strcmp(Labelname, srcVname->get_val()) ||
!strcmp(Labelname, desVname->get_val())) {
delete(this->get_edgename()->get_name());
delete(this->get_edgename()->get_en_offset()->get_coords());
delete(this->get_edgename()->get_en_offset());
delete(this->get_edgename());
if(this->get_middlepoints() != NULL) {
delete(this->get_middlepoints()->get_coords());
delete(this->get_middlepoints());
}
delete (this);
} else {
new_EList -> append(this);
}
@)