00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _LATEQ_H
00025 #define _LATEQ_H
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 using namespace std;
00049
00050 #include <string>
00051 #include <list>
00052 #include <vector>
00053 #include <map>
00054
00055
00056 class Lateq {
00057
00058 public:
00059
00060 Lateq (const int& numInputs, const int& numOutputs)
00061 : fNumInputs(numInputs), fNumOutputs(numOutputs)
00062 {}
00063
00064 ~Lateq() {}
00065
00067 void addInputSigFormula (const string& str) { fInputSigsFormulas.push_back(str); }
00068 void addConstSigFormula (const string& str) { fConstSigsFormulas.push_back(str); }
00069 void addParamSigFormula (const string& str) { fParamSigsFormulas.push_back(str); }
00070 void addStoreSigFormula (const string& str) { fStoreSigsFormulas.push_back(str); }
00071 void addRecurSigFormula (const string& str) { fRecurSigsFormulas.push_back(str); }
00072 void addRDTblSigFormula (const string& str) { fRDTblSigsFormulas.push_back(str); }
00073 void addRWTblSigFormula (const string& str) { fRWTblSigsFormulas.push_back(str); }
00074 void addSelectSigFormula (const string& str) { fSelectSigsFormulas.push_back(str); }
00075 void addPrefixSigFormula (const string& str) { fPrefixSigsFormulas.push_back(str); }
00076 void addOutputSigFormula (const string& str) { fOutputSigsFormulas.push_back(str); }
00077 void addUISigFormula (const string& path, const string& str) { fUISigsFormulas.insert(make_pair(path, str)); };
00078
00080 void println(ostream& docout);
00081
00082 int inputs() const { return fNumInputs; }
00083 int outputs() const { return fNumOutputs; }
00084
00085
00086 private:
00087
00088 const int fNumInputs;
00089 const int fNumOutputs;
00090
00092 list<string> fInputSigsFormulas;
00093 list<string> fConstSigsFormulas;
00094 list<string> fParamSigsFormulas;
00095 list<string> fStoreSigsFormulas;
00096 list<string> fRecurSigsFormulas;
00097 list<string> fRDTblSigsFormulas;
00098 list<string> fRWTblSigsFormulas;
00099 list<string> fSelectSigsFormulas;
00100 list<string> fPrefixSigsFormulas;
00101 list<string> fOutputSigsFormulas;
00102 multimap<string,string> fUISigsFormulas;
00103
00104 string makeItemTitle(const unsigned int formulasListSize, const string& titleName);
00105 string makeSignamesList(const list<string>& formulasList, const string& ending);
00106 string makeSignamesList(const vector<list<string> >& formulasListsVector, const string& ending);
00107 string getSigName(const string& s);
00108 string makeSigDomain(const list<string>& formulasList);
00109 string getUISigName(const string& s);
00110 char getUISigType(const string& s);
00111 vector<list<string> > makeUISignamesVector(const multimap<string,string>& field);
00112
00113 void printOneLine (const string& section, ostream& docout);
00114 void printHierarchy (const string& section, multimap<string,string>& field, ostream& docout);
00115 void printDGroup (const string& section, list<string>& field, ostream& docout);
00116 void printMath (const string& section, list<string>& field, ostream& docout);
00117
00118 bool hasNotOnlyEmptyKeys(multimap<string,string>& mm);
00119 void tab(int n, ostream& docout) const;
00120 };
00121
00122 void initDocMath();
00123
00124
00125 #endif