/* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
// $Id: module.h,v 1.2 2000/07/24 00:33:33 brm Exp $
#ifndef J2S_UTILS__MODULE_H
#define J2S_UTILS__MODULE_H
#include "suifkernel/suifkernel_forwarders.h"
#include "suifkernel/module.h"
#include "suifpasses/passes.h"
class j2s_Program : public Module {
protected:
char* _usage_str;
/// Java class file name given at command line
String _class_file_name;
public:
// Flags
String _classnames_file;
/// Add optional arguments here
OptionSelection* _opt_flags;
j2s_Program (SuifEnv* suif_env, const LString& moduleName);
virtual ~j2s_Program() { };
virtual void set_usage_str(char* str) { _usage_str= str; }
virtual void usage_info();
virtual Module* clone() const { return (Module*) this; }
virtual void initialize();
virtual bool parse_command_line( TokenStream* command_line_stream );
virtual void execute() { };
};
class j2s_FrontEndPass : public FrontendPass {
protected:
static String _dir_separator;
/// Java class file name given at command line
String _class_file_name;
/// Name of output file
String _outfile_name;
public:
// Flags
String _classnames_file;
String _output_dir;
bool _output_to_classfile_dir;
bool _print_suif;
bool _init_fsb;
bool _help;
/// Add optional arguments here
OptionSelection* _opt_flags;
public:
j2s_FrontEndPass(SuifEnv *env, const LString &name)
: FrontendPass(env, name){ }
virtual ~j2s_FrontEndPass(void) { }
/// Name of the Java class file
virtual String class_file_name();
/// Name for the output file (with suffix).
virtual String outfile_name();
virtual String default_outfile_name() = 0;
/// Returns default file suffix for the output file.
static String default_file_suffix();
virtual String file_suffix();
virtual void initialize() = 0;
virtual bool parse_command_line(TokenStream *command_line_stream);
/// This method will be called by execute() of FrontendPass
virtual FileSetBlock *build_file_set_block() = 0;
};
#endif /* J2S_UTILS__MODULE_H */