OpenADFortTk (basic)
src/lib/support/ScalarizedRef.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines