clang 17.0.0git
Classes | Namespaces | Macros
SValVisitor.h File Reference
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
#include "clang/StaticAnalyzer/Core/PathSensitive/Regions.def"
Include dependency graph for SValVisitor.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  clang::ento::SValVisitor< ImplClass, RetTy >
 SValVisitor - this class implements a simple visitor for SVal subclasses. More...
 
class  clang::ento::SymExprVisitor< ImplClass, RetTy >
 SymExprVisitor - this class implements a simple visitor for SymExpr subclasses. More...
 
class  clang::ento::MemRegionVisitor< ImplClass, RetTy >
 MemRegionVisitor - this class implements a simple visitor for MemRegion subclasses. More...
 
class  clang::ento::FullSValVisitor< ImplClass, RetTy >
 FullSValVisitor - a convenient mixed visitor for all three: SVal, SymExpr and MemRegion subclasses. More...
 

Namespaces

namespace  clang
 
namespace  clang::ento
 

Macros

#define DISPATCH(NAME, CLASS)    return static_cast<ImplClass *>(this)->Visit ## NAME(V.castAs<CLASS>())
 
#define BASIC_SVAL(Id, Parent)   case SVal::Id ## Kind: DISPATCH(Id, Id);
 
#define LOC_SVAL(Id, Parent)    case loc::Id ## Kind: DISPATCH(Loc ## Id, loc :: Id);
 
#define NONLOC_SVAL(Id, Parent)    case nonloc::Id ## Kind: DISPATCH(NonLoc ## Id, nonloc :: Id);
 
#define BASIC_SVAL(Id, Parent)    RetTy Visit ## Id(Id V) { DISPATCH(Parent, Id); }
 
#define ABSTRACT_SVAL(Id, Parent)    BASIC_SVAL(Id, Parent)
 
#define LOC_SVAL(Id, Parent)    RetTy VisitLoc ## Id(loc::Id V) { DISPATCH(Parent, Parent); }
 
#define NONLOC_SVAL(Id, Parent)    RetTy VisitNonLoc ## Id(nonloc::Id V) { DISPATCH(Parent, Parent); }
 
#define DISPATCH(CLASS)    return static_cast<ImplClass *>(this)->Visit ## CLASS(cast<CLASS>(S))
 
#define SYMBOL(Id, Parent)    case SymExpr::Id ## Kind: DISPATCH(Id);
 
#define SYMBOL(Id, Parent)   RetTy Visit ## Id(const Id *S) { DISPATCH(Parent); }
 
#define ABSTRACT_SYMBOL(Id, Parent)   SYMBOL(Id, Parent)
 
#define DISPATCH(CLASS)    return static_cast<ImplClass *>(this)->Visit ## CLASS(cast<CLASS>(R))
 
#define REGION(Id, Parent)   case MemRegion::Id ## Kind: DISPATCH(Id);
 
#define REGION(Id, Parent)    RetTy Visit ## Id(const Id *R) { DISPATCH(Parent); }
 
#define ABSTRACT_REGION(Id, Parent)    REGION(Id, Parent)
 

Macro Definition Documentation

◆ ABSTRACT_REGION

#define ABSTRACT_REGION (   Id,
  Parent 
)     REGION(Id, Parent)

Definition at line 124 of file SValVisitor.h.

◆ ABSTRACT_SVAL

#define ABSTRACT_SVAL (   Id,
  Parent 
)     BASIC_SVAL(Id, Parent)

Definition at line 59 of file SValVisitor.h.

◆ ABSTRACT_SYMBOL

#define ABSTRACT_SYMBOL (   Id,
  Parent 
)    SYMBOL(Id, Parent)

Definition at line 94 of file SValVisitor.h.

◆ BASIC_SVAL [1/2]

#define BASIC_SVAL (   Id,
  Parent 
)    case SVal::Id ## Kind: DISPATCH(Id, Id);

Definition at line 57 of file SValVisitor.h.

◆ BASIC_SVAL [2/2]

#define BASIC_SVAL (   Id,
  Parent 
)     RetTy Visit ## Id(Id V) { DISPATCH(Parent, Id); }

Definition at line 57 of file SValVisitor.h.

◆ DISPATCH [1/3]

#define DISPATCH (   CLASS)     return static_cast<ImplClass *>(this)->Visit ## CLASS(cast<CLASS>(S))

Definition at line 108 of file SValVisitor.h.

◆ DISPATCH [2/3]

#define DISPATCH (   CLASS)     return static_cast<ImplClass *>(this)->Visit ## CLASS(cast<CLASS>(R))

Definition at line 108 of file SValVisitor.h.

◆ DISPATCH [3/3]

#define DISPATCH (   NAME,
  CLASS 
)     return static_cast<ImplClass *>(this)->Visit ## NAME(V.castAs<CLASS>())

Definition at line 108 of file SValVisitor.h.

◆ LOC_SVAL [1/2]

#define LOC_SVAL (   Id,
  Parent 
)     case loc::Id ## Kind: DISPATCH(Loc ## Id, loc :: Id);

Definition at line 61 of file SValVisitor.h.

◆ LOC_SVAL [2/2]

#define LOC_SVAL (   Id,
  Parent 
)     RetTy VisitLoc ## Id(loc::Id V) { DISPATCH(Parent, Parent); }

Definition at line 61 of file SValVisitor.h.

◆ NONLOC_SVAL [1/2]

#define NONLOC_SVAL (   Id,
  Parent 
)     case nonloc::Id ## Kind: DISPATCH(NonLoc ## Id, nonloc :: Id);

Definition at line 63 of file SValVisitor.h.

◆ NONLOC_SVAL [2/2]

#define NONLOC_SVAL (   Id,
  Parent 
)     RetTy VisitNonLoc ## Id(nonloc::Id V) { DISPATCH(Parent, Parent); }

Definition at line 63 of file SValVisitor.h.

◆ REGION [1/2]

#define REGION (   Id,
  Parent 
)    case MemRegion::Id ## Kind: DISPATCH(Id);

Definition at line 122 of file SValVisitor.h.

◆ REGION [2/2]

#define REGION (   Id,
  Parent 
)     RetTy Visit ## Id(const Id *R) { DISPATCH(Parent); }

Definition at line 122 of file SValVisitor.h.

◆ SYMBOL [1/2]

#define SYMBOL (   Id,
  Parent 
)     case SymExpr::Id ## Kind: DISPATCH(Id);

Definition at line 93 of file SValVisitor.h.

◆ SYMBOL [2/2]

#define SYMBOL (   Id,
  Parent 
)    RetTy Visit ## Id(const Id *S) { DISPATCH(Parent); }

Definition at line 93 of file SValVisitor.h.