class CallEventManager

Declaration

class CallEventManager { /* full declaration omitted */ };

Description

Manages the lifetime of CallEvent objects. CallEventManager provides a way to create arbitrary CallEvents "on the stack" as if they were value objects by keeping a cache of CallEvent-sized memory blocks. The CallEvents created by CallEventManager are only valid for the lifetime of the OwnedCallEvent that holds them; right now these objects cannot be copied and ownership cannot be transferred.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1234

Member Variables

private llvm::BumpPtrAllocator& Alloc
private SmallVector<void*, 8> Cache

Method Overview

  • public CallEventManager(llvm::BumpPtrAllocator & alloc)
  • private void * allocate()
  • private template <typename T, typename Arg>T * create(Arg A, clang::ento::ProgramStateRef St, const clang::LocationContext * LCtx)
  • private template <typename T, typename Arg1, typename Arg2>T * create(Arg1 A1, Arg2 A2, clang::ento::ProgramStateRef St, const clang::LocationContext * LCtx)
  • private template <typename T, typename Arg1, typename Arg2, typename Arg3>T * create(Arg1 A1, Arg2 A2, Arg3 A3, clang::ento::ProgramStateRef St, const clang::LocationContext * LCtx)
  • private template <typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4>T * create(Arg1 A1, Arg2 A2, Arg3 A3, Arg4 A4, clang::ento::ProgramStateRef St, const clang::LocationContext * LCtx)
  • public CallEventRef<clang::ento::CXXAllocatorCall> getCXXAllocatorCall(const clang::CXXNewExpr * E, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • public CallEventRef<clang::ento::CXXConstructorCall> getCXXConstructorCall(const clang::CXXConstructExpr * E, const clang::ento::MemRegion * Target, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • public CallEventRef<clang::ento::CXXDeallocatorCall> getCXXDeallocatorCall(const clang::CXXDeleteExpr * E, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • public CallEventRef<clang::ento::CXXDestructorCall> getCXXDestructorCall(const clang::CXXDestructorDecl * DD, const clang::Stmt * Trigger, const clang::ento::MemRegion * Target, bool IsBase, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • public CallEventRef<clang::ento::CXXInheritedConstructorCall> getCXXInheritedConstructorCall(const clang::CXXInheritedCtorInitExpr * E, const clang::ento::MemRegion * Target, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • public CallEventRef<> getCall(const clang::Stmt * S, clang::ento::ProgramStateRef State, const clang::LocationContext * LC)
  • public CallEventRef<> getCaller(const clang::StackFrameContext * CalleeCtx, clang::ento::ProgramStateRef State)
  • public CallEventRef<clang::ento::ObjCMethodCall> getObjCMethodCall(const clang::ObjCMessageExpr * E, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • public CallEventRef<> getSimpleCall(const clang::CallExpr * E, clang::ento::ProgramStateRef State, const clang::LocationContext * LCtx)
  • private void reclaim(const void * Memory)

Methods

CallEventManager(llvm::BumpPtrAllocator& alloc)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1286

Parameters

llvm::BumpPtrAllocator& alloc

void* allocate()

Description

Returns memory that can be initialized as a CallEvent.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1247

template <typename T, typename Arg>
T* create(Arg A,
          clang::ento::ProgramStateRef St,
          const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1255

Templates

T
Arg

Parameters

Arg A
clang::ento::ProgramStateRef St
const clang::LocationContext* LCtx

template <typename T,
          typename Arg1,
          typename Arg2>
T* create(Arg1 A1,
          Arg2 A2,
          clang::ento::ProgramStateRef St,
          const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1262

Templates

T
Arg1
Arg2

Parameters

Arg1 A1
Arg2 A2
clang::ento::ProgramStateRef St
const clang::LocationContext* LCtx

template <typename T,
          typename Arg1,
          typename Arg2,
          typename Arg3>
T* create(Arg1 A1,
          Arg2 A2,
          Arg3 A3,
          clang::ento::ProgramStateRef St,
          const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1269

Templates

T
Arg1
Arg2
Arg3

Parameters

Arg1 A1
Arg2 A2
Arg3 A3
clang::ento::ProgramStateRef St
const clang::LocationContext* LCtx

template <typename T,
          typename Arg1,
          typename Arg2,
          typename Arg3,
          typename Arg4>
T* create(Arg1 A1,
          Arg2 A2,
          Arg3 A3,
          Arg4 A4,
          clang::ento::ProgramStateRef St,
          const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1278

Templates

T
Arg1
Arg2
Arg3
Arg4

Parameters

Arg1 A1
Arg2 A2
Arg3 A3
Arg4 A4
clang::ento::ProgramStateRef St
const clang::LocationContext* LCtx

CallEventRef<clang::ento::CXXAllocatorCall>
getCXXAllocatorCall(
    const clang::CXXNewExpr* E,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1329

Parameters

const clang::CXXNewExpr* E
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

CallEventRef<clang::ento::CXXConstructorCall>
getCXXConstructorCall(
    const clang::CXXConstructExpr* E,
    const clang::ento::MemRegion* Target,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1309

Parameters

const clang::CXXConstructExpr* E
const clang::ento::MemRegion* Target
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

CallEventRef<clang::ento::CXXDeallocatorCall>
getCXXDeallocatorCall(
    const clang::CXXDeleteExpr* E,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1335

Parameters

const clang::CXXDeleteExpr* E
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

CallEventRef<clang::ento::CXXDestructorCall>
getCXXDestructorCall(
    const clang::CXXDestructorDecl* DD,
    const clang::Stmt* Trigger,
    const clang::ento::MemRegion* Target,
    bool IsBase,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1322

Parameters

const clang::CXXDestructorDecl* DD
const clang::Stmt* Trigger
const clang::ento::MemRegion* Target
bool IsBase
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

CallEventRef<
    clang::ento::CXXInheritedConstructorCall>
getCXXInheritedConstructorCall(
    const clang::CXXInheritedCtorInitExpr* E,
    const clang::ento::MemRegion* Target,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1315

Parameters

const clang::CXXInheritedCtorInitExpr* E
const clang::ento::MemRegion* Target
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

CallEventRef<> getCall(
    const clang::Stmt* S,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LC)

Description

Gets a call event for a function call, Objective-C method call, a 'new', or a 'delete' call.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1295

Parameters

const clang::Stmt* S
clang::ento::ProgramStateRef State
const clang::LocationContext* LC

CallEventRef<> getCaller(
    const clang::StackFrameContext* CalleeCtx,
    clang::ento::ProgramStateRef State)

Description

Gets an outside caller given a callee context.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1290

Parameters

const clang::StackFrameContext* CalleeCtx
clang::ento::ProgramStateRef State

CallEventRef<clang::ento::ObjCMethodCall>
getObjCMethodCall(
    const clang::ObjCMessageExpr* E,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1303

Parameters

const clang::ObjCMessageExpr* E
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

CallEventRef<> getSimpleCall(
    const clang::CallExpr* E,
    clang::ento::ProgramStateRef State,
    const clang::LocationContext* LCtx)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1299

Parameters

const clang::CallExpr* E
clang::ento::ProgramStateRef State
const clang::LocationContext* LCtx

void reclaim(const void* Memory)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1242

Parameters

const void* Memory