#ifndef SUIFPASSES__PASSES_H #define SUIFPASSES__PASSES_H #include "suifkernel/module.h" #include "suifkernel/suifkernel_forwarders.h" // ABSTRACT CLASS class Pass : public Module { protected: Pass( SuifEnv* suif_env, const LString &name ); virtual ~Pass(); public: virtual void initialize(); virtual void execute(); virtual Module* clone() const = 0; virtual void do_file_set_block( FileSetBlock* file_set_block ) = 0; }; class PipelinablePass : public Pass { public: PipelinablePass( SuifEnv* suif_env, const LString &name ); virtual ~PipelinablePass() = 0; virtual void initialize(); virtual void execute(); virtual Module* clone() const = 0; virtual void do_file_set_block( FileSetBlock* file_set_block ); virtual void do_file_block( FileBlock* file_block ); virtual void do_procedure_definition( ProcedureDefinition* proc_def ); virtual void do_variable_definition( VariableDefinition* var_def ); virtual void finalize(){}; }; // ABSTRACT CLASS class FrontendPass : public Module { protected: FrontendPass( SuifEnv* suif_env, const LString &name ); virtual ~FrontendPass(); public: virtual void initialize(); virtual void execute(); // your stuff goes here virtual FileSetBlock *build_file_set_block() = 0; }; #endif
written by Dimitri van Heesch, © 1997-1999