Package-level declarations
Types
Expressions of the form new Type[] that represents the creation of an array, mostly used in combination with a VariableDeclaration.
Expressions of the form floor ... ceiling
Represents the subscription or access of an array of the form array[index], where both array (arrayExpression) and index (subscriptExpression) are of type Expression. CPP can overload operators thus changing semantics of array access.
A binary operation expression, such as "a + b". It consists of a left hand expression (lhs), a right hand expression (rhs) and an operatorCode.
An expression, which calls another function. It has a list of arguments (list of Expressions) and is connected via the INVOKES edge to its FunctionDeclaration.
An expression, which calls another function. It has a list of arguments (list of [ ]s) and is connected via the INVOKES edge to its FunctionDeclaration.
Represents an expression containing a ternary operator: var x = condition ? valueIfTrue : valueIfFalse;
Represents a call to a constructor, usually as an initializer.
An expression, which refers to something which is declared, e.g. a variable. For example, the expression a = b, which itself is a BinaryOperator, contains two [ ]s, one for the variable a and one for variable b * , which have been previously been declared.
Represents one expression. It is used as a base class for multiple different types of expressions. The only constraint is, that each expression has a type.
A list of initializer expressions.
Represents a key / value pair, often found in languages that allow associative arrays or objects, such as Python, Golang or JavaScript.
This expression denotes the usage of an anonymous / lambda function. It connects the inner anonymous function to the user of a lambda function with an expression.
Represents a literal value, meaning the value is fixed and not depending on the runtime evaluation of the expression.
Represents a CallExpression to something which is a member of an object (the base). For example obj.toString(). The type of the callee property should be a MemberExpression (unless a translation error occurred). One notable exception are function pointer calls to class methods in C++, in which the callee is a BinaryOperator with a .* operator.
Represents access to a member of a RecordDeclaration, such as obj.property. Another common use-case is access of a member function (method) as part of the MemberCallExpression.callee property of a MemberCallExpression.
Represents the creation of a new object through the new keyword.
A node where the statement could not be translated by the graph. We use ProblemExpressions whenever the CPG library requires an Expression.
Represets a Type used as an expression for instance when instantiating templates
Models C++ operations that inspect types. These are typeof, sizeof, typeid, alignofand are stored as string in their operator code.
A unary operator expression, involving one expression and an operator, such as a++.