MemRefExpr.hpp

Go to the documentation of this file.
00001 
00015 #ifndef MemRefExpr_H
00016 #define MemRefExpr_H
00017 
00018 #include <iostream>
00019 #include <cassert>
00020 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00021 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00022 #include <OpenAnalysis/OABase/Annotation.hpp>
00023 
00024 namespace OA {
00025 
00026 class MemRefExpr;
00027 class IdxExprAccess;
00028 class MemRefExpr;
00029 class NamedRef;
00030 class UnnamedRef;
00031 class UnknownRef;
00032 class RefOp;
00033 class Deref;
00034 class SubSetRef;
00035 class IdxAccess;
00036 class IdxExprAccess;
00037 class FieldAccess;
00038 
00039 class MemRefExprVisitor;
00040 
00041 // ----- Iterator classes -----
00042 template<class T>
00043 class MREIteratorClass {
00044   public:
00045     MREIteratorClass() { }
00046     virtual ~MREIteratorClass() { }
00047 
00048     // Returns the current item.
00049     virtual OA_ptr<T> current() const = 0;
00050 
00051     // False when all items are exhausted.;
00052     virtual bool isValid() const = 0;
00053 
00054     virtual void operator++() = 0;
00055     void operator++(int) { ++*this; } ;
00056 
00057     virtual void reset() = 0;
00058 };
00059 
00060 typedef MREIteratorClass<MemRefExpr>    MemRefExprIterator;
00061 typedef MREIteratorClass<NamedRef>      NamedRefIterator;
00062 typedef MREIteratorClass<UnnamedRef>    UnnamedRefIterator;
00063 typedef MREIteratorClass<UnknownRef>    UnknownRefIterator;
00064 typedef MREIteratorClass<RefOp>         RefOpIterator;
00065 typedef MREIteratorClass<Deref>         DerefIterator;
00066 typedef MREIteratorClass<SubSetRef>     SubSetRefIterator;
00067 typedef MREIteratorClass<IdxAccess>     IdxAccessIterator;
00068 typedef MREIteratorClass<IdxExprAccess> IdxExprAccessIterator;
00069 typedef MREIteratorClass<FieldAccess>   FieldAccessIterator;
00070 
00071 // ------ MemRefExpr classes -----
00072 
00076 class MemRefExpr : public Annotation {
00077   public:
00078     typedef enum {
00079       USE,     // mem ref specifies where to find source location for use
00080       DEF,     // mem ref specifies where to put result of assign
00081       USEDEF,  // mem ref that specifies a location that will be used first
00082                // and then defined (eg. i++)
00083       DEFUSE   // mem ref that specifies a location that will be defined first
00084                // and then used (eg. i++)
00085     } MemRefType;
00086 
00087     MemRefExpr(MemRefType mrType) : mMemRefType(mrType) {}
00088 
00090     MemRefExpr(MemRefExpr &mre) : mMemRefType(mre.mMemRefType) {}
00091 
00092     virtual ~MemRefExpr() {}
00093 
00094     virtual void acceptVisitor(MemRefExprVisitor& pVisitor) = 0;
00095 
00096     // return a ptr to a copy of self
00097     virtual OA_ptr<MemRefExpr> clone() = 0;
00098 
00099     //*****************************************************************
00100     // Subclass type methods 
00101     //*****************************************************************
00102     virtual bool isaNamed() { return false; }
00103     virtual bool isaUnnamed() { return false; }
00104     virtual bool isaUnknown() { return false; }
00105     virtual bool isaRefOp() { return false; }
00106     
00107     virtual bool isaDeref() { return false; }
00108     virtual bool isaAddressOf() { return false; }
00109 
00110     virtual bool isaSubSetRef() { return false; }
00111     virtual bool isaIdxAccess() { return false; }
00112     virtual bool isaIdxExprAccess() { return false; }
00113     virtual bool isaFieldAccess() { return false; }
00114 
00115     //*****************************************************************
00116     // Info methods 
00117     //*****************************************************************
00118     
00120     MemRefType getMRType() { return mMemRefType; }
00121 
00123     bool isDef() { return (mMemRefType==DEF 
00124                            || mMemRefType == USEDEF || mMemRefType == DEFUSE); }
00125 
00127     bool isUse() { return (mMemRefType==USE 
00128                           || mMemRefType == USEDEF || mMemRefType == DEFUSE); }
00129 
00131     bool isDefUse() { return (mMemRefType==DEFUSE); }
00132 
00134     bool isUseDef() { return (mMemRefType==USEDEF); }
00135 
00136     //*****************************************************************
00137     // Construction methods 
00138     //*****************************************************************
00139 
00141     void setMemRefType(MemRefExpr::MemRefType mrType) { mMemRefType = mrType; }
00142 
00143     //*****************************************************************
00144     // Relationship methods 
00145     //*****************************************************************
00146 
00148     virtual bool operator<(MemRefExpr & other);
00149 
00152     virtual bool operator==(MemRefExpr& other);
00153     
00156     bool operator!=(MemRefExpr& other) { return ! ((*this)==other); }
00157     
00158     //*****************************************************************
00159     // Annotation Interface
00160     //*****************************************************************
00161     void output(IRHandlesIRInterface& ir); 
00162 
00163     // helper functions for output
00164     virtual std::string typeString() { return "MemRefExpr"; }
00165     std::string toString(MemRefType);
00166 
00167     //*****************************************************************
00168     // Debugging methods 
00169     //*****************************************************************
00170     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00171     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00172     virtual void dump(std::ostream& os);
00173 
00174     virtual int getOrder() { assert(0); return sOrder; }
00175 
00176 private:
00177     static const int sOrder = -100;
00178     MemRefType mMemRefType;
00179 };
00180 
00185 class NamedRef: public MemRefExpr {
00186   public:
00187 
00188     NamedRef(MemRefType mrType, SymHandle sh)
00189         : MemRefExpr(mrType), mSymHandle(sh) { }
00190 
00192     NamedRef(NamedRef &mre) : MemRefExpr(mre), mSymHandle(mre.mSymHandle) { }
00193     
00194     NamedRef(MemRefExpr &mre, SymHandle sh) : MemRefExpr(mre), mSymHandle(sh) {}
00195 
00196     ~NamedRef() { }
00197 
00198     void acceptVisitor(MemRefExprVisitor& pVisitor);
00199 
00201     OA_ptr<MemRefExpr> clone();
00202 
00203     //*****************************************************************
00204     // Subclass type methods 
00205     //*****************************************************************
00206     bool isaNamed() { return true; }
00207     
00208     //*****************************************************************
00209     // Info methods 
00210     //*****************************************************************
00211     SymHandle getSymHandle() { return mSymHandle; }
00212     virtual std::string typeString() { return "NamedRef"; }
00213     
00214     //*****************************************************************
00215     // Relationship methods 
00216     //*****************************************************************
00217 
00218     bool operator<(MemRefExpr & other);
00219 
00222     bool operator==(MemRefExpr& other);
00223 
00224     //*****************************************************************
00225     // Annotation Interface
00226     //*****************************************************************
00227     void output(IRHandlesIRInterface& ir); 
00228 
00229     //*****************************************************************
00230     // Debugging methods 
00231     //*****************************************************************
00232     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00233     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00234     virtual void dump(std::ostream& os);
00235 
00236     virtual int getOrder() { return sOrder; }
00237 
00238   private:
00239     static const int sOrder = 100;
00240     SymHandle mSymHandle;
00241 };
00242 
00247 class UnnamedRef: public MemRefExpr {
00248   public:
00249 
00250     UnnamedRef(MemRefType mrType, ExprHandle sh, ProcHandle proc)
00251         : MemRefExpr(mrType), mExprHandle(sh), mLocal(true), mProcHandle(proc) { }
00252 
00253 
00254     UnnamedRef(MemRefType mrType, ExprHandle sh)
00255         : MemRefExpr(mrType), mExprHandle(sh), mLocal(false) { }
00256 
00257 
00259     UnnamedRef(UnnamedRef &mre) : MemRefExpr(mre), 
00260                                   mExprHandle(mre.mExprHandle),
00261                                   mLocal(mre.mLocal),
00262                                   mProcHandle(mre.mProcHandle) {}
00263     
00264     UnnamedRef(MemRefExpr &mre, ExprHandle s, ProcHandle p)
00265         : MemRefExpr(mre), mExprHandle(s), mLocal(true), mProcHandle(p) {}
00266 
00267 
00268     UnnamedRef(MemRefExpr &mre, ExprHandle s)
00269         : MemRefExpr(mre), mExprHandle(s), mLocal(false) {}
00270 
00271 
00272     ~UnnamedRef() { }
00273 
00274     void acceptVisitor(MemRefExprVisitor& pVisitor);
00275 
00277     OA_ptr<MemRefExpr> clone();
00278 
00279     //*****************************************************************
00280     // Subclass type methods 
00281     //*****************************************************************
00282     bool isaUnnamed() { return true; }
00283     
00284     //*****************************************************************
00285     // Info methods 
00286     //*****************************************************************
00287     ExprHandle getExprHandle() { return mExprHandle; }
00288 
00289     bool isLocal() { return mLocal; }
00290 
00291     ProcHandle getProcHandle() { return mProcHandle; }
00292     
00293     //*****************************************************************
00294     // Relationship methods 
00295     //*****************************************************************
00296 
00297     bool operator<(MemRefExpr & other);
00298 
00301     bool operator==(MemRefExpr& other);
00302     
00303     //*****************************************************************
00304     // Annotation Interface
00305     //*****************************************************************
00306     void output(IRHandlesIRInterface& ir); 
00307     virtual std::string typeString() { return "UnnamedRef"; }
00308 
00309     //*****************************************************************
00310     // Debugging methods 
00311     //*****************************************************************
00312     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00313     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00314     virtual void dump(std::ostream& os);
00315 
00316     virtual int getOrder() { return sOrder; }
00317 
00318   private:
00319     static const int sOrder = 200;
00320     ExprHandle mExprHandle;
00321     bool mLocal;
00322     ProcHandle mProcHandle;
00323 };
00324 
00330 class UnknownRef: public MemRefExpr {
00331   public:
00332 
00333     UnknownRef(MemRefType mrType)
00334         : MemRefExpr(mrType) { }
00335 
00337     UnknownRef(UnknownRef &mre) : MemRefExpr(mre) {}
00338 
00339     ~UnknownRef() { }
00340 
00341     void acceptVisitor(MemRefExprVisitor& pVisitor);
00342 
00344     OA_ptr<MemRefExpr> clone();
00345 
00346     //*****************************************************************
00347     // Subclass type methods 
00348     //*****************************************************************
00349     bool isaUnknown() { return true; }
00350     
00351     //*****************************************************************
00352     // Relationship methods 
00353     //*****************************************************************
00354 
00355     bool operator<(MemRefExpr & other);
00356 
00359     bool operator==(MemRefExpr& other);
00360     
00361     //*****************************************************************
00362     // Annotation Interface
00363     //*****************************************************************
00364     void output(IRHandlesIRInterface& ir); 
00365     virtual std::string typeString() { return "UnknownRef"; }
00366 
00367     //*****************************************************************
00368     // Debugging methods 
00369     //*****************************************************************
00370     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00371     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00372     virtual void dump(std::ostream& os);
00373 
00374     virtual int getOrder() { return sOrder; }
00375 
00376   private:
00377     static const int sOrder = 100000000;
00378 };
00379 
00380 
00387 class RefOp: public MemRefExpr {
00388   public:
00389 
00390     RefOp( MemRefType mrType, OA_ptr<MemRefExpr> mre)
00391         : MemRefExpr(mrType), mMRE(mre) { }
00392  
00393 
00395     RefOp(RefOp & mre) : MemRefExpr(mre), mMRE(mre.mMRE) { }
00396 
00397     virtual ~RefOp() { }
00398     
00399     //*****************************************************************
00400     // MemRefExpr subclass type methods 
00401     //*****************************************************************
00402     bool isaRefOp() { return true; }
00403 
00404     //*****************************************************************
00405     // Info methods 
00406     //*****************************************************************
00409     SymHandle getBaseSym();
00410 
00411     virtual std::string typeString() { return "RefOp"; }
00412 
00415     OA_ptr<MemRefExpr> getBase();
00416 
00418     OA_ptr<MemRefExpr> getMemRefExpr() { return mMRE; }
00419 
00420     //*****************************************************************
00421     // Relationship methods, will be defined in subclasses 
00422     //*****************************************************************
00423 
00424     //*****************************************************************
00425     // Construction Method
00426     //*****************************************************************
00427     
00429     virtual OA_ptr<MemRefExpr> composeWith(OA_ptr<MemRefExpr> mre) = 0;
00430     
00431     //*****************************************************************
00432     // Annotation Interface
00433     //*****************************************************************
00434     virtual void output(IRHandlesIRInterface& ir); 
00435 
00436 
00437 private:
00438     OA_ptr<MemRefExpr> mMRE;
00439 
00440 };
00441 
00442 
00443 /* AddressOf class: represents if MemRefExpr has AddressTaken*/
00444 class AddressOf: public RefOp { 
00445   public: 
00446 
00447     AddressOf(MemRefType mrType, OA_ptr<MemRefExpr> mre)
00448         : RefOp(mrType, mre) { }
00449   
00451     AddressOf(AddressOf & mre) : RefOp(mre) { } 
00452  
00453     ~AddressOf() { } 
00454 
00455     void acceptVisitor(MemRefExprVisitor& pVisitor);
00456 
00458     OA_ptr<MemRefExpr> clone();
00459 
00460     virtual std::string typeString() { return "AddressOf"; }
00461 
00462     //*****************************************************************
00463     // RefOp subclass type methods
00464     //*****************************************************************
00465     bool isaAddressOf() { return true; }
00466 
00467     //*****************************************************************
00468     // Relationship methods
00469     //*****************************************************************
00470 
00471     bool operator<(MemRefExpr & other);
00472 
00475     bool operator==(MemRefExpr& other);
00476 
00477     //*****************************************************************
00478     // Construction Method
00479     //*****************************************************************
00481     OA_ptr<MemRefExpr> composeWith(OA_ptr<MemRefExpr> mre);
00482 
00483     //*****************************************************************
00484     // Annotation Interface
00485     //*****************************************************************
00486     void output(IRHandlesIRInterface& ir);
00487 
00488     //*****************************************************************
00489     // Debugging methods
00490     //*****************************************************************
00491     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00492     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00493     virtual void dump(std::ostream& os);
00494 
00495     virtual int getOrder() { return sOrder; }
00496 
00497  private: 
00498     static const int sOrder = 350; 
00499 }; 
00500 
00501 
00506 class Deref: public RefOp {
00507   public:
00508 
00509     Deref(MemRefType mrType, OA_ptr<MemRefExpr> mre,
00510           int numDeref)
00511       : RefOp(mrType, mre), mNumDeref(numDeref) { }
00512 
00513     
00514     // default values
00515     Deref(MemRefType mrType, OA_ptr<MemRefExpr> mre)
00516       : RefOp(mrType, mre), mNumDeref(1) { }
00517 
00518     
00520     Deref(Deref &mre) : RefOp(mre), mNumDeref(mre.mNumDeref) {}
00521 
00522     ~Deref() { }
00523 
00524     void acceptVisitor(MemRefExprVisitor& pVisitor);
00525 
00527     OA_ptr<MemRefExpr> clone();
00528 
00529     //*****************************************************************
00530     // RefOp subclass type methods 
00531     //*****************************************************************
00532     bool isaDeref() { return true; }
00533     
00534     //*****************************************************************
00535     // Info methods 
00536     //*****************************************************************
00537     int getNumDerefs() { return mNumDeref; }
00538     virtual std::string typeString() { return "Deref"; }
00539 
00540     //*****************************************************************
00541     // Relationship methods
00542     //*****************************************************************
00543     
00544     bool operator<(MemRefExpr & other);
00545 
00548     bool operator==(MemRefExpr& other);
00549     
00550     //*****************************************************************
00551     // Construction Method
00552     //*****************************************************************
00553     
00555     OA_ptr<MemRefExpr> composeWith(OA_ptr<MemRefExpr> mre);
00556     
00557     //*****************************************************************
00558     // Annotation Interface
00559     //*****************************************************************
00560     void output(IRHandlesIRInterface& ir); 
00561 
00562     //*****************************************************************
00563     // Debugging methods 
00564     //*****************************************************************
00565     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00566     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00567     virtual void dump(std::ostream& os);
00568 
00569     virtual int getOrder() { return sOrder; }
00570 
00571 private:
00572     static const int sOrder = 300;
00573     int mNumDeref;
00574 };
00575 
00583 class SubSetRef: public RefOp {
00584   public:
00585 
00586     SubSetRef( MemRefType mrType, OA_ptr<MemRefExpr> mre)
00587       : RefOp(mrType, mre) {} //{ if (!mre.ptrEqual(0)) assert( ! mre->isaSubSetRef() ); }
00588 
00590     SubSetRef(SubSetRef & mre) : RefOp(mre) { }
00591 
00592     virtual ~SubSetRef() { }
00593 
00594     void acceptVisitor(MemRefExprVisitor& pVisitor);
00595 
00597     OA_ptr<MemRefExpr> clone();
00598 
00599     //*****************************************************************
00600     // RefOp subclass type methods 
00601     //*****************************************************************
00602     virtual bool isaSubSetRef() { return true; }
00603     virtual bool isSubClassOfSubSetRef() { return false; }
00604     
00605     //*****************************************************************
00606     // Relationship methods, will be defined in subclasses
00607     //*****************************************************************
00608     
00609     virtual bool operator<(MemRefExpr & other);
00610 
00613     virtual bool operator==(MemRefExpr& other);
00614     
00615     //*****************************************************************
00616     // Construction Method
00617     //*****************************************************************
00618     
00620     OA_ptr<MemRefExpr> composeWith(OA_ptr<MemRefExpr> mre);
00621  
00622     //*****************************************************************
00623     // Annotation Interface
00624     //*****************************************************************
00625     void output(IRHandlesIRInterface& ir); 
00626     virtual std::string typeString() { return "SubSetRef"; }
00627 
00628     //*****************************************************************
00629     // Debugging methods    
00630     //****************************************************************    
00631     virtual void dump(std::ostream& os, 
00632                        OA_ptr<IRHandlesIRInterface> pIR);  
00633 
00634     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00635     virtual void dump(std::ostream& os);
00636     virtual int getOrder() { return sOrder; }          
00637 
00638 private:
00639     static const int sOrder = 600;
00640 
00641 };
00642 
00643 
00647 class IdxAccess: public SubSetRef {
00648   public:
00649 
00650     IdxAccess(MemRefType mrType, OA_ptr<MemRefExpr> mre, int idx)
00651       : SubSetRef(mrType,mre), mIdx(idx) { }
00652 
00654     IdxAccess(IdxAccess &mre) : SubSetRef(mre), mIdx(mre.mIdx) {}
00655 
00656     ~IdxAccess() { }
00657 
00658     void acceptVisitor(MemRefExprVisitor& pVisitor);
00659 
00661     OA_ptr<MemRefExpr> clone();
00662 
00663     //*****************************************************************
00664     // SubSetRef subclass type methods 
00665     //*****************************************************************
00666     bool isaIdxAccess() { return true; }
00667     bool isSubClassOfSubSetRef() { return true; }
00668     
00669     //*****************************************************************
00670     // Info methods 
00671     //*****************************************************************
00672     int getIdx() { return mIdx; }
00673     virtual std::string typeString() { return "IdxAccess"; }
00674 
00675     //*****************************************************************
00676     // Relationship methods
00677     //*****************************************************************
00678     
00679     bool operator<(MemRefExpr & other);
00680 
00683     bool operator==(MemRefExpr& other);
00684     
00685     //*****************************************************************
00686     // Annotation Interface
00687     //*****************************************************************
00688     void output(IRHandlesIRInterface& ir); 
00689 
00690     //*****************************************************************
00691     // Debugging methods 
00692     //*****************************************************************
00693     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00694     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00695     virtual void dump(std::ostream& os);
00696 
00697     virtual int getOrder() { return sOrder; }
00698 
00699 private:
00700     static const int sOrder = 400;
00701     int mIdx;
00702 };
00703 
00710 class IdxExprAccess : public SubSetRef {
00711   public:
00712 
00713     IdxExprAccess( MemRefType mrType, OA_ptr<MemRefExpr> mre,
00714                    MemRefHandle hExpr)
00715     : SubSetRef( mrType, mre)
00716     {
00717         mhExpr = hExpr;
00718     }
00719 
00721     IdxExprAccess(IdxExprAccess &mre)
00722       : SubSetRef(mre),
00723         mhExpr(mre.mhExpr)
00724     {
00725     }
00726 
00727     ~IdxExprAccess() { }
00728 
00729     virtual void acceptVisitor(MemRefExprVisitor& pVisitor);
00730 
00732     OA_ptr<MemRefExpr> clone();
00733 
00734     //*****************************************************************
00735     // SubSetRef subclass type methods 
00736     //*****************************************************************
00737     bool isaIdxExprAccess() { return true; }
00738     bool isSubClassOfSubSetRef() { return true; }
00739 
00740     //*****************************************************************
00741     // Info methods 
00742     //*****************************************************************
00743     MemRefHandle getExpr() { return mhExpr; }
00744     virtual std::string typeString() { return "IdxExprAccess"; }
00745 
00746     //*****************************************************************
00747     // Relationship methods
00748     //*****************************************************************
00749     bool operator<(MemRefExpr & other);
00750 
00753     bool operator==(MemRefExpr& other);
00754 
00755     //*****************************************************************
00756     // Annotation Interface
00757     //*****************************************************************
00758     void output(IRHandlesIRInterface& ir); 
00759 
00760     //*****************************************************************
00761     // Debugging methods
00762     //*****************************************************************
00763     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00764     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00765     virtual void dump(std::ostream& os);
00766 
00767     virtual int getOrder() { return sOrder; }
00768 
00769   private:
00770     static const int sOrder = 450;
00771     MemRefHandle mhExpr;
00772 };
00773 
00778 class FieldAccess: public SubSetRef {
00779   public:
00780 
00781     FieldAccess( MemRefType mrType,
00782             OA_ptr<MemRefExpr> mre, std::string field)
00783       : SubSetRef(mrType,mre), mFieldName(field) { }
00784 
00785    
00787     FieldAccess(FieldAccess &mre) : SubSetRef(mre), mFieldName(mre.mFieldName) {}
00788 
00789     ~FieldAccess() { }
00790 
00791     void acceptVisitor(MemRefExprVisitor& pVisitor);
00792 
00794     OA_ptr<MemRefExpr> clone();
00795 
00796     //*****************************************************************
00797     // SubSetRef subclass type methods 
00798     //*****************************************************************
00799     bool isaFieldAccess() { return true; }
00800     bool isSubClassOfSubSetRef() { return true; }
00801     
00802     //*****************************************************************
00803     // Info methods 
00804     //*****************************************************************
00805     std::string getFieldName() { return mFieldName; }
00806     virtual std::string typeString() { return "FieldAccess"; }
00807 
00808     //*****************************************************************
00809     // Relationship methods
00810     //*****************************************************************
00811     
00812     bool operator<(MemRefExpr & other);
00813 
00816     bool operator==(MemRefExpr& other);
00817     
00818     //*****************************************************************
00819     // Annotation Interface
00820     //*****************************************************************
00821     void output(IRHandlesIRInterface& ir); 
00822 
00823     //*****************************************************************
00824     // Debugging methods 
00825     //*****************************************************************
00826     virtual void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00827     virtual void dump(std::ostream& os, IRHandlesIRInterface& pIR);
00828     virtual void dump(std::ostream& os);
00829 
00830     virtual int getOrder() { return sOrder; }
00831 
00832 private:
00833     static const int sOrder = 500;
00834     std::string mFieldName;
00835 };
00836 
00837 
00838 } // end of OA namespace
00839 
00840 #endif
00841 

Generated on Sat Oct 31 05:21:24 2009 for OpenAnalysis by  doxygen 1.6.1