"Devel::MAT::Graph" - a set of references between related SVs
Contents
Constructor
new
$graph = Devel::MAT::Graph->new( $dumpfile );
Constructs a new "Devel::MAT::Graph" instance backed by the given dumpfile (which is only actually used
to make the "$node->sv" method work).
Description
Instances of this class represent an entire graph of references between related SVs, as a helper method
for return values from various Devel::MAT methods, which might be used for some sort of screen layout or
other analysis tasks.
Mutation Methods
add_sv
$graph->add_sv( $sv );
Makes the graph aware of the given Devel::MAT::SV. This is not strictly necessary before calling
"add_ref" or "add_root", but ensures that "has_sv" will return true immediately after it, and so can be
used as a sentinel for recursion control.
add_ref
$graph->add_ref( $from_sv, $to_sv, $desc );
Adds an edge to the graph, from and to the given SVs, with the given description.
add_root
$graph->add_root( $from_sv, $desc );
Adds a root edge to the graph, at the given SV with the given description.
Name
"Devel::MAT::Graph" - a set of references between related SVs
Node Objects
The values returned by "get_sv_node" respond to the following methods:
graph
$graph = $node->graph;
Returns the containing "Devel::MAT::Graph" instance.
addr
$addr = $node->addr;
Returns the address of the SV represented by this node.
sv
$sv = $node->sv;
Returns the SV object itself, as taken from the dumpfile instance.
roots
@roots = $node->roots;
Returns any root descriptions given (by calls to "$graph->add_root" for the SV at this node.
$graph->add_root( $sv, $desc );
( $desc, ... ) = $graph->get_sv_node( $sv )->roots;
edges_out
@edges = $node->edges_out;
Returns an even-sized list of any edge descriptions and more "Node" objects given as references (by calls
to "$graph->add_ref") from the SV at this node.
$graph->add_ref( $from_sv, $to_sv, $desc );
( $desc, $to_edge, ... ) = $graph->get_sv_node( $from_sv )->edges_out;
edges_out(scalar)
$n_edges = $node->edges_out;
In scalar context, returns the numberofedges that exist; i.e. half the size of the pairlist that would
be returned in list context.
edges_in
@edges = $node->edges_in;
Similar to "edges_out", but returns edges in the opposite direction; i.e. edges of references to this
node.
$graph->add_ref( $from_sv, $to_sv, $desc );
( $desc, $from_edge, ... ) = $graph->get_sv_node( $to_sv )->edges_in;
edges_in(scalar)
$n_edges = $node->edges_out;
In scalar context, returns the numberofedges that exist; i.e. half the size of the pairlist that would
be returned in list context.
Query Methods
has_sv
$bool = $graph->has_sv( $sv );
Returns true if the graph has edges or roots for the given SV, or it has at least been given to "add_sv".
get_sv_node
$node = $graph->get_sv_node( $sv );
Returns a "Node" object for the given SV.
get_root_nodes
@desc_nodes = $graph->get_root_nodes;
Returns an even-sized list of pairs, containing root descriptions and the nodes having those roots, in no
particular order.
