This pre-check must return Abort
if the addition is to be canceled, PostCheck
if postAdd
is to be called to decide or Complete
if the outer edge
is allowed to be added.
This pre-check must return Abort
if the addition is to be canceled, PostCheck
if postAdd
is to be called to decide or Complete
if the outer edge
is allowed to be added.
If postAdd
has been implemented, this method may always return PostCheck
.
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.
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 must return Abort
if the addition is to be canceled, PostCheck
if postAdd
is to be called to decide or Complete
if the outer node
is allowed to be added.
This pre-check must return Abort
if the addition is to be canceled, PostCheck
if postAdd
is to be called to decide or Complete
if the outer node
is allowed to be added.
If postAdd
has been implemented, this method may always return PostCheck
.
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.
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 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.
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 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.
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.
This pre-check must return Abort
if the addition of the outer nodes and/or edges in elems
is to be canceled, PostCheck
if postAdd
is to be called to decide or
Complete
if the the outer nodes and/or edges are allowed to be added.
This pre-check must return Abort
if the addition of the outer nodes and/or edges in elems
is to be canceled, PostCheck
if postAdd
is to be called to decide or
Complete
if the the outer nodes and/or edges are allowed to be added.
If postAdd
has been implemented, this method may always return PostCheck
.
The default implementation calls preAdd(node)
/preAdd(edge)
element-wise.
As for most cases this won't be satisfactory a domain-specific implementation should
be provided.
Use self
to access the associated graph.
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.
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.
(constrained: OuterNode[Constrained[N, E]]).toString()
Template to be mixed in by any constrained graph class.
The user of the dynamically constrained class scalax.collection.constrained.Graph or its mutable counterpart need not to be concerned about this trait because it has been mixed in there. She only needs to pass the companion object for her
Constraint
implementation.Implementors of statically constrained graph classes have to mix in this trait in their constrained graph implementations.
ConstraintMethods