GraphMarkEdgeForRemoval
Description
Mark a directed edge for removal on the next GraphCommitChanges.
This operation is safe during traversal and does not structurally mutate the graph until commit.
Parameters
| Name | Direction | Description |
|---|---|---|
g |
in,out | Graph owning the edge. |
from |
in | Source node id. |
to |
in | Destination node id. |
Success
true when the edge was newly marked.
Failure
false when the edge is absent or was already marked.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Graph.Ops.c:98:
static bool test_graph_mark_edge_for_removal(void) {
WriteFmt("Testing GraphMarkEdgeForRemoval and deferred edge commit\n");
typedef Graph(int) IntGraph;- In
Graph.Ops.c:115:
GraphNodeForeachNeighbor(node, neighbor) {
if (GraphNodeGetId(neighbor) == b) {
(void)GraphMarkEdgeForRemoval(&graph, GraphNodeGetId(node), GraphNodeGetId(neighbor));
}
}- In
Graph.Ops.c:122:
bool result = GraphHasEdge(&graph, a, b);
result = result && GraphMarkEdgeForRemoval(&graph, b, c);
result = result && !GraphMarkEdgeForRemoval(&graph, b, c);
result = result && !GraphMarkEdgeForRemoval(&graph, c, b);- In
Graph.Ops.c:123:
bool result = GraphHasEdge(&graph, a, b);
result = result && GraphMarkEdgeForRemoval(&graph, b, c);
result = result && !GraphMarkEdgeForRemoval(&graph, b, c);
result = result && !GraphMarkEdgeForRemoval(&graph, c, b);- In
Graph.Ops.c:124:
result = result && GraphMarkEdgeForRemoval(&graph, b, c);
result = result && !GraphMarkEdgeForRemoval(&graph, b, c);
result = result && !GraphMarkEdgeForRemoval(&graph, c, b);
u64 committed = GraphCommitChanges(&graph);- In
Graph.Ops.c:155:
bool result = !GraphEdgeMarkedForRemoval(&graph, a, b);
result = result && GraphMarkEdgeForRemoval(&graph, a, b);
result = result && GraphEdgeMarkedForRemoval(&graph, a, b);
result = result && !GraphMarkEdgeForRemoval(&graph, a, b);- In
Graph.Ops.c:157:
result = result && GraphMarkEdgeForRemoval(&graph, a, b);
result = result && GraphEdgeMarkedForRemoval(&graph, a, b);
result = result && !GraphMarkEdgeForRemoval(&graph, a, b);
result = result && GraphUnmarkEdgeForRemoval(&graph, a, b);
result = result && !GraphEdgeMarkedForRemoval(&graph, a, b);- In
Graph.Ops.c:182:
GraphAddEdge(&graph, a, c);
bool result = GraphMarkEdgeForRemoval(&graph, a, b);
result = result && GraphMarkEdgeForRemoval(&graph, a, c);
result = result && GraphEdgeMarkedForRemoval(&graph, a, b);- In
Graph.Ops.c:183:
bool result = GraphMarkEdgeForRemoval(&graph, a, b);
result = result && GraphMarkEdgeForRemoval(&graph, a, c);
result = result && GraphEdgeMarkedForRemoval(&graph, a, b);
result = result && GraphEdgeMarkedForRemoval(&graph, a, c);- In
Graph.Ops.c:213:
result = result && (GraphNeighborAt(&graph, a, 0) == a);
result = result && (GraphPredecessorAt(&graph, a, 0) == a);
result = result && GraphMarkEdgeForRemoval(&graph, a, a);
result = result && (GraphCommitChanges(&graph) == 1);
result = result && (GraphEdgeCount(&graph) == 0);- In
Graph.Ops.c:238:
GraphAddEdge(&graph, d, b);
bool result = GraphMarkEdgeForRemoval(&graph, a, b);
result = result && GraphMarkNodeForDeletion(GraphGetNode(&graph, b));
result = result && GraphEdgeMarkedForRemoval(&graph, a, b);- In
Graph.Init.c:33:
result = result && (GraphNodeVisit(GraphGetNode(&graph, first_id)) == 1);
result = result && GraphMarkNodeForDeletion(GraphGetNode(&graph, second_id));
result = result && GraphMarkEdgeForRemoval(&graph, third_id, third_id);
GraphClear(&graph);
Last updated on