clang 20.0.0git
SmartPtr.h
Go to the documentation of this file.
1//=== SmartPtr.h - Tracking smart pointer state. -------------------*- C++ -*-//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Defines inter-checker API for the smart pointer modeling. It allows
10// dependent checkers to figure out if an smart pointer is null or not.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_SMARTPTR_H
15#define LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_SMARTPTR_H
16
18
19namespace clang {
20namespace ento {
21namespace smartptr {
22
23/// Returns true if the event call is on smart pointer.
25bool isStdSmartPtr(const CXXRecordDecl *RD);
26bool isStdSmartPtr(const Expr *E);
27
28/// Returns whether the smart pointer is null or not.
29bool isNullSmartPtr(const ProgramStateRef State, const MemRegion *ThisRegion);
30
32
33} // namespace smartptr
34} // namespace ento
35} // namespace clang
36
37#endif // LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_SMARTPTR_H
Expr * E
Represents a C++ struct/union/class.
Definition: DeclCXX.h:258
This represents one expression.
Definition: Expr.h:110
Represents an abstract call to a function or method along a particular path.
Definition: CallEvent.h:153
MemRegion - The root abstract class for all memory regions.
Definition: MemRegion.h:97
const BugType * getNullDereferenceBugType()
bool isNullSmartPtr(const ProgramStateRef State, const MemRegion *ThisRegion)
Returns whether the smart pointer is null or not.
bool isStdSmartPtr(const CXXRecordDecl *RD)
bool isStdSmartPtrCall(const CallEvent &Call)
Returns true if the event call is on smart pointer.
The JSON file list parser is used to communicate input to InstallAPI.