clang API Documentation

Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions
clang::ProgramPoint Class Reference

#include <ProgramPoint.h>

Inheritance diagram for clang::ProgramPoint:
Inheritance graph
[legend]

List of all members.

Public Types

enum  Kind {
  BlockEdgeKind, BlockEntranceKind, BlockExitKind, PreStmtKind,
  PreStmtPurgeDeadSymbolsKind, PostStmtPurgeDeadSymbolsKind, PostStmtKind, PreLoadKind,
  PostLoadKind, PreStoreKind, PostStoreKind, PostConditionKind,
  PostLValueKind, MinPostStmtKind = PostStmtKind, MaxPostStmtKind = PostLValueKind, PostInitializerKind,
  CallEnterKind, CallExitBeginKind, CallExitEndKind, PreImplicitCallKind,
  PostImplicitCallKind, MinImplicitCallKind = PreImplicitCallKind, MaxImplicitCallKind = PostImplicitCallKind, EpsilonKind
}

Public Member Functions

ProgramPoint withTag (const ProgramPointTag *tag) const
template<typename T >
castAs () const
 Convert to the specified ProgramPoint type, asserting that this ProgramPoint is of the desired type.
template<typename T >
Optional< T > getAs () const
 Convert to the specified ProgramPoint type, returning None if this ProgramPoint is not of the desired type.
Kind getKind () const
bool isPurgeKind ()
 Is this a program point corresponding to purge/removal of dead symbols and bindings.
const ProgramPointTaggetTag () const
const LocationContextgetLocationContext () const
unsigned getHashValue () const
bool operator== (const ProgramPoint &RHS) const
bool operator!= (const ProgramPoint &RHS) const
void Profile (llvm::FoldingSetNodeID &ID) const

Static Public Member Functions

static ProgramPoint getProgramPoint (const Stmt *S, ProgramPoint::Kind K, const LocationContext *LC, const ProgramPointTag *tag)

Protected Member Functions

 ProgramPoint ()
 ProgramPoint (const void *P, Kind k, const LocationContext *l, const ProgramPointTag *tag=nullptr)
 ProgramPoint (const void *P1, const void *P2, Kind k, const LocationContext *l, const ProgramPointTag *tag=nullptr)
const void * getData1 () const
const void * getData2 () const
void setData2 (const void *d)

Detailed Description

Definition at line 38 of file ProgramPoint.h.


Member Enumeration Documentation

Enumerator:
BlockEdgeKind 
BlockEntranceKind 
BlockExitKind 
PreStmtKind 
PreStmtPurgeDeadSymbolsKind 
PostStmtPurgeDeadSymbolsKind 
PostStmtKind 
PreLoadKind 
PostLoadKind 
PreStoreKind 
PostStoreKind 
PostConditionKind 
PostLValueKind 
MinPostStmtKind 
MaxPostStmtKind 
PostInitializerKind 
CallEnterKind 
CallExitBeginKind 
CallExitEndKind 
PreImplicitCallKind 
PostImplicitCallKind 
MinImplicitCallKind 
MaxImplicitCallKind 
EpsilonKind 

Definition at line 40 of file ProgramPoint.h.


Constructor & Destructor Documentation

clang::ProgramPoint::ProgramPoint ( ) [inline, protected]

Definition at line 76 of file ProgramPoint.h.

Referenced by withTag().

clang::ProgramPoint::ProgramPoint ( const void *  P,
Kind  k,
const LocationContext l,
const ProgramPointTag tag = nullptr 
) [inline, protected]

Definition at line 77 of file ProgramPoint.h.

References getData1(), getKind(), and getLocationContext().

clang::ProgramPoint::ProgramPoint ( const void *  P1,
const void *  P2,
Kind  k,
const LocationContext l,
const ProgramPointTag tag = nullptr 
) [inline, protected]

Definition at line 90 of file ProgramPoint.h.


Member Function Documentation

template<typename T >
T clang::ProgramPoint::castAs ( ) const [inline]
template<typename T >
Optional<T> clang::ProgramPoint::getAs ( ) const [inline]
const void* clang::ProgramPoint::getData1 ( ) const [inline, protected]
const void* clang::ProgramPoint::getData2 ( ) const [inline, protected]

Definition at line 160 of file ProgramPoint.h.

References Profile().

Referenced by llvm::DenseMapInfo< clang::ProgramPoint >::getHashValue().

Kind clang::ProgramPoint::getKind ( ) const [inline]
ProgramPoint ProgramPoint::getProgramPoint ( const Stmt S,
ProgramPoint::Kind  K,
const LocationContext LC,
const ProgramPointTag tag 
) [static]
const ProgramPointTag* clang::ProgramPoint::getTag ( ) const [inline]

Is this a program point corresponding to purge/removal of dead symbols and bindings.

Definition at line 147 of file ProgramPoint.h.

References getKind(), PostStmtPurgeDeadSymbolsKind, and PreStmtPurgeDeadSymbolsKind.

bool clang::ProgramPoint::operator!= ( const ProgramPoint RHS) const [inline]

Definition at line 173 of file ProgramPoint.h.

bool clang::ProgramPoint::operator== ( const ProgramPoint RHS) const [inline]

Definition at line 166 of file ProgramPoint.h.

void clang::ProgramPoint::Profile ( llvm::FoldingSetNodeID &  ID) const [inline]

Definition at line 180 of file ProgramPoint.h.

References getData1(), getData2(), getKind(), getLocationContext(), and getTag().

Referenced by getHashValue().

void clang::ProgramPoint::setData2 ( const void *  d) [inline, protected]

Definition at line 103 of file ProgramPoint.h.

Referenced by clang::PostStore::PostStore().

Create a new ProgramPoint object that is the same as the original except for using the specified tag value.

Definition at line 108 of file ProgramPoint.h.

References getData1(), getData2(), getKind(), getLocationContext(), and ProgramPoint().

Referenced by clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::NodeBuilderWithSinks::generateNode(), and clang::ento::NodeBuilderWithSinks::generateSink().


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