#include <astl_binary.h>

// send states, transitions and final states counts to standard output

template <class DFA>
void statistics(DFA &A, const string &filename)
{
  load_dfa(A, filename);
  DFA_stats s;
  clone(s, dfirstmarkc(forwardc(A)));
  cout << "Q:" << s.state_count() << " T:" << s.trans_count() << " F:" <<
    s.final_count() << endl;
  exit(0);
}

int main(int argc, char **argv)
{
  usage use(argv[0]);
  use.push_back("[dfa_file]");
  use.push_back("send states and transitions counts to standard output");
  use.check(argc, argv, 0, 1);

  if (use[0] == "matrix") {
    DFA_matrix<plain> A;
    statistics(A, use[1]);
  }
  if (use[0] == "map") {
    DFA_map<plain> A;
    statistics(A, use[1]);
  }
  if (use[0] == "bin") {
    DFA_bin<plain> A;
    statistics(A, use[1]);
  }
  if (use[0] == "mtf") {
    DFA_mtf<plain> A;
    statistics(A, use[1]);
  }
  if (use[0] == "tr") {
    DFA_tr<plain> A;
    statistics(A, use[1]);
  }
  if (use[0] == "hash") {
    DFA_hash<plain> A;
    statistics(A, use[1]);
  }
  exit(1);
}
  



