scalax.collection.constrained.constraints
This class makes it possible to carry over nodes that are passed to a pre-check and
are already contained in the graph to postAdd
.
This class makes it possible to carry over nodes that are passed to a pre-check and
are already contained in the graph to postAdd
. Thus we can limit the number of start
nodes for cycle detection in the post-check to these passed over docking nodes.
Creates a new constraint of the type ConstraintBinaryOp
with pre- and post-check methods
each of which returning true
if both this
' and that
's corresponding
pre- and post-checks return true
.
Creates a new constraint of the type ConstraintBinaryOp
with pre- and post-check methods
each of which returning true
if both this
' and that
's corresponding
pre- and post-checks return true
.
Consolidates all inner nodes of the arguments by adding the edge ends
of passedEdges
to passedNodes
.
Consolidates all inner nodes of the arguments by adding the edge ends
of passedEdges
to passedNodes
.
Consolidates all outer nodes of the arguments by adding the edge ends
of passedEdges
to passedNodes
.
Consolidates all outer nodes of the arguments by adding the edge ends
of passedEdges
to passedNodes
.
This handler is called whenever an addition violates the constraints.
This handler is called whenever an addition violates the constraints. The provided default implementation is empty.
the nodes passed to preAdd
.
the edges passed to preAdd
.
must be true if the handler has been overridden but it doesn't throw an exception.
This handler is called whenever a subtraction violates the constraints.
This handler is called whenever a subtraction violates the constraints. The provided default implementation is empty.
the nodes passed to preSubtract
.
the edges passed to preSubtract
.
must be true if the handler has been overridden but it doesn't throw an exception.
This post-check must return whether newGraph
should be committed or the add
operation is to be rolled back.
This post-check must return whether newGraph
should be committed or the add
operation is to be rolled back.
Use self
to access the associated graph.
For immutable graphs, self
maintains the state before the
addition but for mutable graphs, it is already mutated to the required state.
the after-addition would-be graph waiting for commit.
nodes passed to the running add operation except those coming from node/edge input streams.
edges passed to the running add operation except those coming from edge input streams.
This post-check must return whether newGraph
should be committed or the subtraction
is to be rolled back.
This post-check must return whether newGraph
should be committed or the subtraction
is to be rolled back.
Use self
to access the associated graph.
For immutable graphs, self
maintains the state before the
addition but for mutable graphs, it is already mutated to the required state.
the after-subtraction would-be graph waiting for commit.
If elems
is relatively small, preventively ensure that there is no cycle
within the new elements.
If elems
is relatively small, preventively ensure that there is no cycle
within the new elements.
nodes and/or edges to be added possibly containing duplicates.
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
When inserting an edge with a source contained in the graph a cycle is produced if there exists a target node of this edge such that there is a path from the target node to the source node.
When inserting an edge with a source contained in the graph a cycle is produced if there exists a target node of this edge such that there is a path from the target node to the source node.
to be added.
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
Adding a single node cannot produce a cycle.
Adding a single node cannot produce a cycle.
to be added
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
This pre-check is called on constructing a graph through its companion object.
This pre-check is called on constructing a graph through its companion object.
It must return whether the graph is allowed to be populated with nodes
and edges
.
The default implementation calls preAdd
for each node and edge.
Note that nodes and edges coming from node/edge input streams are not checked.
So when utilizing streams the post check postAdd
must be served.
the outer nodes the graph is to be populated with; nodes
being edge ends may but need not be contained in nodes
.
the outer edges the graph is to be populated with.
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
This pre-check must return Abort
if the subtraction of nodes
and/or edges
is to be canceled, PostCheck
if postSubtract
is to be called to decide or
Complete
if nodes
and/or edges
are allowed to be subtracted.
This pre-check must return Abort
if the subtraction of nodes
and/or edges
is to be canceled, PostCheck
if postSubtract
is to be called to decide or
Complete
if nodes
and/or edges
are allowed to be subtracted.
It is typically triggered by the --
operation.
The default implementation element-wise calls preSubtract(node, simple)
or
preSubtract(edge, simple)
, respectively.
As for most cases this won't be satisfactory a domain-specific implementation
should be provided.
Use self
to access the associated graph.
the inner nodes to be subtracted not necessarily including the ends of edges to be subtracted. Call allNodes to get the complete set of nodes to be subtracted.
the inner edges to be subtracted.
true
for standard (edge-only by -
),
false
for ripple (by -!
) removal.
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
This pre-check must return Abort
if the subtraction of edge
is to be canceled,
PostCheck
if postSubtract
is to be called to decide or
Complete
if the the edge
is allowed to be subtracted.
This pre-check must return Abort
if the subtraction of edge
is to be canceled,
PostCheck
if postSubtract
is to be called to decide or
Complete
if the the edge
is allowed to be subtracted.
This pre-check may be omitted by letting it always return postCheck
and overriding the corresponding post-check commit*
method.
Use self
to access the associated graph.
the inner edge to be subtracted.
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
This pre-check must return Abort
if the subtraction of node
is to be canceled,
PostCheck
if postSubtract
is to be called to decide or
Complete
if the the node
is allowed to be subtracted.
This pre-check must return Abort
if the subtraction of node
is to be canceled,
PostCheck
if postSubtract
is to be called to decide or
Complete
if the the node
is allowed to be subtracted.
This pre-check may be omitted by letting it always return postCheck
and overriding the corresponding post-check commit*
method.
Use self
to access the associated graph.
the inner to be subtracted.
true
for standard (ripple by -
), false
for gentle (by -?
) removal.
The results of the pre-check containing the follow-up activity
and possible any intermediate computation results to be used during the
post-check. To add computation results PreCheckResult
must be extended.
When extending Constraint
, self
will denote the attached constrained graph.
When extending Constraint
, self
will denote the attached constrained graph.
The factory methods of the companion object scalax.collection.constrained.Graph
initialize self
to the correct graph instance.
When extending Constrained
, self
will denote this
graph.
Creates a new constraint of the type ConstraintBinaryOp
with pre- and post-check methods
each of which returning true
if either this
' or other
's corresponding
pre- and post-checks returns true
.
Creates a new constraint of the type ConstraintBinaryOp
with pre- and post-check methods
each of which returning true
if either this
' or other
's corresponding
pre- and post-checks returns true
.
(acyclic: OuterNode[Acyclic[N, E]]).toString()
Ensures that the underlying
Graph
is acyclic at any time.