00001 #ifndef OA_AffineExpr_H 00002 #define OA_AffineExpr_H 00003 00004 #include <map> 00005 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00006 #include <OpenAnalysis/Location/NamedLoc.hpp> 00007 #include <OpenAnalysis/OABase/Annotation.hpp> 00008 #include <OpenAnalysis/Utils/GenOutputTool.hpp> 00009 using namespace std; 00010 00011 namespace OA { 00012 namespace AffineExpr { 00013 00024 class AffineExprAbstraction : public virtual Annotation { 00025 public: 00026 AffineExprAbstraction(); 00027 void setOffset(int offset) { mOffset = offset; } 00028 void addTerm(OA_ptr<NamedLoc> var, int value); 00029 00030 // - [output methods] - (derived from Annotation) 00031 virtual void output(IRHandlesIRInterface &ir); 00032 00033 private: 00034 OUTPUT 00035 GENOUT map<OA_ptr<NamedLoc>, int> mCoefficients; 00036 GENOUT int mOffset; 00037 }; 00038 00039 } } // end namespaces 00040 00041 #endif 00042
1.6.1