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