Program Listing for File IntraProcDataFlowAnalysis.h

Program Listing for File IntraProcDataFlowAnalysis.h#

Return to documentation for file (src/midend/programAnalysis/VirtualFunctionAnalysis/IntraProcDataFlowAnalysis.h)

/*
 * File:   IntraProcDataFlowAnalyis.h
 * Author: rahman2
 *
 * Created on August 15, 2011, 10:28 AM
 */
#ifndef INTRAPROCDATAFLOWANALYIS_H
#define INTRAPROCDATAFLOWANALYIS_H


template<class Node,class Data>
class IntraProcDataFlowAnalysis
{

  virtual Data meet_data( const Data& d1, const Data& d2) = 0;

  virtual Data getCFGInData(Node *) = 0;

  virtual Data getCFGOutData(Node *) = 0;

  virtual void setCFGInData(Node*, Data &) = 0;

  virtual void applyCFGTransferFunction(Node* ) = 0;

  virtual void buildCFG() = 0;
 public:

  // Creating an empty DAG
  IntraProcDataFlowAnalysis(SgNode *head);

  virtual void run();
  // Get all the nodes
  virtual std::vector<Node *> getAllNodes() = 0;

  // Get all the Predecessors of a current Node
  virtual std::vector<Node *> getPredecessors(Node *n) = 0;

protected:
  SgNode *head;

};

#endif  /* INTRAPROCDATAFLOWANALYIS_H */