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