package edu.mit.ai.psg.traveler.jevaHooks;

import edu.mit.ai.psg.jeva.*;
import java.io.*;
/** an empty hook to measure the overhead of invoking an eval hook **/
public class EmptyEvalHook extends JevaVisitorBase {
  public EmptyEvalHook() {}
  /** default -- do nothing **/
  public Object visit(IJevaNode node, Object data) { 
    return null; }

  /** Given a class name for a class in classpath, 
      runs its public static void main(...) method with a EmptyEvalHook.
      Jeva will run compiled .class file if it exists, so delete it first.
      @see EvalMethods
  **/
  public static void main(String[] arguments) throws FileNotFoundException {
    if (arguments.length == 0) {
      System.err.println
	("Use: java edu.mit.ai.psg.traveler.jevaHooks.EmptyEvalHook "+
	 "ClassName [args]");
      System.exit(1);
    }
    String className = arguments[0];
    String[] programArguments = new String[arguments.length - 1];
    System.arraycopy(arguments,1, programArguments,0, programArguments.length);

    EvalMethods.setEvalHook(new EmptyEvalHook());
    
    try { // reuse proxy classes
      CompileUnit.setTempRoot(new File("./proxies")); // optional
      Jeva.runClass(className, programArguments);
    }
    catch (ThrowException e) { } // continue on program exceptions
    catch (ParseException e) { System.err.println(e); return; }
    catch (ClassNotFoundException e) { System.err.println(e); return; }
    catch (Throwable e) { e.printStackTrace(); return; }
  }
}

