##=== TEST.debug.report - Report description for SAFECode ----*- perl -*---===##
#
# This file defines a report to be generated for the debugging tool version of
# SAFECode.
#
##===----------------------------------------------------------------------===##

# Sort by program name
$SortCol = 0;
$TrimRepeatedPrefix = 1;

# FormatTime - Convert a time from 1m23.45 into 83.45
sub FormatTime {
  my $Time = shift;
  if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) {
    return sprintf("%7.3f", $1*60.0+$2);
  }

  return sprintf("%6.2f", $Time);
}


sub RuntimePercent {
  my ($Cols, $Col) = @_;
  if ($Cols->[$Col-1] ne "*" and $Cols->[4] ne "*" and
      $Cols->[4] != "0") {
    return sprintf "%7.2f", 100*$Cols->[$Col-1]/$Cols->[4];
  } else {
    return "n/a";
  }
}

@LatexColumns = (1, 5, 8, 12, 9, 13, 14, 15, 2, 16);

my $FREEBENCH = 'MultiSource/Benchmarks/FreeBench';
my $PTRDIST   = 'MultiSource/Benchmarks/Ptrdist';

# These are the columns for the report.  The first entry is the header for the
# column, the second is the regex to use to match the value.  Empty list create
# seperators, and closures may be put in for custom processing.
(
# Name
 ["Name:" , '\'([^\']+)\' Program'],
 ["LOC"   , 'LOC:\s*([0-9]+)'],
 [],
# Times
 ["GCC",           'GCC-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC",            'CBE-RUN-TIME-NORMAL: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC + Multi-PA", 'CBE-RUN-TIME-SAFECODE: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC + BB",       'CBE-RUN-TIME-BB: user\s*([.0-9m:]+)', \&FormatTime],
# ["NumPools",      '([0-9]+).*Number of pools allocated'],
# ["Typesafe",      '([0-9]+).*Number of typesafe pools'],
# ["BumpPtr",       '([0-9]+).*Number of bump pointer pools'],
# ["PFE",           '([0-9]+).*Number of poolfree.s elided'],
# ["NumArgs",       '([0-9]+).*Number of function arguments added'],
# ["MaxArgs",       '([0-9]+).*Maximum function arguments added'],
# ["Nonprofit",     '([0-9]+).*Number of DSNodes not profitable'],
 []
);

