Static Value-Flow Analysis
Public Types | Public Member Functions | Protected Attributes | List of all members
SVF::PTData< Key, KeySet, Data, DataSet > Class Template Referenceabstract

#include <AbstractPointsToDS.h>

Inheritance diagram for SVF::PTData< Key, KeySet, Data, DataSet >:
SVF::MutablePTData< VersionedKey, VersionedKeySet, Data, DataSet > SVF::PersistentPTData< VersionedKey, VersionedKeySet, Data, DataSet > SVF::DFPTData< Key, KeySet, Data, DataSet > SVF::DiffPTData< Key, KeySet, Data, DataSet > SVF::MutablePTData< Key, KeySet, Data, DataSet > SVF::PersistentPTData< Key, KeySet, Data, DataSet > SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet > SVF::MutableDFPTData< Key, KeySet, Data, DataSet > SVF::PersistentDFPTData< Key, KeySet, Data, DataSet > SVF::MutableDiffPTData< Key, KeySet, Data, DataSet > SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet > SVF::MutableVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet > SVF::PersistentVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet > SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet > SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >

Public Types

enum  PTDataTy {
  Base , MutBase , Diff , MutDiff ,
  DataFlow , MutDataFlow , MutIncDataFlow , Versioned ,
  MutVersioned , PersBase , PersDiff , PersDataFlow ,
  PersIncDataFlow , PersVersioned
}
 Types of a points-to data structures. More...
 

Public Member Functions

 PTData (bool reversePT=true, PTDataTy ty=PTDataTy::Base)
 
virtual ~PTData ()
 
PTDataTy getPTDTY () const
 Get the type of points-to data structure that this is. More...
 
virtual void clear ()=0
 Clears all points-to sets as if nothing is stored. More...
 
virtual const DataSet & getPts (const Key &var)=0
 Get points-to set of var. More...
 
virtual const KeySet & getRevPts (const Data &datum)=0
 Get reverse points-to set of a datum. More...
 
virtual bool addPts (const Key &var, const Data &element)=0
 Adds element to the points-to set associated with var. More...
 
virtual bool unionPts (const Key &dstVar, const Key &srcVar)=0
 Performs pts(dstVar) = pts(dstVar) U pts(srcVar). More...
 
virtual bool unionPts (const Key &dstVar, const DataSet &srcDataSet)=0
 Performs pts(dstVar) = pts(dstVar) U srcDataSet. More...
 
virtual void clearPts (const Key &var, const Data &element)=0
 Clears element from the points-to set of var. More...
 
virtual void clearFullPts (const Key &var)=0
 Fully clears the points-to set of var. More...
 
virtual void remapAllPts (void)=0
 Remaps all points-to sets to use the current mapping. More...
 
virtual void dumpPTData ()=0
 Dump stored keys and points-to sets. More...
 
virtual Map< DataSet, unsigned > getAllPts (bool liveOnly) const =0
 

Protected Attributes

bool rev
 Whether we maintain reverse points-to sets or not. More...
 
PTDataTy ptdTy
 

Detailed Description

template<typename Key, typename KeySet, typename Data, typename DataSet>
class SVF::PTData< Key, KeySet, Data, DataSet >

Basic points-to data structure Given a key (variable/condition variable), return its points-to data (pts/condition pts) It is designed flexible for different context, heap and path sensitive analysis Context Insensitive Key --> Variable, DataSet --> PointsTo Context sensitive: Key --> CondVar, DataSet --> PointsTo Heap sensitive: Key --> Variable DataSet --> CondPointsToSet Context and heap sensitive: Key --> CondVar, DataSet --> CondPointsToSet

This class is abstract to allow for multiple methods of actually storing points-to sets. Key: "owning" variable of a points-to set. KeySet: collection of keys. Data: elements in points-to sets. DataSet: the points-to set; a collection of Data.

Definition at line 74 of file AbstractPointsToDS.h.

Member Enumeration Documentation

◆ PTDataTy

template<typename Key , typename KeySet , typename Data , typename DataSet >
enum SVF::PTData::PTDataTy

Types of a points-to data structures.

Enumerator
Base 
MutBase 
Diff 
MutDiff 
DataFlow 
MutDataFlow 
MutIncDataFlow 
Versioned 
MutVersioned 
PersBase 
PersDiff 
PersDataFlow 
PersIncDataFlow 
PersVersioned 

Definition at line 78 of file AbstractPointsToDS.h.

Constructor & Destructor Documentation

◆ PTData()

template<typename Key , typename KeySet , typename Data , typename DataSet >
SVF::PTData< Key, KeySet, Data, DataSet >::PTData ( bool  reversePT = true,
PTDataTy  ty = PTDataTy::Base 
)
inline

Definition at line 96 of file AbstractPointsToDS.h.

96 : rev(reversePT), ptdTy(ty) { }
bool rev
Whether we maintain reverse points-to sets or not.

◆ ~PTData()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual SVF::PTData< Key, KeySet, Data, DataSet >::~PTData ( )
inlinevirtual

Definition at line 98 of file AbstractPointsToDS.h.

98 { }

Member Function Documentation

◆ addPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::PTData< Key, KeySet, Data, DataSet >::addPts ( const Key &  var,
const Data &  element 
)
pure virtual

◆ clear()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::clear ( )
pure virtual

◆ clearFullPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::clearFullPts ( const Key &  var)
pure virtual

◆ clearPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::clearPts ( const Key &  var,
const Data &  element 
)
pure virtual

◆ dumpPTData()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::dumpPTData ( )
pure virtual

◆ getAllPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual Map<DataSet, unsigned> SVF::PTData< Key, KeySet, Data, DataSet >::getAllPts ( bool  liveOnly) const
pure virtual

◆ getPTDTY()

template<typename Key , typename KeySet , typename Data , typename DataSet >
PTDataTy SVF::PTData< Key, KeySet, Data, DataSet >::getPTDTY ( ) const
inline

Get the type of points-to data structure that this is.

Definition at line 101 of file AbstractPointsToDS.h.

102  {
103  return ptdTy;
104  }

◆ getPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual const DataSet& SVF::PTData< Key, KeySet, Data, DataSet >::getPts ( const Key &  var)
pure virtual

◆ getRevPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual const KeySet& SVF::PTData< Key, KeySet, Data, DataSet >::getRevPts ( const Data &  datum)
pure virtual

◆ remapAllPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::remapAllPts ( void  )
pure virtual

◆ unionPts() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::PTData< Key, KeySet, Data, DataSet >::unionPts ( const Key &  dstVar,
const DataSet &  srcDataSet 
)
pure virtual

◆ unionPts() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::PTData< Key, KeySet, Data, DataSet >::unionPts ( const Key &  dstVar,
const Key &  srcVar 
)
pure virtual

Member Data Documentation

◆ ptdTy

template<typename Key , typename KeySet , typename Data , typename DataSet >
PTDataTy SVF::PTData< Key, KeySet, Data, DataSet >::ptdTy
protected

Definition at line 142 of file AbstractPointsToDS.h.

◆ rev

template<typename Key , typename KeySet , typename Data , typename DataSet >
bool SVF::PTData< Key, KeySet, Data, DataSet >::rev
protected

Whether we maintain reverse points-to sets or not.

Definition at line 141 of file AbstractPointsToDS.h.


The documentation for this class was generated from the following file: