Program Listing for File DFAnalysis.h#
↰ Return to documentation for file (src/midend/programAnalysis/defUseAnalysis/DFAnalysis.h)
/******************************************
* Category: DFA
* Dataflow Analysis declaration
* created by tps in Feb 2007
*****************************************/
#ifndef __DFA_HXX_LOADED__
#define __DFA_HXX_LOADED__
#include <string>
class DFAnalysis
{
public:
DFAnalysis() {};
virtual ~DFAnalysis() {};
virtual int run() = 0;
virtual int run(bool debug) = 0;
// request information from the DFA
virtual std::vector < std::pair <SgInitializedName* , SgNode*> > getDefMultiMapFor(SgNode* node)=0;
virtual std::vector < std::pair <SgInitializedName* , SgNode*> > getUseMultiMapFor(SgNode* node)=0;
virtual std::vector < SgNode* > getDefFor(SgNode* node, SgInitializedName* initName)=0;
virtual std::vector < SgNode* > getUseFor(SgNode* node, SgInitializedName* initName)=0;
virtual bool isNodeGlobalVariable(SgInitializedName* node)=0;
// used for testing and visualization
virtual void printDefMap() = 0;
virtual void printUseMap() = 0;
virtual int getDefSize()=0;
virtual int getUseSize()=0;
virtual int getIntForSgNode(SgNode* node)=0;
virtual void dfaToDOT()=0;
virtual std::map< SgNode* , std::vector < std::pair <SgInitializedName* , SgNode*> > > getDefMap()=0;
virtual std::map< SgNode* , std::vector < std::pair <SgInitializedName* , SgNode*> > > getUseMap()=0;
virtual void setMaps(std::map< SgNode* , std::vector < std::pair <SgInitializedName* , SgNode*> > > def,
std::map< SgNode* , std::vector < std::pair <SgInitializedName* , SgNode*> > > use)=0;
};
#endif