Module cpp
Provides classes and predicates for working with C/C++ code.
Where the documentation refers to the standards, it gives references to the freely-available drafts.
For C++11, these references are of the form [N3337 5.3.2/1], and the corresponding draft of the standard can be downloaded from https://github.com/cplusplus/draft/raw/master/papers/n3337.pdf
For C++14, these references are of the form [N4140 5.3.2/1], and the corresponding draft of the standard can be downloaded from https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
Import path
import cpp
Predicates
affectedByMacro | Holds if |
allocationFunctionModel | Holds if an external allocation model exists for the given parameters. |
anyFileCompiledAsMicrosoft | Holds if any file was compiled by a Microsoft compiler. |
bbDominates | Holds if |
bbIDominates | Holds if |
bbIPostDominates | Holds if |
bbPostDominates | Holds if |
bbStrictlyDominates | Holds if |
bbStrictlyPostDominates | Holds if |
callByReference | Holds if |
callDereferences | Holds if the call |
callMayReturnNull | Holds if |
canValueFlow | Holds if a value can flow directly from one expr to another. |
checkedNull | Holds if |
checkedValid | Holds if |
conditionAlwaysFalse | Holds if |
conditionAlwaysTrue | Holds if |
cyclomaticComplexityBranches | Gets the number of branching statements and expressions in a block. This is for computing cyclomatic complexity. |
deallocationFunctionModel | Holds if an external deallocation model exists for the given parameters. |
definitelyNull | Holds if a simple data-flow analysis determines that |
definition | Holds if |
definitionBarrier | Holds if |
definitionByReference | Holds if |
definitionReaches | Holds if the definition |
definitionUsePair | Computed relation: A “definition-use-pair” for a particular variable. Intuitively, this means that |
deref | Holds if evaluation of |
dereferenced | Holds if |
dereferencedByOperation | Holds if evaluation of |
directDereferencedByOperation | Holds if evaluation of |
dominates | Holds if |
exprDefinition | Holds if |
freeFunction | A library routine that frees memory. |
functionDereferences | Holds if the body of a function |
functionEntry | Holds if |
functionExit | Holds if |
getAFormatterWideType | A type that is used as a format string by any formatting function. |
getOptions | |
getter | Holds if |
iDominates | Holds if |
iPostDominates | Holds if |
inMacroExpansion | Holds if |
inSystemMacroExpansion | Holds if |
isAllocationExpr | Is e some kind of allocation ( |
isLinkerAwareExtracted | Holds if this database was created with the linker awareness feature switched on. |
isMemoryManagementExpr | Is e some kind of allocation or deallocation ( |
lockCall | Holds if |
loopConditionAlwaysTrueUponEntry | The condition |
macroLine | Holds if there is a macro invocation on line |
macroLocation | Holds if |
mayReturnNull | Holds if |
maybeNull | Holds if a simple data-flow analysis determines that |
mkElement | Get the |
mustlockCall | Holds if |
nullCheckExpr | Holds if |
nullInit | Holds if the evaluation of |
nullValue | Holds if |
parameterUsePair | Holds if |
possibleMacroLocation | Holds if there might be a macro invocation at location |
postDominates | Holds if |
primitiveVariadicFormatter | A standard function such as |
qlCast | A node representing the Cast sub-class of entity |
qlConversion | A node representing the Conversion sub-class of entity |
reachable | Holds if the control-flow node |
setter | Holds if |
strictlyDominates | Holds if |
strictlyPostDominates | Holds if |
successors_extended | Holds if there is a control-flow edge from |
trylockCall | Holds if |
underlyingElement | INTERNAL: Do not use. |
unlockCall | Holds if |
unreachable | Correct relation for reachability of ControlFlowNodes. |
unresolveElement | INTERNAL: Do not use. |
useOfVar | Holds if |
useOfVarActual | Same as |
useUsePair | A use/use pair is a pair of uses of a particular variable |
validCheckExpr | Holds if |
var_definition | Extended version of |
variadicFormatter | Holds if |
Classes
AbstractClass | An “abstract class”, in other words a class/struct that contains at least one pure virtual function. |
Access | A C/C++ access expression. This refers to a function (excluding function references in function call expressions), variable, or enum constant. |
AccessHolder | A declaration that can potentially have more C++ access rights than its enclosing element. This comprises |
AccessSpecifier | A C++ access specifier: |
AddExpr | A C/C++ add expression. |
AdditionalControlFlowEdge | An abstract class that can be extended to add additional edges to the control-flow graph. Instances of this class correspond to the source nodes of such edges, and the predicate |
AddressOfExpr | A C/C++ address-of expression. |
AggregateLiteral | A C/C++ aggregate literal. |
AlignAs | A C++11 |
AlignofExprOperator | A C++11 |
AlignofOperator | A C++11 |
AlignofTypeOperator | A C++11 |
AllocationExpr | An allocation expression such as call to |
AllocationFunction | An allocation function such as |
AnalysedExpr | An expression that has been extended with member predicates that provide information about the role of this expression in nullness checks. |
AnalyzedString | An analyzed null terminated string. |
ArithmeticConversion | A conversion from one arithmetic or |
ArithmeticType | The C/C++ arithmetic types. See 4.1.1. |
ArrayAggregateLiteral | A C/C++ aggregate literal that initializes an array |
ArrayExpr | A C/C++ array access expression. For example, the access to |
ArrayFunction | A library function with input and/or output buffer parameters |
ArrayOrVectorAggregateLiteral | A C/C++ aggregate literal that initializes an array or a GNU vector type. |
ArrayToPointerConversion | A C/C++ array to pointer conversion. |
ArrayType | A C/C++ array type. See 4.9.1. |
AsmStmt | A C/C++ ‘asm’ statement. |
AssignAddExpr | A non-overloaded |
AssignAndExpr | A non-overloaded AND ( |
AssignArithmeticOperation | A non-overloaded arithmetic assignment operation on a non-pointer lvalue: |
AssignBitwiseOperation | A non-overloaded bitwise assignment operation: |
AssignDivExpr | A non-overloaded |
AssignExpr | A non-overloaded assignment operation with the operator |
AssignLShiftExpr | A non-overloaded |
AssignMulExpr | A non-overloaded |
AssignOperation | A non-overloaded binary assignment operation other than |
AssignOrExpr | A non-overloaded OR ( |
AssignPointerAddExpr | A non-overloaded |
AssignPointerSubExpr | A non-overloaded |
AssignRShiftExpr | A non-overloaded |
AssignRemExpr | A non-overloaded |
AssignSubExpr | A non-overloaded |
AssignXorExpr | A non-overloaded XOR ( |
Assignment | A non-overloaded binary assignment operation, including |
AssumeExpr | A Microsoft C/C++ __assume expression. |
Attribute | An attribute introduced by GNU’s |
AttributeArgument | An argument to an |
AttributeFormattingFunction | A function that can be identified as a |
AutoType | A type representing the use of the C++11 |
BaseClassConversion | A conversion from a pointer or glvalue of a derived class to a pointer or glvalue of a direct or virtual base class. |
BasicBlock | A basic block in the C/C++ control-flow graph. |
BinaryArithmeticOperation | A C/C++ binary arithmetic operation. |
BinaryBitwiseOperation | A C/C++ binary bitwise operation. |
BinaryFloatingPointType | A floating-point type whose representation is base 2. |
BinaryLogicalOperation | A C/C++ binary logical operation. |
BinaryOperation | A C/C++ binary operation. |
BitField | A C structure member or C++ member variable declared with an explicit size in bits. For example the member variable |
BitwiseAndExpr | A C/C++ bitwise AND expression. |
BitwiseOrExpr | A C/C++ bitwise OR expression. |
BitwiseXorExpr | A C/C++ bitwise XOR expression. |
BlockAssignExpr | A compiler generated assignment operation that may occur in a compiler generated copy/move constructor or assignment operator, and which functions like |
BlockExpr | A code block expression, for example: |
BlockStmt | A C/C++ block statement. |
BlockType | A block type, for example, |
BoolConversion | A conversion to |
BoolType | The C/C++ boolean type. See 4.2. This is the C |
BreakStmt | A C/C++ ‘break’ statement. |
BufferWriteEstimationReason | A reason for a specific buffer write size estimate. |
BuiltInBitCast | A C/C++ |
BuiltInChooseExpr | The |
BuiltInComplexOperation | The GNU |
BuiltInFunction | A GCC built-in function. For example: |
BuiltInIntAddr | A C/C++ |
BuiltInIsTrivial | A C++ |
BuiltInNoOp | A Microsoft C/C++ |
BuiltInOperation | A C/C++ built-in operation. This is the root QL class encompassing built-in functionality. |
BuiltInOperationArrayExtent | A C++ |
BuiltInOperationArrayRank | A C++ |
BuiltInOperationBuiltInAddressOf | A clang |
BuiltInOperationBuiltInConvertVector | A clang |
BuiltInOperationBuiltInIsCorrespondingMember | A C++ |
BuiltInOperationBuiltInIsPointerInterconvertible | A C++ |
BuiltInOperationBuiltInOffsetOf | A C/C++ |
BuiltInOperationBuiltInShuffle | A gcc |
BuiltInOperationBuiltInShuffleVector | A clang |
BuiltInOperationBuiltInTypesCompatibleP | A C++ |
BuiltInOperationHasAssign | A C++ |
BuiltInOperationHasAttribute | A C++ |
BuiltInOperationHasCopy | A C++ |
BuiltInOperationHasFinalizer | The |
BuiltInOperationHasNoThrowAssign | A C++ |
BuiltInOperationHasNoThrowConstructor | A C++ |
BuiltInOperationHasNoThrowCopy | A C++ |
BuiltInOperationHasNothrowMoveAssign | The |
BuiltInOperationHasTrivialAssign | A C++ |
BuiltInOperationHasTrivialConstructor | A C++ |
BuiltInOperationHasTrivialCopy | A C++ |
BuiltInOperationHasTrivialDestructor | A C++ |
BuiltInOperationHasTrivialMoveAssign | The |
BuiltInOperationHasTrivialMoveConstructor | The |
BuiltInOperationHasUniqueObjectRepresentations | A C++ |
BuiltInOperationHasUserDestructor | A C++ |
BuiltInOperationHasVirtualDestructor | A C++ |
BuiltInOperationIsAbstract | A C++ |
BuiltInOperationIsAggregate | A C++ |
BuiltInOperationIsArithmetic | A C++ |
BuiltInOperationIsArray | A C++ |
BuiltInOperationIsAssignable | The |
BuiltInOperationIsAssignableNoPreconditionCheck | The |
BuiltInOperationIsBaseOf | A C++ |
BuiltInOperationIsBoundedArray | A C++ |
BuiltInOperationIsClass | A C++ |
BuiltInOperationIsCompleteType | A C++ |
BuiltInOperationIsCompound | A C++ |
BuiltInOperationIsConst | A C++ |
BuiltInOperationIsConstructible | The |
BuiltInOperationIsConvertible | A C++ |
BuiltInOperationIsConvertibleTo | A C++ |
BuiltInOperationIsCorrespondingMember | A C++ |
BuiltInOperationIsDelegate | The |
BuiltInOperationIsDestructible | The |
BuiltInOperationIsEmpty | A C++ |
BuiltInOperationIsEnum | A C++ |
BuiltInOperationIsFinal | The |
BuiltInOperationIsFloatingPoint | A C++ |
BuiltInOperationIsFunction | A C++ |
BuiltInOperationIsFundamental | A C++ |
BuiltInOperationIsIntegral | A C++ |
BuiltInOperationIsInterfaceClass | The |
BuiltInOperationIsLayoutCompatible | A C++ |
BuiltInOperationIsLiteralType | The |
BuiltInOperationIsLvalueReference | A C++ |
BuiltInOperationIsMemberFunctionPointer | A C++ |
BuiltInOperationIsMemberObjectPointer | A C++ |
BuiltInOperationIsMemberPointer | A C++ |
BuiltInOperationIsNothrowAssignable | The |
BuiltInOperationIsNothrowConstructible | The |
BuiltInOperationIsNothrowConvertible | A C++ |
BuiltInOperationIsNothrowDestructible | The |
BuiltInOperationIsObject | A C++ |
BuiltInOperationIsPod | A C++ |
BuiltInOperationIsPointer | A C++ |
BuiltInOperationIsPointerInterconvertibleBaseOf | A C++ |
BuiltInOperationIsPointerInterconvertibleWithClass | A C++ |
BuiltInOperationIsPolymorphic | A C++ |
BuiltInOperationIsRefArray | The |
BuiltInOperationIsRefClass | The |
BuiltInOperationIsReference | A C++ |
BuiltInOperationIsReferenceable | A C++ |
BuiltInOperationIsRvalueReference | A C++ |
BuiltInOperationIsSame | A C++ |
BuiltInOperationIsSameAs | A C++ |
BuiltInOperationIsScalar | A C++ |
BuiltInOperationIsScopedEnum | A C++ |
BuiltInOperationIsSealed | The |
BuiltInOperationIsSigned | A C++ |
BuiltInOperationIsSimpleValueClass | The |
BuiltInOperationIsStandardLayout | The |
BuiltInOperationIsTriviallyAssignable | The |
BuiltInOperationIsTriviallyConstructible | The |
BuiltInOperationIsTriviallyCopyAssignable | The |
BuiltInOperationIsTriviallyCopyable | The |
BuiltInOperationIsTriviallyDestructible | The |
BuiltInOperationIsTriviallyEqualityComparable | A C++ |
BuiltInOperationIsTriviallyRelocatable | A C++ |
BuiltInOperationIsUnboundedArray | A C++ |
BuiltInOperationIsUnion | A C++ |
BuiltInOperationIsUnsigned | A C++ |
BuiltInOperationIsValidWinRtType | The |
BuiltInOperationIsValueClass | The |
BuiltInOperationIsVoid | A C++ |
BuiltInOperationIsVolatile | A C++ |
BuiltInOperationIsWinClass | The |
BuiltInOperationIsWinInterface | The |
BuiltInOperationReferenceBindsToTemporary | A C++ |
BuiltInOperationReferenceConstructsFromTemporary | A C++ |
BuiltInOperationReferenceCovertsFromTemporary | A C++ |
BuiltInType | A C/C++ built-in primitive type (int, float, void, and so on). See 4.1.1. In the following example, |
BuiltInVarArg | A C/C++ |
BuiltInVarArgCopy | A C/C++ |
BuiltInVarArgsEnd | A C/C++ |
BuiltInVarArgsList | The |
BuiltInVarArgsStart | A C/C++ |
C11GenericExpr | A node representing a C11 |
CFile | A C source file, as determined by file extension. |
CStyleCast | A cast expression in C, or a C-style cast expression in C++. |
CStyleComment | A C style comment (one which starts with |
CTypedefType | A traditional C/C++ typedef type. See 4.9.1. For example the type declared in the following code: |
Call | A C/C++ call. |
Cast | A C/C++ cast expression. |
CatchAnyBlock | A C++ ‘catch-any block’, for example the third block in the following code: |
CatchBlock | A ‘catch block’, for example the second and third blocks in the following code: |
Char16Type | The C/C++ |
Char32Type | The C/C++ |
Char8Type | The C/C++ |
CharLiteral | A character literal. For example: |
CharPointerType | The C/C++ |
CharType | The C/C++ character types. See 4.3. This includes the |
Class | A class type [N4140 9]. |
ClassAggregateLiteral | A C/C++ aggregate literal that initializes a |
ClassDerivation | A class derivation, for example the |
ClassTemplateInstantiation | A class that is an instantiation of a template. For example in the following code there is a |
ClassTemplateSpecialization | A specialization of a class template (this may be a full or partial template specialization - see |
Closure | A class written by the compiler to be the type of a C++11 lambda expression. For example the variable |
CoAwaitExpr | A C/C++ |
CoReturnStmt | A C/C++ |
CoYieldExpr | A C/C++ |
CommaExpr | A C/C++ comma expression. |
Comment | A C/C++ comment. For example the comment in the following code: |
ComparisonOperation | A C/C++ comparison operation, that is, either an equality operation or a relational operation. |
Compilation | An invocation of the compiler. Note that more than one file may be compiled per invocation. For example, this command compiles three source files: |
CompilerCatastrophe | A compiler error that prevents compilation from continuing. |
CompilerDiscretionaryError | A compiler-generated discretionary error (a compile-time error that may be suppressed). |
CompilerError | A compiler error message. |
CompilerRemark | A compiler-generated remark (milder than a warning). |
CompilerWarning | A compiler-generated warning. |
ComplementExpr | A C/C++ complement expression. |
ComplexDomain | The type domain of a floating-point type that represents a complex number. |
ComplexNumberType | A floating-point type representing a complex number. |
CompoundRequirementExpr | A C++ compound requirement in a requires expression. |
ComputedGotoStmt | A ‘goto’ statement whose target is computed by a non-constant expression (a non-standard extension to C/C++). |
ConceptIdExpr | A C++ concept id expression. |
ConditionDeclExpr | A C++ variable declaration inside the conditional expression of a |
ConditionalExpr | A C/C++ conditional ternary expression. |
ConditionalStmt | A C/C++ conditional statement, that is, either an ‘if’ statement or a ‘switch’ statement. |
ConjugationExpr | A C/C++ GNU conjugation expression. It operates on |
ConstCast | A C++ |
ConstMemberFunction | A const C++ member function [N4140 9.3.1/4]. A const function has the |
ConstexprIfStmt | A C/C++ ‘constexpr if’ statement. For example, the |
Constructor | A C++ constructor [N4140 12.1]. For example the function |
ConstructorBaseInit | A call to a constructor of a base class as part of a constructor’s initializer list or compiler-generated actions. |
ConstructorCall | A call to a constructor. |
ConstructorDelegationInit | A call to a constructor of the same class as part of a constructor’s initializer list, which delegates object construction (C++11 only). |
ConstructorDirectInit | A call to a constructor of a direct non-virtual base class as part of a constructor’s initializer list or compiler-generated actions. |
ConstructorFieldInit | An initialization of a member variable performed as part of a constructor’s explicit initializer list or implicit actions. In the example below, member variable |
ConstructorInit | An initialization of a base class or member variable performed as part of a constructor’s explicit initializer list or implicit actions. |
ConstructorVirtualInit | A call to a constructor of a virtual base class as part of a constructor’s initializer list or compiler-generated actions. |
Container | A file or folder. |
ContinueStmt | A C/C++ ‘continue’ statement. |
ControlFlowNode | A control-flow node is either a statement or an expression; in addition, functions are control-flow nodes representing the exit point of the function. The graph represents one possible evaluation order out of all the ones the compiler might have picked. |
ControlFlowNodeBase | An element that is convertible to |
ControlStructure | A C/C++ control structure, that is, either a conditional statement or a loop. |
Conversion | A C/C++ cast expression or similar unary expression that doesn’t affect the logical value of its operand. |
ConversionOperator | A C++ conversion operator [N4140 12.3.2]. For example the function |
CopyAssignmentOperator | A C++ copy assignment operator [N4140 12.8]. For example the function |
CopyConstructor | A C++ copy constructor [N4140 12.8]. For example the function |
CppFile | A C++ source file, as determined by file extension. |
CppStyleComment | A CPP style comment. For example the comment in the following code: |
CrementOperation | A C/C++ |
DataflowAnnotation | INTERNAL: Do not use. A string that identifies a data flow analysis along with a set of member predicates that implement this analysis. |
DatasizeofExprOperator | A C++ |
DatasizeofOperator | A C++ |
DatasizeofTypeOperator | A C++ |
DeallocationExpr | An deallocation expression such as call to |
DeallocationFunction | A deallocation function such as |
Decimal128Type | The GNU C |
Decimal32Type | The GNU C |
Decimal64Type | The GNU C |
DecimalFloatingPointType | A floating-point type whose representation is base 10. |
DeclStmt | A C/C++ ‘declaration’ statement. |
Declaration | A C/C++ declaration: for example, a variable declaration, a type declaration, or a function declaration. |
DeclarationEntry | A C/C++ declaration entry. For example the following code contains five declaration entries: |
Declspec | An attribute introduced by Microsoft’s |
Decltype | An instance of the C++11 |
DecrementOperation | A C/C++ |
DeductionGuide | A C++ deduction guide [N4659 17.9]. |
Def | A definition of a stack variable. |
DefOrUse | Utility class: A definition or use of a stack variable. |
DefaultCase | A C/C++ ‘default case’ statement. |
DefaultMutexType | A class or struct type that has both a lock and an unlock function candidate, and is therefore a mutex. |
DeleteArrayExpr | A C++ |
DeleteExpr | A C++ |
DeleteOrDeleteArrayExpr | A C++ |
DerivedClassConversion | A conversion from a pointer or glvalue to a base class to a pointer or glvalue to a direct derived class. |
DerivedType | A C/C++ derived type. |
Destructor | A C++ destructor [N4140 12.4]. For example the function |
DestructorBaseDestruction | A call to a destructor of a base class as part of a destructor’s compiler-generated actions. |
DestructorCall | A call to a destructor. |
DestructorDestruction | A call to a destructor of a base class or field as part of a destructor’s compiler-generated actions. |
DestructorDirectDestruction | A call to a destructor of a direct non-virtual base class as part of a destructor’s compiler-generated actions. |
DestructorFieldDestruction | A destruction of a member variable performed as part of a destructor’s compiler-generated actions. |
DestructorVirtualDestruction | A call to a destructor of a direct virtual base class as part of a destructor’s compiler-generated actions. |
Diagnostic | A compiler-generated error, warning or remark. |
DivExpr | A C/C++ divide expression. |
DoStmt | A C/C++ ‘do’ statement. |
DotFieldAccess | A field access of the form |
DoubleType | The C/C++ |
DynamicCast | A C++ |
EQExpr | A C/C++ equal expression. |
Element | A C/C++ element. This class is the base class for all C/C++ elements, such as functions, classes, expressions, and so on. |
ElementBase | A C/C++ element with no member predicates other than |
EmptyStmt | A C/C++ ‘empty’ statement. |
EntryBasicBlock | An entry point of a function. |
Enum | A C/C++ enum [N4140 7.2]. For example, the types |
EnumConstant | A C/C++ enumerator [N4140 7.2], also known as an enumeration constant. |
EnumConstantAccess | A C/C++ |
EnumSwitch | A C/C++ ‘switch’ statement where the controlling expression has an enum type. |
EqualityOperation | A C/C++ equality operation, that is, either “==” or “!=”. |
ErroneousType | An erroneous type. This type has no corresponding C/C++ syntax. |
ErrorExpr | A C/C++ expression that could not be resolved, or that can no longer be represented due to a database upgrade or downgrade. |
ExitBasicBlock | A basic block whose last node is the exit point of a function. |
Expr | A C/C++ expression. |
ExprCall | A C/C++ call which is performed through a function pointer. |
ExprInVoidContext | An expression that occurs in a void context, i.e. either as the toplevel expression of an expression statement or on the left hand side of the comma operator. |
ExprStmt | A C/C++ ‘expression’ statement. |
FastestMinimumWidthIntegralType | A C/C++ minimum-width numeric type, representing the fastest integer type with a width of at least |
Field | A C structure member or C++ non-static member variable. For example the member variable |
FieldAccess | A C/C++ field access expression. For example the accesses to |
File | A file that was observed on disk during the build process. |
FixedWidthEnumType | An enum type based on a fixed-width integer type. For instance, |
FixedWidthIntegralType | A C/C++ fixed-width numeric type, such as |
Float128Type | The GNU C |
FloatType | The C/C++ |
FloatingPointConversion | A conversion from one floating point type. |
FloatingPointToIntegralConversion | A conversion from a floating point type to an integral or enum type. |
FloatingPointType | The C/C++ floating point types. See 4.5. This includes |
FoldExpr | A C++17 fold expression. This will only appear in an uninstantiated template; any instantiations of the template will instead contain the sequence of expressions given by expanding the fold. |
Folder | A folder that was observed on disk during the build process. |
ForStmt | A C/C++ ‘for’ statement. |
FormatAttribute | A GNU |
FormatLiteral | A class to represent format strings that occur as arguments to invocations of formatting functions. |
FormattingFunction | A standard library function that uses a |
FormattingFunctionCall | A call to one of the formatting functions. |
FriendDecl | A C++ friend declaration [N4140 11.3]. For example the two friend declarations in class |
FullClassTemplateSpecialization | A full specialization of a class template. For example |
Function | A C/C++ function [N4140 8.3.5]. Both member functions and non-member functions are included. For example the function |
FunctionAccess | A C/C++ function access expression. For example the access to |
FunctionCall | A C/C++ function call where the name of the target function is known at compile-time. |
FunctionDeclarationEntry | A particular declaration or definition of a C/C++ function. For example the declaration and definition of |
FunctionInput | An input to a function. This can be: - The value of one of the function’s parameters - The value pointed to by one of function’s pointer or reference parameters - The value of the function’s |
FunctionOutput | An output from a function. This can be: - The value pointed to by one of function’s pointer or reference parameters - The value pointed to by the function’s |
FunctionPointerIshType | A C/C++ pointer to a function, a C++ function reference, or a clang/Apple block. |
FunctionPointerType | A C/C++ pointer to a function. See 7.7. |
FunctionReferenceType | A C++ reference to a function. |
FunctionSpecifier | A C/C++ function specifier: |
FunctionTemplateInstantiation | A function that is an instantiation of a template. For example the instantiation |
FunctionTemplateSpecialization | An explicit specialization of a C++ function template. For example the function |
FunctionTryStmt | A C++ ‘function try’ statement. |
GEExpr | A C/C++ greater than or equal expression. |
GNUVectorType | A GNU/Clang vector type. |
GTExpr | A C/C++ greater than expression. |
GlobalNamespace | The C/C++ global namespace. |
GlobalOrNamespaceVariable | A C/C++ variable which has global scope or namespace scope. For example the variables |
GlobalVariable | A C/C++ variable which has global scope. For example the variable |
GlvalueConversion | A conversion of a glvalue from one type to another. The conversion does not modify the address of the glvalue. For glvalue conversions involving base and derived classes, see |
GnuAttribute | An attribute introduced by GNU’s |
GotoStmt | A C/C++ ‘goto’ statement which jumps to a label. |
Handler | A handler for a ‘try’ statement. |
HeaderFile | A C/C++ header file, as determined (mainly) by file extension. |
HeuristicAllocationExpr | An expression that might allocate memory. |
HeuristicAllocationFunction | An function that might allocate memory. |
HexLiteral | A hexadecimal literal. |
IfStmt | A C/C++ ‘if’ statement. For example, the |
ImaginaryDivExpr | A C/C++ divide expression with an imaginary number. This is specific to C99 and later. |
ImaginaryDomain | The type domain of a floating-point type that represents an imaginary number. |
ImaginaryMulExpr | A C/C++ multiply expression with an imaginary number. This is specific to C99 and later. |
ImaginaryNumberType | A floating-point type representing an imaginary number. |
ImaginaryPartExpr | A C/C++ GNU imaginary part expression. It operates on |
ImaginaryRealAddExpr | A C/C++ add expression with an imaginary term and a real term. This is specific to C99 and later. |
ImaginaryRealSubExpr | A C/C++ subtract expression with an imaginary term and a real term. This is specific to C99 and later. |
ImplicitConversionFunction | A function that defines an implicit conversion. |
ImplicitThisFieldAccess | A field access of a field of |
Import | A |
InParameter | The input value of a parameter. |
InParameterDeref | The input value pointed to by a pointer parameter to a function, or the input value referred to by a reference parameter to a function. |
InQualifierAddress | The input value of the |
InQualifierObject | The input value pointed to by the |
InReturnValueDeref | The input value pointed to by the return value of a function, if the function returns a pointer, or the input value referred to by the return value of a function, if the function returns a reference. |
Include | A C/C++ |
IncludeNext | A |
IncrementOperation | A C/C++ |
InheritanceConversion | A conversion between two pointers or _glvalue_s related by inheritance. |
Initializer | A C/C++ declaration initializer. For example the initializers |
Int128Type | The GNU C __int128 primitive types. They are not part of standard C/C++. |
Int16_t | The C/C++ |
Int32_t | The C/C++ |
Int64_t | The C/C++ |
Int8_t | The C/C++ |
IntPointerType | The C/C++ |
IntType | The C/C++ integer types. See 4.4. This includes |
Int_fast16_t | The C/C++ |
Int_fast32_t | The C/C++ |
Int_fast64_t | The C/C++ |
Int_fast8_t | The C/C++ |
Int_least16_t | The C/C++ |
Int_least32_t | The C/C++ |
Int_least64_t | The C/C++ |
Int_least8_t | The C/C++ |
IntegralConversion | A conversion from one integral or enum type to another. |
IntegralOrEnumType | A C/C++ integral or |
IntegralToFloatingPointConversion | A conversion from an integral or enum type to a floating point type. |
IntegralToPointerConversion | A conversion from an integral or enum type to a pointer type. |
IntegralType | The C/C++ integral types. See 4.1.1. These are types that are represented as integers of varying sizes. Both |
Intmax_t | The C/C++ |
JumpStmt | A C/C++ jump statement. |
LEExpr | A C/C++ less than or equal expression. |
LShiftExpr | A C/C++ left shift expression. |
LTExpr | A C/C++ less than expression. |
LValueReferenceType | A C++11 lvalue reference type (e.g. |
LabelLiteral | A label literal, that is, a use of the ‘&&’ operator to take the address of a label for use in a computed goto statement. This is a non-standard C/C++ extension. |
LabelStmt | A C/C++ ‘label’ statement. |
LambdaCapture | Information about a value captured as part of a lambda expression. For example in the following code, information about |
LambdaExpression | A C++11 lambda expression, for example the expression initializing |
LinkTarget | A linker call during the build process, typically resulting in an executable or a shared library. |
Literal | A C/C++ literal. |
LocalClass | A class, struct or union that is directly enclosed by a function. For example the |
LocalEnum | A C/C++ enum that is directly enclosed by a function. For example, the type |
LocalScopeVariable | A C/C++ variable with block scope [N4140 3.3.3]. In other words, a local variable or a function parameter. For example, the variables |
LocalStruct | A C/C++ struct that is directly enclosed by a function. For example, the type |
LocalTypedefType | A C++ |
LocalUnion | A C/C++ union that is directly enclosed by a function. For example, the type |
LocalVariable | A C/C++ local variable. In other words, any variable that has block scope [N4140 3.3.3], but is not a parameter of a |
Locatable | A C/C++ element that has a location in a file |
Location | A location of a C/C++ artifact. |
LogicalAndExpr | A C/C++ logical AND expression. |
LogicalOrExpr | A C/C++ logical OR expression. |
LongDoubleType | The C/C++ |
LongLongType | The C/C++ long long types. See 4.4. This includes |
LongType | The C/C++ long types. See 4.4. This includes |
Loop | A C/C++ loop, that is, either a ‘while’ loop, a ‘for’ loop, or a ‘do’ loop. |
LoopControlVariable | A C/C++ variable which is used within the initialization, condition, or update expression of a ‘for’ loop. |
LoopCounter | A C/C++ variable which is used within the condition of a ‘for’ loop, and mutated within the update expression of the same ‘for’ loop. |
Macro | A macro. For example, the macro |
MacroAccess | A macro access. For example: |
MacroInvocation | A macro invocation (macro access that is expanded). For example: |
MaxExpr | A C/C++ GNU max expression. |
MaximumWidthIntegralType | A C/C++ maximum-width numeric type, either |
MemberFunction | A C++ function declared as a member of a class [N4140 9.3]. This includes static member functions. For example the functions |
MemberVariable | A C structure member or C++ member variable. For example the member variables |
MetricClass | A wrapper that provides metrics for a C++ class. |
MetricFile | A wrapper that provides metrics for a C/C++ file. |
MetricFunction | A wrapper that provides metrics for a C/C++ function. |
MetricNamespace | A wrapper that provides metrics for a C/C++ namespace. |
MicrosoftAttribute | An attribute introduced by Microsoft’s “[name]” syntax, for example “[SA_Pre(Deref=1,Access=SA_Read)]”. |
MicrosoftInt16Type | The type that the Microsoft C/C++ |
MicrosoftInt32Type | The type that the Microsoft C/C++ |
MicrosoftInt64Type | The type that the Microsoft C/C++ |
MicrosoftInt8Type | The type that the Microsoft C/C++ |
MicrosoftTryExceptStmt | A structured exception handling ‘try except’ statement, for example the |
MicrosoftTryFinallyStmt | A structured exception handling ‘try finally’ statement, for example the |
MicrosoftTryStmt | A structured exception handling ‘try’ statement, that is, a |
MinExpr | A C/C++ GNU min expression. |
MinimumWidthIntegralType | A C/C++ minimum-width numeric type, such as |
MoveAssignmentOperator | A C++ move assignment operator [N4140 12.8]. For example the function |
MoveConstructor | A C++ move constructor [N4140 12.8]. For example the function |
MulExpr | A C/C++ multiply expression. |
MutexType | A type that acts as a mutex. This class is extended below and and may be extended in |
NEExpr | A C/C++ not equal expression. |
NULL | A use of the NULL macro. |
NameQualifiableElement | A C++ element that can be qualified with a name. This is in practice either an expression or a name qualifier. For example, there are two name-qualifiable elements in the following code, the expression |
NameQualifier | A C++ name qualifier, for example |
NameQualifyingElement | A C++ element that can qualify a name. For example, the namespaces |
Namespace | A C++ namespace. For example the (single) namespace |
NamespaceDeclarationEntry | A declaration of (part of) a C++ namespace. This corresponds to a single |
NamespaceVariable | A C/C++ variable which has namespace scope. For example the variable |
NestedClass | A class, struct or union that is declared within another class. For example the struct |
NestedEnum | A C/C++ enum that is declared within a class/struct. For example, the type |
NestedRequirementExpr | A C++ nested requirement in a requires expression. |
NestedStruct | A C/C++ nested struct. See 11.12. For example, the type |
NestedTypedefType | A C++ |
NestedUnion | A C/C++ nested union. For example, the type |
NewArrayExpr | A C++ |
NewExpr | A C++ |
NewOrNewArrayExpr | A C++ |
NoArgConstructor | A C++ constructor that takes no arguments (‘default’ constructor). This is the constructor that is invoked when no initializer is given. For example the function |
NoExceptExpr | A C++11 |
NonTypeTemplateParameter | A C++ non-type template parameter. |
NotExpr | A C/C++ logical not expression. |
NullMacro | A macro defining NULL. |
NullPointerType | The (primitive) type of the C++11 |
NullValue | A C/C++ literal whose value is considered null. |
NullnessAnnotation | INTERNAL: Do not use. Two analyses relating to nullness: |
OctalLiteral | An octal literal. For example: |
Operation | A C/C++ operation. |
Operator | A C++ user-defined operator [N4140 13.5]. |
OperatorDeleteDeallocationFunction | An |
OperatorNewAllocationFunction | An |
Options | Default predicates that specify information about the behavior of the program being analyzed. |
OutParameterDeref | The output value pointed to by a pointer parameter to a function, or the output value referred to by a reference parameter to a function. |
OutQualifierObject | The output value pointed to by the |
OutReturnValue | The value returned by a function. |
OutReturnValueDeref | The output value pointed to by the return value of a function, if the function returns a pointer, or the output value referred to by the return value of a function, if the function returns a reference. |
OverloadedArrayExpr | An instance of a user-defined binary |
OverloadedPointerDereferenceExpr | An instance of a user-defined unary |
OverloadedPointerDereferenceFunction | A user-defined unary |
ParamAccessForType | An access to a parameter of a function signature for the purposes of a |
Parameter | A C/C++ function parameter, catch block parameter, or requires expression parameter. For example the function parameter |
ParameterDeclarationEntry | A parameter as described within a particular declaration or definition of a C/C++ function. For example the declaration of |
ParameterDef | A definition of a parameter. |
ParameterIndex | An |
ParenthesisExpr | A C/C++ parenthesis expression. |
ParenthesizedBracedInitializerList | A C++11 parenthesized braced initializer list within a template. |
PartialClassTemplateSpecialization | A partial specialization of a class template. For example |
PartialFlowFunction | A function that may update part of a |
PlainCharType | The C/C++ |
PointerAddExpr | A C/C++ pointer add expression. |
PointerArithmeticOperation | A C/C++ pointer arithmetic operation. |
PointerConversion | A conversion from one pointer type to another. |
PointerDereferenceExpr | An instance of the built-in unary |
PointerDiffExpr | A C/C++ pointer difference expression. |
PointerFieldAccess | A field access whose qualifier is a pointer to a class, struct or union. These typically take the form |
PointerSubExpr | A C/C++ pointer subtract expression. |
PointerToFieldLiteral | A C++ pointer to non-static data member literal. For example, |
PointerToIntegralConversion | A conversion from a pointer type to an integral or enum type. |
PointerToMemberBaseClassConversion | A conversion from a pointer-to-member of a derived class to a pointer-to-member of an immediate base class. |
PointerToMemberConversion | A conversion from one pointer-to-member type to another. |
PointerToMemberDerivedClassConversion | A conversion from a pointer-to-member of a base class to a pointer-to-member of an immediate derived class. |
PointerToMemberType | A C++ pointer to data member. See 15.5. |
PointerType | A C/C++ pointer type. See 4.9.1. |
PolymorphicClass | A C++ class or structure which (possibly by inheritance) has at least one virtual method. |
PostfixCrementOperation | A C/C++ |
PostfixDecrExpr | A C/C++ postfix decrement expression, as in |
PostfixIncrExpr | A C/C++ postfix increment expression, as in |
PrefixCrementOperation | A C/C++ |
PrefixDecrExpr | A C/C++ prefix decrement expression, as in |
PrefixIncrExpr | A C/C++ prefix increment expression, as in |
PreprocessorBranch | A C/C++ preprocessor branching directive: |
PreprocessorBranchDirective | A C/C++ preprocessor branch related directive: |
PreprocessorDirective | A C/C++ preprocessor directive. For example each of the following lines of code contains a |
PreprocessorElif | A C/C++ preprocessor |
PreprocessorElse | A C/C++ preprocessor |
PreprocessorEndif | A C/C++ preprocessor |
PreprocessorError | A C/C++ preprocessor |
PreprocessorIf | A C/C++ preprocessor |
PreprocessorIfdef | A C/C++ preprocessor |
PreprocessorIfndef | A C/C++ preprocessor |
PreprocessorLine | A C/C++ preprocessor |
PreprocessorPragma | A C/C++ preprocessor |
PreprocessorUndef | A C/C++ preprocessor |
PreprocessorWarning | A C/C++ preprocessor |
PrintfFormatAttribute | |
ProxyClass | The proxy class (where needed) associated with a template parameter, as in the following code: |
PrvalueAdjustmentConversion | The adjustment of the type of a class prvalue. Most commonly seen in code similar to: |
Ptrdiff_t | The C/C++ |
PureVirtualFunction | A C++ pure virtual function [N4140 10.4]. For example the first function called |
Qualifier | An expression that is used to qualify some other expression. |
RShiftExpr | A C/C++ right shift expression. |
RValueReferenceType | A C++11 rvalue reference type (e.g., |
RangeBasedForStmt | A C++11 range-based ‘for’ statement. |
RangeSsa | The SSA logic comes in two versions: the standard SSA and range-analysis RangeSSA. This class provides the range-analysis SSA logic. |
RangeSsaDefinition | A definition of one or more SSA variables, including phi node definitions. An SSA variable is effectively the pair of a definition and the (non-SSA) variable that it defines. Note definitions and uses can be coincident, due to the presence of parameter definitions and phi nodes. |
ReThrowExpr | A C++ |
RealDomain | The type domain of a floating-point type that represents a real number. |
RealImaginaryAddExpr | A C/C++ add expression with a real term and an imaginary term. This is specific to C99 and later. |
RealImaginarySubExpr | A C/C++ subtract expression with a real term and an imaginary term. This is specific to C99 and later. |
RealNumberType | A floating-point type representing a real number. |
RealPartExpr | A C/C++ GNU real part expression. It operates on |
ReferenceDereferenceExpr | An implicit conversion from type |
ReferenceFieldAccess | A field access of the form |
ReferenceToExpr | An implicit conversion from type |
ReferenceType | A C++ reference type. See 4.9.1. |
ReinterpretCast | A C++ |
RelationalOperation | A C/C++ relational operation, that is, one of |
RemExpr | A C/C++ remainder expression. |
RequirementExpr | A C++ requirement in a requires expression. |
RequiresExpr | A C++ requires expression. |
ReturnStmt | A C/C++ ‘return’ statement. |
ReuseExpr | An expression representing the re-use of another expression. |
RoutineType | A C/C++ routine type. Conceptually, this is what results from stripping away the pointer from a function pointer type. It can also occur in C++ code, for example the base type of |
ScopedEnum | A C++ scoped enum, that is, an enum whose constants must be qualified with the name of the enum. For example, the type |
SemanticStackVariable | A non-static local variable or parameter that is not part of an uninstantiated template. Uninstantiated templates are purely syntax, and only on instantiation will they be complete with information about types, conversions, call targets, etc. For example in the following code, the variables |
ShortType | The C/C++ short types. See 4.3. This includes |
SignedCharType | The C/C++ |
SimpleRequirementExpr | A C++ simple requirement in a requires expression. |
Size_t | The C/C++ |
SizeofExprOperator | A C/C++ sizeof expression whose operand is an expression. |
SizeofOperator | A C/C++ sizeof expression. |
SizeofPackOperator | A C++11 |
SizeofTypeOperator | A C/C++ sizeof expression whose operand is a type name. |
Snprintf | The standard functions |
SpaceshipExpr | A C++ three-way comparison operation, also known as the spaceship operation. This is specific to C++20 and later. |
SpecialNameQualifyingElement | A special name-qualifying element. For example: |
SpecifiedType | A type with specifiers. |
Specifier | A C/C++ specifier: |
SsaDefinition | A definition of one or more SSA variables, including phi node definitions. An SSA variable, as defined in the literature, is effectively the pair of an |
SsaHelper | Common SSA logic for standard SSA and range-analysis SSA. |
Ssize_t | The C/C++ |
StackVariable | A C/C++ variable with automatic storage duration. In other words, a function parameter or a local variable that is not static or thread-local. For example, the variables |
StandardSsa | The SSA logic comes in two versions: the standard SSA and range-analysis RangeSSA. This class provides the standard SSA logic. |
StaticAssert | A C++11 |
StaticCast | A C++ |
StaticLocalVariable | A C++ local variable declared as |
StaticStorageDurationVariable | A variable whose contents always have static storage duration. This can be a global variable, a namespace variable, a static local variable, or a static member variable. |
StdAttribute | An attribute introduced by the C++11 standard |
StdNamespace | The C++ |
Stmt | A C/C++ statement. |
StmtExpr | A compound statement enclosed in parentheses used as an expression (a GNU extension to C/C++). In the example below, |
StmtParent | An element that is the parent of a statement in the C/C++ AST. |
StorageClassSpecifier | A C/C++ storage class specifier: |
StringLiteral | A string literal. For example: |
StrlenCall | A call to a strlen like function. |
Struct | A C/C++ structure or union. For example, the types |
StructLikeClass | A class that is either a |
SubExpr | A C/C++ subtract expression. |
SwitchCase | A C/C++ ‘switch case’ statement. |
SwitchStmt | A C/C++ ‘switch’ statement. |
TaintFunction | A library function for which a taint-tracking library should propagate taint from a parameter or qualifier to an output buffer, return value, or qualifier. |
TemplateClass | A class template (this class also finds partial specializations of class templates). For example in the following code there is a |
TemplateFunction | A C++ function which has a non-empty template argument list. For example the function |
TemplateParameterBase | A C++ template parameter. |
TemplateTemplateParameter | A C++ template template parameter. |
TemplateVariable | A C++14 variable template. For example, in the following code the variable template |
TemporaryObjectExpr | A node representing a temporary object created as part of an expression. |
TextLiteral | A character literal or a string literal. |
ThisExpr | A C++ |
ThrowExpr | A C++ |
TopLevelFunction | A C/C++ non-member function (a function that is not a member of any class). For example, in the following code, |
TryStmt | A C/C++ ‘try’ statement. |
Type | A C/C++ type. |
TypeBoundsAnalysis | The estimation comes from rough bounds just based on the type (e.g. |
TypeDeclarationEntry | A particular definition or forward declaration of a C/C++ user-defined type. |
TypeDomain | The type domain of a floating-point type. One of |
TypeMention | A source code location referring to a user-defined type. |
TypeName | An access to a type. This occurs in certain contexts where a built-in works on types directly rather than variables, expressions etc. For example the reference to |
TypeRequirementExpr | A C++ type requirement in a requires expression. |
TypeTemplateParameter | A C++ |
TypedefType | A C/C++ typedef type. See 4.9.1. For example the types declared on each line of the following code: |
TypeidOperator | A C++ |
UInt16_t | The C/C++ |
UInt32_t | The C/C++ |
UInt64_t | The C/C++ |
UInt8_t | The C/C++ |
UInt_fast16_t | The C/C++ |
UInt_fast32_t | The C/C++ |
UInt_fast64_t | The C/C++ |
UInt_fast8_t | The C/C++ |
UInt_least16_t | The C/C++ |
UInt_least32_t | The C/C++ |
UInt_least64_t | The C/C++ |
UInt_least8_t | The C/C++ |
Uintmax_t | The C/C++ |
UnaryArithmeticOperation | A C/C++ unary arithmetic operation. |
UnaryBitwiseOperation | A C/C++ unary bitwise operation. |
UnaryLogicalOperation | A C/C++ unary logical operation. |
UnaryMinusExpr | A C/C++ unary minus expression. |
UnaryOperation | A C/C++ unary operation. |
UnaryPlusExpr | A C/C++ unary plus expression. |
Union | A C/C++ union. See C.8.2. For example, the type |
UnknownDefaultLocation | A dummy location which is used when something doesn’t have a location in the source code but needs to have a |
UnknownExprLocation | A dummy location which is used when an expression doesn’t have a location in the source code but needs to have a |
UnknownLocation | A dummy location which is used when something doesn’t have a location in the source code but needs to have a |
UnknownStmtLocation | A dummy location which is used when a statement doesn’t have a location in the source code but needs to have a |
UnknownType | The unknown type. This type has no corresponding C/C++ syntax. |
UnsignedCharType | The C/C++ |
UnspecifiedEstimateReason | No particular reason given. This is currently used for backward compatibility so that classes derived from BufferWrite and overriding |
Use | A use of a stack variable. |
UserDefinedFormattingFunction | A function not in the standard library which takes a |
UserDefinedLiteral | A C++ user-defined literal [N4140 13.5.8]. |
UserType | A C/C++ user-defined type. Examples include |
UsingAliasTypedefType | A using alias C++ typedef type. For example the type declared in the following code: |
UsingDeclarationEntry | A C++ |
UsingDirectiveEntry | A C++ |
UsingEntry | A C++ |
UsingEnumDeclarationEntry | A C++ |
UuidofOperator | A Microsoft C/C++ |
VacuousDestructorCall | An expression that looks like a destructor call, but has no effect. |
ValueFieldAccess | A field access of the form |
ValueFlowAnalysis | The estimation comes from non trivial bounds found via actual flow analysis. For example |
VarArgsExpr | A C/C++ built-in operation that is used to support functions with variable numbers of arguments. This includes |
Variable | A C/C++ variable. For example, in the following code there are four variables, |
VariableAccess | A C/C++ variable access expression. For example the accesses to |
VariableCall | A C/C++ call which is performed through a variable of function pointer type. |
VariableDeclarationEntry | A particular declaration or definition of a C/C++ variable. For example, in the following code there are six variable declaration entries - two each for |
VariableTemplateInstantiation | A variable that is an instantiation of a template. For example the instantiation |
VectorAggregateLiteral | A C/C++ aggregate literal that initializes a GNU vector type. |
VectorFillOperation | Fill operation on a vector. This is a GNU extension. |
VirtualBaseClass | A class/struct that is the base of some virtual class derivation. For example |
VirtualClassDerivation | A class/struct derivation that is virtual. For example the derivation in the following code is a |
VirtualFunction | A C++ virtual function. For example the two functions called |
VlaDeclStmt | A C99 statement which declares a variable length array. For example the variable length array declaration in the following code: |
VlaDimensionStmt | A C99 statement which computes the size of a single dimension of a variable length array. For example the variable length array dimension ( |
VoidConversion | A conversion to |
VoidPointerType | The C/C++ |
VoidType | The C/C++ |
Wchar_t | The C/C++ |
WhileStmt | A C/C++ ‘while’ statement. |
WideCharType | The C/C++ wide character type. |
WidenedValueFlowAnalysis | The estimation comes from non trivial bounds found via actual flow analysis, but a widening approximation might have been used for variables in loops. For example |
Zero | A C/C++ literal whose value is zero. |
Modules
CastConsistency | INTERNAL: Do not use. Query predicates used to check invariants that should hold for all |
Aliases
TemplateParameter | A C++ |
bb_successor | Successor relation for basic blocks. |