| 178 | // graph. Returns $0$ if sucessfull, a negative number if not. |
| 179 | |
| 180 | int |
| 181 | Graph::addEdge(int vertexTag, int otherVertexTag) |
| 182 | { |
| 183 | // get pointers to the vertices, if one does not exist return |
| 184 | |
| 185 | Vertex *vertex1 = this->getVertexPtr(vertexTag); |
| 186 | Vertex *vertex2 = this->getVertexPtr(otherVertexTag); |
| 187 | if ((vertex1 == 0) || (vertex2 == 0)) { |
| 188 | opserr << "WARNING Graph::addEdge() - one or both of the vertices "; |
| 189 | opserr << vertexTag << " " << otherVertexTag << " not in Graph\n"; |
| 190 | return -1; |
| 191 | } |
| 192 | |
| 193 | // add an edge to each vertex |
| 194 | int result = vertex1->addEdge(otherVertexTag); |
| 195 | if (result == 1) |
| 196 | return 0; // already there |
| 197 | else if (result == 0) { // added to vertexTag now add to other |
| 198 | if ((result = vertex2->addEdge(vertexTag)) == 0) { |
| 199 | numEdge++; |
| 200 | } |
| 201 | else { |
| 202 | opserr << " WARNING Graph::addEdge() - " << vertexTag; |
| 203 | opserr << " added to " << otherVertexTag; |
| 204 | opserr << " adjacency - but already there in otherVertexTag!.\n"; |
| 205 | opserr << *this; exit(0); |
| 206 | return -2; |
| 207 | } |
| 208 | } else { |
| 209 | opserr << " WARNING Graph::addEdge() - " << vertexTag; |
| 210 | opserr << " added to " << otherVertexTag; |
| 211 | opserr << " adjacency - but not vica versa!.\n"; |
| 212 | opserr << *this; exit(0); |
| 213 | return -2; |
| 214 | } |
| 215 | return result; |
| 216 | } |
| 217 | |
| 218 | |
| 219 | Vertex * |
no test coverage detected