sub countUniqueDescendants()

in maxas/MaxAs/MaxAs.pm [1282:1308]


sub countUniqueDescendants
{
    my ($node, $edges) = @_;

    #print "P:$node->{inst}\n";

    if (my $children = $node->{children})
    {
        foreach my $child (grep $_->[1], @$children) # skip WaR deps and traversed edges
        {
            next if $edges->{"$node->{lineNum}^$child->[0]{lineNum}"}++;

            $node->{deps}{$_}++ foreach countUniqueDescendants($child->[0], $edges);
        }
        foreach my $child (grep !$_->[1], @$children) # WaR deps
        {
            next if $edges->{"$node->{lineNum}^$child->[0]{lineNum}"}++;

            1 foreach countUniqueDescendants($child->[0], $edges);
        }
    }
    else
    {
        return $node->{lineNum};
    }
    return ($node->{lineNum}, keys %{$node->{deps}});
}