00001 /* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 00002 // $Id: module.h,v 1.2 2000/07/24 00:33:33 brm Exp $ 00003 00004 #ifndef J2S_UTILS__MODULE_H 00005 #define J2S_UTILS__MODULE_H 00006 00007 #include "suifkernel/suifkernel_forwarders.h" 00008 #include "suifkernel/module.h" 00009 #include "suifpasses/passes.h" 00010 00019 class j2s_Program : public Module { 00020 protected: 00021 char* _usage_str; 00022 00024 String _class_file_name; 00025 00026 public: 00027 // Flags 00028 String _classnames_file; 00029 00031 OptionSelection* _opt_flags; 00032 00033 j2s_Program (SuifEnv* suif_env, const LString& moduleName); 00034 virtual ~j2s_Program() { }; 00035 00036 virtual void set_usage_str(char* str) { _usage_str= str; } 00037 virtual void usage_info(); 00038 00039 virtual Module* clone() const { return (Module*) this; } 00040 00041 virtual void initialize(); 00042 virtual bool parse_command_line( TokenStream* command_line_stream ); 00043 virtual void execute() { }; 00044 }; 00045 00046 00054 class j2s_FrontEndPass : public FrontendPass { 00055 protected: 00056 static String _dir_separator; 00057 00059 String _class_file_name; 00060 00062 String _outfile_name; 00063 00064 public: 00065 // Flags 00066 String _classnames_file; 00067 String _output_dir; 00068 bool _output_to_classfile_dir; 00069 bool _print_suif; 00070 bool _init_fsb; 00071 bool _help; 00072 00074 OptionSelection* _opt_flags; 00075 00076 public: 00077 j2s_FrontEndPass(SuifEnv *env, const LString &name) 00078 : FrontendPass(env, name){ } 00079 virtual ~j2s_FrontEndPass(void) { } 00080 00082 virtual String class_file_name(); 00083 00085 virtual String outfile_name(); 00086 00089 virtual String default_outfile_name() = 0; 00090 00092 static String default_file_suffix(); 00093 00096 virtual String file_suffix(); 00097 00098 virtual void initialize() = 0; 00099 virtual bool parse_command_line(TokenStream *command_line_stream); 00100 00102 virtual FileSetBlock *build_file_set_block() = 0; 00103 }; 00104 00105 #endif /* J2S_UTILS__MODULE_H */