00001 #ifndef MODULE_H_ 00002 #define MODULE_H_ 00003 00004 #include "variable.h" 00005 #include<vector> 00006 #include<string> 00007 #include<iostream> 00008 #include<fstream> 00009 using namespace std; 00010 00011 class Parameter 00012 { 00013 public: 00014 string name; 00015 string type; 00016 string obj; 00017 00018 Parameter(istream &in); 00019 virtual ~Parameter(); 00020 }; 00021 00022 class Module 00023 { 00024 private: 00025 void extractNameAndLib(const string &name); 00026 public: 00027 string name; 00028 string lib; 00029 vector<Parameter> params; 00030 00031 Module(istream &in); 00032 void generate_cpp_input(ostream &outfile) const; 00033 virtual ~Module(); 00034 }; 00035 00036 class ConditionModule: public Module 00037 { 00038 public: 00039 Variable *var; 00040 00041 ConditionModule(istream &in, const vector<Variable*> &variables); 00042 void generate_cpp_input(ostream &outfile) const; 00043 }; 00044 00045 class EffectModule: public Module 00046 { 00047 public: 00048 string name; 00049 vector<Variable*> writtenVars; 00050 00051 EffectModule(istream &in, const vector<Variable*> &variables); 00052 void generate_cpp_input(ostream &outfile) const; 00053 }; 00054 00055 class Translate 00056 { 00057 public: 00058 string name; 00059 vector<string> params; 00060 Variable *var; 00061 Translate(istream &in, vector<Variable*> variables); 00062 void generate_cpp_input(ostream &outfile) const; 00063 virtual ~Translate(); 00064 }; 00065 00066 class TranslatePredicate: public Translate 00067 { 00068 public: 00069 int value; 00070 TranslatePredicate(istream &in, vector<Variable*> variables); 00071 void generate_cpp_input(ostream &outfile) const; 00072 }; 00073 00074 class TranslateFunction: public Translate 00075 { 00076 public: 00077 TranslateFunction(istream &in, vector<Variable*> variables); 00078 void generate_cpp_input(ostream &outfile) const; 00079 }; 00080 00081 #endif /* MODULE_H_ */