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

#include <AbstractPointsToDS.h>

Inheritance diagram for SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >:
SVF::PTData< Key, KeySet, Data, DataSet > SVF::MutableVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet > SVF::PersistentVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >

Public Types

typedef PTData< Key, KeySet, Data, DataSet > BasePTData
 
typedef BasePTData::PTDataTy PTDataTy
 
- Public Types inherited from SVF::PTData< Key, KeySet, Data, DataSet >
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

 VersionedPTData (bool reversePT=true, PTDataTy ty=PTDataTy::Versioned)
 
virtual ~VersionedPTData ()
 
virtual const DataSet & getPts (const VersionedKey &vk)=0
 
virtual const VersionedKeySet & getVersionedKeyRevPts (const Data &datum)=0
 
virtual bool addPts (const VersionedKey &vk, const Data &element)=0
 
virtual bool unionPts (const VersionedKey &dstVar, const VersionedKey &srcVar)=0
 
virtual bool unionPts (const VersionedKey &dstVar, const Key &srcVar)=0
 
virtual bool unionPts (const Key &dstVar, const VersionedKey &srcVar)=0
 
virtual bool unionPts (const VersionedKey &dstVar, const DataSet &srcDataSet)=0
 
virtual void clearPts (const VersionedKey &vk, const Data &element)=0
 
virtual void clearFullPts (const VersionedKey &vk)=0
 
- Public Member Functions inherited from SVF::PTData< Key, KeySet, Data, DataSet >
 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
 
static bool classof (const VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet > *)
 
static bool classof (const PTData< Key, KeySet, Data, DataSet > *ptd)
 
virtual const DataSet & getPts (const Key &var)=0
 Get points-to set of var. 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...
 

Additional Inherited Members

- Protected Attributes inherited from SVF::PTData< Key, KeySet, Data, DataSet >
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, typename VersionedKey, typename VersionedKeySet>
class SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >

PTData with normal keys and versioned keys. Replicates the PTData interface for versioned keys too. Intended to be used for versioned flow-sensitive PTA–hence the name–but can be used anywhere where there are two types of keys at play.

Definition at line 269 of file AbstractPointsToDS.h.

Member Typedef Documentation

◆ BasePTData

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
typedef PTData<Key, KeySet, Data, DataSet> SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::BasePTData

Definition at line 272 of file AbstractPointsToDS.h.

◆ PTDataTy

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
typedef BasePTData::PTDataTy SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::PTDataTy

Definition at line 273 of file AbstractPointsToDS.h.

Constructor & Destructor Documentation

◆ VersionedPTData()

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::VersionedPTData ( bool  reversePT = true,
PTDataTy  ty = PTDataTy::Versioned 
)
inline

Definition at line 275 of file AbstractPointsToDS.h.

275 : BasePTData(reversePT, ty) { }
PTData< Key, KeySet, Data, DataSet > BasePTData

◆ ~VersionedPTData()

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

Definition at line 277 of file AbstractPointsToDS.h.

277 { }

Member Function Documentation

◆ addPts() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual bool SVF::PTData< Key, KeySet, Data, DataSet >::addPts
private

Adds element to the points-to set associated with var.

◆ addPts() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual bool SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::addPts ( const VersionedKey &  vk,
const Data &  element 
)
pure virtual

◆ classof() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
static bool SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::classof ( const PTData< Key, KeySet, Data, DataSet > *  ptd)
inlinestatic

Definition at line 299 of file AbstractPointsToDS.h.

300  {
301  return ptd->getPTDTY() == PTDataTy::Versioned
302  || ptd->getPTDTY() == PTDataTy::MutVersioned
303  || ptd->getPTDTY() == PTDataTy::PersVersioned;
304  }

◆ classof() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
static bool SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::classof ( const VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet > *  )
inlinestatic

Methods to support type inquiry through isa, cast, and dyn_cast:

Definition at line 294 of file AbstractPointsToDS.h.

295  {
296  return true;
297  }

◆ clearFullPts() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::clearFullPts
private

Fully clears the points-to set of var.

◆ clearFullPts() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual void SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::clearFullPts ( const VersionedKey &  vk)
pure virtual

◆ clearPts() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual void SVF::PTData< Key, KeySet, Data, DataSet >::clearPts
private

Clears element from the points-to set of var.

◆ clearPts() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual void SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::clearPts ( const VersionedKey &  vk,
const Data &  element 
)
pure virtual

◆ getPts() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual const DataSet& SVF::PTData< Key, KeySet, Data, DataSet >::getPts
private

Get points-to set of var.

◆ getPts() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual const DataSet& SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::getPts ( const VersionedKey &  vk)
pure virtual

◆ getVersionedKeyRevPts()

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual const VersionedKeySet& SVF::VersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet >::getVersionedKeyRevPts ( const Data &  datum)
pure virtual

◆ unionPts() [1/6]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual bool SVF::PTData< Key, KeySet, Data, DataSet >::unionPts
private

Performs pts(dstVar) = pts(dstVar) U srcDataSet.

◆ unionPts() [2/6]

template<typename Key , typename KeySet , typename Data , typename DataSet , typename VersionedKey , typename VersionedKeySet >
virtual bool SVF::PTData< Key, KeySet, Data, DataSet >::unionPts
private

Performs pts(dstVar) = pts(dstVar) U pts(srcVar).

◆ unionPts() [3/6]

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

◆ unionPts() [4/6]

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

◆ unionPts() [5/6]

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

◆ unionPts() [6/6]

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

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