ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TaintLattice Class Reference

A pointer to a vertex of the static taint lattice. More...

#include <taintAnalysis.h>

Inheritance diagram for TaintLattice:
Collaboration diagram for TaintLattice:

Public Types

enum  Vertex {
  VERTEX_BOTTOM,
  VERTEX_UNTAINTED,
  VERTEX_TAINTED
}
 The differet vertices of this static lattice. More...
 

Public Member Functions

 TaintLattice ()
 Default initializer makes this object point to the lattice's bottom vertex. More...
 
virtual void initialize ()
 Same as default constructor. More...
 
virtual Latticecopy () const
 Returns a new copy of this vertex pointer. More...
 
virtual void copy (Lattice *other_)
 Assignment-like operator. More...
 
virtual bool operator== (Lattice *other_)
 Equality predicate, sort of. More...
 
virtual std::string str (std::string prefix)
 String representation of the lattice vertex to which this object points. More...
 
std::string to_string () const
 String representation of a lattice vertex. More...
 
virtual bool meetUpdate (Lattice *other_)
 Merges this lattice node with another and stores the result in this node. More...
 
Vertex get_vertex () const
 Accessor for this node's vertex in the lattice. More...
 
bool set_vertex (Vertex v)
 Accessor for this node's vertex in the lattice. More...
 
- Public Member Functions inherited from FiniteLattice
bool finiteLattice ()
 Check if this lattice is finite or not. More...
 
- Public Member Functions inherited from Lattice
virtual void remapVars (const std::map< varID, varID > &varNameMap, const Function &newFunc)
 
virtual void incorporateVars (Lattice *that)
 
virtual Latticeproject (SgExpression *expr)
 
virtual bool unProject (SgExpression *expr, Lattice *exprState)
 
bool operator!= (Lattice *that)
 
bool operator== (Lattice &that)
 
bool operator!= (Lattice &that)
 
- Public Member Functions inherited from printable
virtual ~printable ()
 

Protected Attributes

Vertex vertex
 The vertex of the static taint lattice to which this object points. More...
 

Friends

std::ostream & operator<< (std::ostream &o, const TaintLattice &lattice)
 

Detailed Description

A pointer to a vertex of the static taint lattice.

The taint lattice is static, consisting of only the vertices defined by the Vertex enum. A TaintLattice object is slightly misnamed but follows existing convention: it's not really the whole lattice, but a pointer to one of the static latice's vertices.

Definition at line 54 of file taintAnalysis.h.

Member Enumeration Documentation

The differet vertices of this static lattice.

They're defined in a particular order so that the meetUpdate() method only needs to compute the maximum when merging two vertex pointers. A value is considered to be tainted if it points to the VERTEX_TAINTED or the VERTEX_TOP vertex of the static taint lattice.

Enumerator
VERTEX_BOTTOM 

No information is known about the value of the variable.

VERTEX_UNTAINTED 

Value is not tainted.

VERTEX_TAINTED 

Value is tainted.

Definition at line 60 of file taintAnalysis.h.

Constructor & Destructor Documentation

TaintLattice::TaintLattice ( )
inline

Default initializer makes this object point to the lattice's bottom vertex.

Definition at line 73 of file taintAnalysis.h.

Referenced by copy(), and initialize().

Member Function Documentation

virtual void TaintLattice::initialize ( )
inlinevirtual

Same as default constructor.

Implements Lattice.

Definition at line 76 of file taintAnalysis.h.

References TaintLattice().

Vertex TaintLattice::get_vertex ( ) const
inline

Accessor for this node's vertex in the lattice.

The set_level() mutator also returns true if the new value is different than the old value, and false if there was no change.

Definition at line 83 of file taintAnalysis.h.

References vertex.

bool TaintLattice::set_vertex ( Vertex  v)

Accessor for this node's vertex in the lattice.

The set_level() mutator also returns true if the new value is different than the old value, and false if there was no change.

virtual Lattice* TaintLattice::copy ( ) const
inlinevirtual

Returns a new copy of this vertex pointer.

Implements Lattice.

Definition at line 89 of file taintAnalysis.h.

References TaintLattice().

virtual void TaintLattice::copy ( Lattice other_)
virtual

Assignment-like operator.

Makes this object point to the same lattice vertex as the other object. The other object must also be a TaintLattice object.

Implements Lattice.

virtual bool TaintLattice::operator== ( Lattice other_)
virtual

Equality predicate, sort of.

Beware that this is not true equality since it is not symmetric.

Implements Lattice.

virtual std::string TaintLattice::str ( std::string  prefix)
inlinevirtual

String representation of the lattice vertex to which this object points.

The return value is the name of the vertex to which this object points, sans "VERTEX_" prefix, and converted to lower case. The prefix is prepended to the returned string.

Implements printable.

Definition at line 113 of file taintAnalysis.h.

References to_string().

std::string TaintLattice::to_string ( ) const

String representation of a lattice vertex.

Returns the name of the taint lattice vertex to which this object points. The returned string is one of the Vertex enum constants sans the "VERTEX_" prefix and converted to lower case.

Referenced by TaintAnalysis::lattice_info(), and str().

virtual bool TaintLattice::meetUpdate ( Lattice other_)
virtual

Merges this lattice node with another and stores the result in this node.

Returns true iff this node changed.

Implements Lattice.

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  o,
const TaintLattice lattice 
)
friend

Member Data Documentation

Vertex TaintLattice::vertex
protected

The vertex of the static taint lattice to which this object points.

Definition at line 68 of file taintAnalysis.h.

Referenced by get_vertex().


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