[padb-devel] [padb] r198 committed - Cleanup and remove some dead code from the show_tree and make_tree fun...
codesite-noreply at google.com
codesite-noreply at google.com
Mon Sep 7 13:35:58 BST 2009
Revision: 198
Author: apittman
Date: Mon Sep 7 05:35:03 2009
Log: Cleanup and remove some dead code from the show_tree and make_tree
functions. There
should be no visable behaviour changes from this change.
http://code.google.com/p/padb/source/detail?r=198
Modified:
/branches/cleanup/src/padb
=======================================
--- /branches/cleanup/src/padb Mon Sep 7 01:36:34 2009
+++ /branches/cleanup/src/padb Mon Sep 7 05:35:03 2009
@@ -1911,20 +1911,20 @@
# This function returns an reference to an array of hashes, each
# hash containing the "txt" of the function name and a further array
# of hash references called "children".
-sub make_tree {
+sub _make_tree {
my ( $level, $lines, @tags ) = @_;
my @peers;
my $prev;
- my $tag = $tags[0];
+ my $tag = shift @tags;
debug_log( 'tree', \@tags, 'called tag:%s, level:%d', $tag, $level );
return if ( !defined($tag) );
return if ( !defined( $lines->{$tag} ) );
- my @identical = ();
- my @different = ();
+ my @identical;
+ my @different;
my $endlevel = $level;
@@ -1932,23 +1932,16 @@
my $line = $lines->{$tag}[$level];
if ( defined $line ) {
foreach my $tag2 (@tags) {
- next if ( $tag2 eq $tag );
if ( defined( $lines->{$tag2}[$level] )
and $line eq $lines->{$tag2}[$level] )
{
push @identical, $tag2;
- delete( $lines->{$tag2}[$level] );
} else {
push @different, $tag2;
}
}
} else {
- foreach my $dtag (@tags) {
- if ( $dtag != $tag ) {
- push @different, $dtag;
- }
- }
-
+ @different = @tags;
}
# Move $endlevel on as far as we can...
@@ -1987,10 +1980,14 @@
my %this;
$this{txt} = $lines->{$tag}[$l];
- @{ $this{vps} } = ( $tag, @identical );
-
+
+ # @{ $this{vps} } = ( $tag, @identical );
+
+ # The plus two here is one for $tag and one to convert
+ # from array idx to number of entries.
+ $this{vpcount} = $#identical + 2;
$this{vpspec} =
- rng_convert_to_user( rng_create_from_array( @{ $this{vps} } ) );
+ rng_convert_to_user( rng_create_from_array( ( $tag, @identical )
) );
if ( defined $prev ) {
push @{ $prev->{children} }, \%this;
@@ -2008,7 +2005,7 @@
unshift @identical, $tag;
}
- $prev->{children} = make_tree( $endlevel + 1, $lines, @identical );
+ $prev->{children} = _make_tree( $endlevel + 1, $lines, @identical
);
}
debug_log(
@@ -2018,14 +2015,18 @@
);
if (@different) {
- my $new = make_tree( $level, $lines, @different );
- foreach my $n ( @{$new} ) {
- push @peers, $n;
- }
+ my $new = _make_tree( $level, $lines, @different );
+ push @peers, ( @{$new} );
}
return \@peers;
}
+
+# Convert the rank output into a tree based form suitable for use with
show_tree.
+sub make_tree {
+ my ($lines) = @_;
+ return _make_tree( 0, $lines, ( sort { $a <=> $b } ( keys %$lines ) )
);
+}
# Takes a ref to a array of hashes...
sub _show_tree {
@@ -2033,16 +2034,17 @@
my ( $ref, $parent, $indent ) = @_;
my $ret = "";
- my @peers = sort { $a->{vps}[0] <=> $b->{vps}[0] } ( @{$ref} );
-
+
+ # Don't need to sort the peers here because make_tree ensures
+ # the are sorted.
+ # my @peers = sort { $a->{vps}[0] <=> $b->{vps}[0] } ( @{$ref} );
+
+ my @peers = @{$ref};
foreach my $peer (@peers) {
- if ( $#peers != 0 or not defined $parent or $parent ne
$peer->{vpspec} )
- {
- my $count = $#{ $peer->{vps} } + 1;
- my $i_level = "$peer->{vpspec} ($count processes)";
+ if ( $#peers != 0 or $parent ne $peer->{vpspec} ) {
$ret .= "$indent-----------------\n";
- $ret .= "$indent$i_level\n";
+ $ret .= "$indent$peer->{vpspec} ($peer->{vpcount}
processes)\n";
$ret .= "$indent-----------------\n";
}
@@ -2058,7 +2060,7 @@
sub show_tree {
my $ref = shift;
debug_log( 'tree', $ref, 'Complete tree' );
- return _show_tree( $ref, undef, "" );
+ return _show_tree( $ref, "no-parent", "" );
}
###############################################################################
@@ -3073,8 +3075,7 @@
#}
if ($tree) {
- print show_tree(
- make_tree( 0, $lines, ( sort { $a <=> $b } ( keys %$lines ) )
) );
+ print show_tree( make_tree($lines) );
} elsif ($compress) {
foreach my $tag ( sort { $a <=> $b } ( keys %$lines ) ) {
next if ( !defined( $lines->{$tag} ) );
@@ -3165,9 +3166,7 @@
}
if ( $output eq 'tree' ) {
- print show_tree(
- make_tree( 0, $lines, ( sort { $a <=> $b } ( keys %$lines ) )
) );
-
+ print show_tree( make_tree($lines) );
} elsif ( $output eq 'compress' ) {
foreach my $tag ( sort { $a <=> $b } ( keys %$lines ) ) {
More information about the padb-devel
mailing list