#include "xcddraw.h" #include #include #include #include #include void TemplateInstStore::remove(VertexObject *obj) { instances->deleteGO((GraphicsObject *)obj); } void NameSensitiveVertex::remove(VertexObject *obj) { if (obj->isTemplateInst()) tempinststore->remove(obj); else { vertices->deleteGO((GraphicsObject *)obj); if (vertices->length() == 1) primary->set_primary_flag(PRIMARY); } } void NameSensitiveVertexStore::deleteElm(NameSensitiveVertex *obj) { assert(vertices); if ((char*)vertices->get_elm() == (char*)obj) { NameSensitiveVertexList *t = vertices; vertices = vertices->get_next(); if (vertices) vertices->set_prev(NULL); t->set_next(NULL); delete t; } else vertices->deleteElm(obj); } void NameSensitiveVertexList::deleteElm(NameSensitiveVertex *obj) { assert(next); if ((char*)next->get_elm() == (char*)obj) { NameSensitiveVertexList *t = next; next = next->get_next(); if (next) next->set_prev(this); t->set_prev(NULL); t->set_next(NULL); delete t; } else next->deleteElm(obj); } void NameSensitiveVertexStore::remove(VertexObject *obj) { if (vertices) { if (strcmp(vertices->get_elm()->get_vertex_name()->get_vertex_name(), obj->get_vertex_name()) == 0) { if (obj->get_primary_flag() == PRIMARY) { NameSensitiveVertexList *t = vertices; vertices = vertices->get_next(); if (vertices) vertices->set_prev(NULL); if (obj->get_kind() != EXT_VERTEX) { vertex_store->get_localvertices()->deleteElm(t->get_elm()); t->set_elm(NULL); } t->set_next(NULL); t->set_prev(NULL); delete t; } else vertices->get_elm()->remove(obj); } else vertices->remove(obj); } } void NameSensitiveVertexList::remove(VertexObject *obj) { if (next) { if (strcmp(next->get_elm()->get_vertex_name()->get_vertex_name(), obj->get_vertex_name()) == 0) { if (obj->get_primary_flag() == PRIMARY) { NameSensitiveVertexList *t = next; next = next->get_next(); if (next) { next->set_prev(this); } if (obj->get_kind() != EXT_VERTEX) { vertex_store->get_localvertices()->deleteElm(t->get_elm()); t->set_elm(NULL); } t->set_next(NULL); t->set_prev(NULL); delete t; } else next->get_elm()->remove(obj); } else next->remove(obj); } }