00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024 #ifndef SHSTATEMENT_HPP
00025 #define SHSTATEMENT_HPP
00026
00027 #include <iosfwd>
00028 #include <set>
00029 #include <list>
00030 #include "ShOperation.hpp"
00031 #include "ShDllExport.hpp"
00032 #include "ShInfo.hpp"
00033 #include "ShVariable.hpp"
00034
00035 namespace SH {
00036
00037
00046 class
00047 SH_DLLEXPORT ShStatement: public ShInfoHolder {
00048 public:
00052 ShStatement(ShOperation op);
00053 ShStatement(ShVariable dest, ShOperation op);
00054 ShStatement(ShVariable dest, ShOperation op, ShVariable src);
00055 ShStatement(ShVariable dest, ShVariable src0, ShOperation op, ShVariable src1);
00056 ShStatement(ShVariable dest, ShOperation op, ShVariable src0, ShVariable src1, ShVariable src2);
00057
00058
00059 ShVariable dest;
00060
00061 typedef std::vector<ShVariable> ShVariableVec;
00062
00063
00064 ShVariableVec src;
00065
00066
00067 ShOperation op;
00068
00069 bool marked;
00070
00071 friend SH_DLLEXPORT std::ostream& operator<<(std::ostream& out, const SH::ShStatement& stmt);
00072
00073 private:
00074 static std::ostream& dumpVar(std::ostream &out, const ShVariable& var);
00075 };
00076
00077 }
00078
00079 #endif