| 127 | // before the vertex is added. |
| 128 | |
| 129 | bool |
| 130 | Graph::addVertex(Vertex *vertexPtr, bool checkAdjacency) |
| 131 | { |
| 132 | // check the vertex * and its adjacency list |
| 133 | if (vertexPtr == 0) { |
| 134 | opserr << "WARNING Graph::addVertex"; |
| 135 | opserr << " - attempting to add a NULL vertex*\n"; |
| 136 | return false; |
| 137 | } |
| 138 | |
| 139 | if (checkAdjacency == true) { |
| 140 | if (vertexPtr->getDegree() != 0) { |
| 141 | const ID &adjacency = vertexPtr->getAdjacency(); |
| 142 | int size = adjacency.Size(); |
| 143 | for (int i=0; i<size; i++) { |
| 144 | Vertex *other = this->getVertexPtr(adjacency(i)); |
| 145 | if (other == 0) { |
| 146 | opserr << "WARNING Graph::addVertex"; |
| 147 | opserr << " - vertex with adjacent vertex not in graph\n"; |
| 148 | return false; |
| 149 | } |
| 150 | } |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | |
| 155 | bool result = myVertices->addComponent(vertexPtr); |
| 156 | if (result == false) { |
| 157 | opserr << *this; |
| 158 | opserr << "BAD VERTEX\n: " << *vertexPtr; |
| 159 | opserr << "WARNING Graph::addVertex"; |
| 160 | opserr << " - vertex could not be stored in TaggedObjectStorage object\n"; |
| 161 | } |
| 162 | |
| 163 | |
| 164 | // check nextFreeTag |
| 165 | if (vertexPtr->getTag() >= nextFreeTag) |
| 166 | nextFreeTag = vertexPtr->getTag() + 1; |
| 167 | |
| 168 | return result; |
| 169 | } |
| 170 | |
| 171 | |
| 172 | // int addEdge(int vertexTag, int otherVertexTag); |
no test coverage detected