/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Author: pgess <v.melnychenko@xreate.org>
 * Created on: Jan, 2020
*/

#ifndef XREATE_IPASS_H
#define XREATE_IPASS_H

namespace xreate{
class PassManager;

/** \brief Interface for all passes to inherit. \ref xreate::PassManager holds a collection of passes to execute */
class IPass{
public:
  IPass(PassManager *manager);

  virtual ~IPass(){}

  /** \brief Executes pass */
  virtual void run() = 0;

  /** \brief Finalizes pass. Empty by default*/
  virtual void finish();

  PassManager *man;
};
}

#endif //XREATE_IPASS_H
