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