/* * ProcessorBase.h * */ #ifndef PROCESSOR_PROCESSORBASE_H_ #define PROCESSOR_PROCESSORBASE_H_ #include #include #include using namespace std; #include "Tools/ExecutionStats.h" #include "Tools/SwitchableOutput.h" #include "OnlineOptions.h" #include "Math/Integer.h" class ProcessorBase { // Stack stack stacki; ifstream input_file; string input_filename; size_t input_counter; protected: // Optional argument to tape Integer arg; vector arg_stack; vector PC_stack; string get_parameterized_filename(int my_num, int thread_num, const string& prefix); public: ExecutionStats stats; ofstream stdout_redirect_file; ProcessorBase(); void pushi(Integer x) { stacki.push(x); } void popi(Integer& x) { x = stacki.top(); stacki.pop(); } Integer get_arg() const { return arg; } void set_arg(Integer new_arg) { arg=new_arg; } void open_input_file(const string& name); void open_input_file(int my_num, int thread_num, const string& prefix=""); template T get_input(bool interactive, const int* params); template T get_input(istream& is, const string& input_filename, const int* params); void setup_redirection(int my_nu, int thread_num, OnlineOptions& opts, SwitchableOutput& out, bool real = true); }; #endif /* PROCESSOR_PROCESSORBASE_H_ */