|
OpenADFortTk (basic)
|
00001 #ifndef ScalarizedRef_H 00002 #define ScalarizedRef_H 00003 00004 #include "Open64IRInterface/Open64BasicTypes.h" 00005 00006 namespace fortTkSupport { 00007 00013 class ScalarizedRef { 00014 00015 public: 00019 ScalarizedRef(WN* const aWNp); 00020 00021 ScalarizedRef(WN* const aWNp, 00022 const std::string& aPostFix); 00023 00024 virtual ~ScalarizedRef(); 00025 00026 const std::string& getName() const; 00027 00028 WN* getWN() const; 00029 00030 unsigned int getId() const; 00031 00032 void dump(std::ostream& o) const; 00033 00034 void ddump() const; 00035 00041 static bool isRefTranslatableToXAIF(const WN* wn); 00042 00046 static bool isRefSimple(const WN* wn); 00047 static bool isRefSimpleScalar(const WN* wn); 00048 static bool isRefSimpleArrayElem(const WN* wn); 00049 static bool isRefSimpleArray(const WN* wn); 00050 static bool isRefScalarizable(const WN* wn); 00051 static bool isRefScalar(TY_IDX baseobj_ty, 00052 TY_IDX refobj_ty); 00053 00054 private: 00055 00059 ScalarizedRef(const ScalarizedRef& x); 00060 00064 ScalarizedRef& operator=(const ScalarizedRef& x); 00065 00066 void Ctor(WN* wn, const char* x); 00067 00068 unsigned int myId; 00069 00070 std::string myName; 00071 00075 WN* myWNp; 00076 00080 static unsigned int ourNextId; 00081 00082 static const std::string ourPrefix; 00083 00084 }; 00085 00086 } 00087 00088 #endif