/*******************************************************************\

Module:

Author: Daniel Kroening, kroening@cs.cmu.edu

\*******************************************************************/

#ifndef CPROVER_TYPECHECK_H
#define CPROVER_TYPECHECK_H

#include "error_handler.h"
#include "expr.h"

class typecheckt:public error_handlert
{
public:
  typecheckt(message_handlert &_message_handler):
    error_handlert(_message_handler) { }
  virtual ~typecheckt() { }
  
protected:
  // main function -- overload this one
  virtual void typecheck()=0;

public:
  // call that one
  virtual bool typecheck_main();
};

#endif
