int gp_ColorVerticesIntegrityCheck(graphP theGraph, graphP origGraph) { int I, J, w; ColorVerticesContext *context = (ColorVerticesContext *) gp_GetExtension(theGraph, COLORVERTICES_ID); if (theGraph == NULL || origGraph == NULL || context == NULL) return NOTOK; if (gp_GetNumColorsUsed(theGraph) <= 0 && theGraph->M > 0) return NOTOK; if (_TestSubgraph(theGraph, origGraph) != TRUE) return NOTOK; if (_TestSubgraph(origGraph, theGraph) != TRUE) return NOTOK; for (I=0; I < theGraph->N; I++) { J = gp_GetFirstArc(theGraph, I); while (gp_IsArc(theGraph, J)) { w = theGraph->G[J].v; if (context->color[I] < 0 || context->color[I] == context->color[w]) return NOTOK; J = gp_GetNextArc(theGraph, J); } } return OK; }
int gp_ColorVerticesIntegrityCheck(graphP theGraph, graphP origGraph) { int v, w, e; ColorVerticesContext *context = (ColorVerticesContext *) gp_GetExtension(theGraph, COLORVERTICES_ID); if (theGraph == NULL || origGraph == NULL || context == NULL) return NOTOK; if (gp_GetNumColorsUsed(theGraph) <= 0 && theGraph->M > 0) return NOTOK; if (_TestSubgraph(theGraph, origGraph) != TRUE) return NOTOK; if (_TestSubgraph(origGraph, theGraph) != TRUE) return NOTOK; for (v = gp_GetFirstVertex(theGraph); gp_VertexInRange(theGraph, v); v++) { e = gp_GetFirstArc(theGraph, v); while (gp_IsArc(e)) { w = gp_GetNeighbor(theGraph, e); if (context->color[v] < 0 || context->color[v] == context->color[w]) return NOTOK; e = gp_GetNextArc(theGraph, e); } } return OK; }
int _CheckEmbeddingIntegrity(graphP theGraph, graphP origGraph) { if (theGraph == NULL || origGraph == NULL) return NOTOK; if (_TestSubgraph(theGraph, origGraph) != TRUE) return NOTOK; if (_TestSubgraph(origGraph, theGraph) != TRUE) return NOTOK; if (_CheckEmbeddingFacialIntegrity(theGraph) != OK) return NOTOK; if (theGraph->embedFlags == EMBEDFLAGS_OUTERPLANAR) { if (_CheckAllVerticesOnExternalFace(theGraph) != OK) return NOTOK; } return OK; }
int _CheckObstructionIntegrity(graphP theGraph, graphP origGraph) { if (theGraph == NULL || origGraph == NULL) return NOTOK; if (_TestSubgraph(theGraph, origGraph) != TRUE) { return NOTOK; } if (theGraph->embedFlags == EMBEDFLAGS_PLANAR) return _CheckKuratowskiSubgraphIntegrity(theGraph); else if (theGraph->embedFlags == EMBEDFLAGS_OUTERPLANAR) return _CheckOuterplanarObstructionIntegrity(theGraph); return NOTOK; }
int _K33Search_CheckObstructionIntegrity(graphP theGraph, graphP origGraph) { // When searching for K3,3, we ensure that theGraph is a subgraph of // the original graph and that it contains a K3,3 homeomorph if (theGraph->embedFlags == EMBEDFLAGS_SEARCHFORK33) { int degrees[5], imageVerts[6]; if (_TestSubgraph(theGraph, origGraph) != TRUE) { return NOTOK; } if (_getImageVertices(theGraph, degrees, 4, imageVerts, 6) != OK) { return NOTOK; } if (_TestForK33GraphObstruction(theGraph, degrees, imageVerts) == TRUE) { return OK; } return NOTOK; } // When not searching for K3,3, we let the superclass do the work else { K33SearchContext *context = NULL; gp_FindExtension(theGraph, K33SEARCH_ID, (void *)&context); if (context != NULL) { return context->functions.fpCheckObstructionIntegrity(theGraph, origGraph); } } return NOTOK; }