00001 #ifndef SUIFPASSES__DRIVERS_H 00002 #define SUIFPASSES__DRIVERS_H 00003 00004 #include "suifkernel/module.h" 00005 00006 // executes a series of Modules whose names 00007 // are passed to it in the command_line_stream 00008 class Driver : public Module { 00009 public: 00010 Driver( SuifEnv* suif_env ); 00011 virtual ~Driver(); 00012 00013 virtual void initialize(); 00014 00015 virtual Module* clone() const; 00016 00017 virtual bool parse_command_line( TokenStream* command_line_stream ); 00018 00019 virtual void execute(); 00020 00021 virtual bool delete_me() const; 00022 00023 static const LString get_class_name(); 00024 00025 protected: 00026 OptionSelection* _arguments; 00027 OptionLiteral* _f; 00028 OptionLiteral* _e; 00029 OptionString* _file; 00030 OptionList* _f_file; 00031 00032 OptionString* _istring; 00033 OptionList* _i_string; 00034 00035 OptionStream* _stream; 00036 istream* _istream; 00037 sf_owned TokenStream* _token_stream; 00038 String _file_name; 00039 String _input_string; 00040 00041 bool _isInteractive; 00042 }; 00043 00044 00045 // executes a series of PipelinablePasses whose 00046 // names are passed to it in the command_line_stream 00047 // The PipelinablePasses are executed in a pipelined 00048 // fashion. 00049 class Pipeliner : public Driver { 00050 public: 00051 Pipeliner( SuifEnv* suif_env ); 00052 virtual ~Pipeliner(); 00053 00054 virtual Module* clone() const; 00055 00056 virtual void execute(); 00057 00058 static const LString get_class_name(); 00059 }; 00060 00061 00062 #endif 00063