#!/usr/bin/env php
<?php
require 'TraceParser.php';
require 'StackTraceForSymbol.php';
require 'WhoCallsStackTrace.php';

if (count($argv) < 3) {
  printf("Parses an XT file and prints stack traces for all occurances of the given symbol.

\tUsage: %s symbol file.xt
\n", $argv[0]);
 exit(1);
}

$symbol = $argv[1];
$file = $argv[2];

$collector = new WhoCallsStackTrace($symbol);

$parser = new TraceParser($file);
$parser->register($collector);
$parser->parse();

$report = $collector->getReport();

if (empty($report)) {
  die("No symbols found");
}

usort($report, array($collector, "countComparator"));

foreach ($report as $trace) {
  //printf("%s (called %d time%s)", $trace['trace'], $trace['count'], $trace['count'] == 1 ? '':'s');
  printf("%d\t%{$collector->longest}s\t%s", $trace['count'], $trace['name'], $trace['file']);
  print PHP_EOL;
}
?>