##=== TEST.full.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],
# [],
 ["LLVM",        'LLVM-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC",          'SC-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
# ["SC+OOB",    'OOB-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
# [],
 ["SC+APA",     'SCPA-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC-TS",      'SCNOTS-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC-EC",      'SCNOEC-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC-LS",      'SCNOLS-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
 [],
 ["SC-GEP",     'SCNOGEP-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
# [],
# ["SC+DP",     'SCDP-RUN-TIME: user\s*([.0-9m:]+)', \&FormatTime],
# [],
# ["SC+DEBUG",  'SCDEBUG-RUN-TIME: 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'],
 []
);

