In this chapter:
Nodes describing an "attribute" as it appeared in the source. The following attribute nodes are available:
AttributeNode describing an "attribute" as it appeared in the source. For example: Attribute ArgumentNode describing the arguments of an attribute. For example:
Attribute GroupNode describing an attribute group. For example:
|
Constant value of any type. The following constant nodes are available:
Integer ConstantConstant integer expression. For example:
Real ConstantConstant expression that is a real number. For example: String ConstantConstant string expression. For example:
Template Parameter ConstantA constant template parameter in template class declaration. For example:
bool ConstantA constant value of true or false. enum ConstantAn enum identifier declared in body of enum declaration. For example:
nullptr constantA pointer literal of type std::nullptr_t. Example:
|
Nodes representing various declarations in user code.
Some declaration nodes can be accessed from both their declaration and expressions that reference the declaration. In these cases, the IsDecl
property returns a boolean, allowing users to distinguish between the actual declaration and references to that declaration.
The following declaration nodes are available:
Explicit Template InstanceExplicit template instances for types, functions and variables. For example:
FriendFriend function declaration. For example:
FunctionsFunction declarations. This includes Global and Member functions.. Global FunctionGlobal function declaration. For example:
Member FunctionMember function declaration. For example:
ParameterParameters include parameter and this. ParameterFunction parameter declaration. For example:
ThisParameter usage. For example:
VariablesVariables include global, local, and member variables. Global VariableGlobal Variable. For example:
Local VariableLocal Variable. For example:
Member VariableMember Variable. For example:
|
Includes all types of expression nodes:
AssignmentIncludes all expression nodes used for assignment. ++aPreincrement expression. For example:
--aPre-decrement expression. For example:
a%=bMod-equals operator expression. For example:
a&=bBitwise-and-equals operator expression. For example:
a*=bMultiply-equals operator expression. For example:
a++Post increment expression. For example:
a+=bPlus-equals operator expression. For example:
a--Post decrement expression. For example:
a-=bMinus-equals operator expression. For example:
a/=bDivide-equals operator expression. For example:
a<<=bLeft-shift-equals operator expression. For example:
a=bAssignment operator expression. For example:
a>>=bRight-shift-equals operator expression. For example:
a^=bBitwise-xor-equals operator expression. For example:
a|=bBitwise-or-equals operator expression. For example:
BitwiseExpressions involving non-assignment bitwise operators. a&bBitwise 'and' expression. For example:
a^bBitwise XOR expression. For example:
a|bBitwise 'or' expression. For example:
~aBitwise 'not' expression. For example:
ComparisonExpressions that compare values. a!=bNot-equal operator expression. For example:
a<=b'Less than or equals' expression. For example:
a<b'Less than' expression. For example:
a==bEquality operator expression. For example:
a>=b'Greater than or equals' expression. For example:
a>b'Greater than' expression. For example:
LogicalComparison expressions involving logical operators. !aLogical 'not' expression. For example:
a&&bLogical 'and' expression. For example:
a||bLogical 'or' expression. For example:
MiscellaneousMiscellaneous expressions that don't fit in other categories. &aAddress of expression. For example:
*aDereference expression. For example:
a->bDereference operator expression. For example:
CastExpression that casts from one type to another. For example:
GNU Statement ExpressionA compound statement enclosed in parentheses that may appear as an expression in GNU C. For example:
Initializer ListExpression containing initializations, used in member functions. For example:
OverloadedAn expression using an overloaded operator. For example:
LabelLabel in goto statement. For example:
a(b)Function call expression. For example:
a,bCompound statement list. For example:
a->*bArrow-star expression used in pointers to member functions. For example:
a.*bDot-star expression used in pointers to member functions. For example:
a.bDot operator expression. For example:
a::bObsolete. Formerly used to represent scope reference expressions. Use ScopePrefix instead. a?b:cTernary operator expression. For example:
a[b]Array reference. For example:
asmInlined assembly expression. For example:
deleteDelete operator expression. For example:
ellipses (...)Ellipses expression used for catch parameters. For example:
newNew operator expression. For example:
sizeofSizeof operator expression. For example:
throwThrow operator expression. For example:
typeidTypeid operator expression used for RTTI. For example:
noexceptNoexcept operator. For example:
Vacuous destructor callExplicit destructor call for simple types or classes that do not have a type. For simple types, this represents a pseudo-destructor call. For example:
LambdaLambda expression. For example:
NumericalNumerical expressions that are not assignments. +aPositive signed expression. For example:
-aNegative signed expression. For example:
a%bModulo expression. For example:
a*bMultiplication expression. For example:
a+bAddition expression. For example:
a-bSubtraction expression. For example:
a/bDivision expression. For example:
a<<bLeft-shift expression. For example:
a>>bRight-shift expression. For example:
|
The following nodes do not easily fit into a particular category.
ArgumentActual argument (actual parameter) of a function call. Returned by the "Arguments" property. For example:
BaseClassDerivationRepresents a possible inheritance path led from the parent class represented by BaseType to the child class. For example:
For BaseTypeA Base Class of another class. For example:
FileFile containing source code. Used for rules about relationships of nodes within a file. Lambda CaptureSimple or init capture on a capture list. Includes also implicit captures provided through a capture-default. For example:
Template ArgumentRepresents actual argument used for instantiation of a template class or template function. For example:
Translation UnitRepresents current translation unit. |
Nodes involving the use of namespaces.
namespaceNamespace declaration. For example:
usingUse of 'using' namespace keyword. For example:
|
General node for all types of statements.
BlockBlock statement. Normally contains other statements. Begins and ends with curly braces. For example:
Case LableRepresents a
SimpleA statement that does not fall into any other statement category. The simple statement's body usually contains an expression. For example:
EmptyAn empty
breakBreak statement. For example:
caseCase statement. For example:
catchCatch statement used for exception handling. For example:
continueContinue statement used in loops. For example:
defaultDefault statement used inside a switch statement. For example:
do whjileDo while loop statement. For example:
forFor loop statement. For example:
for rangeRange-based for loop statement. For example:
gotoGoto statement. For example:
ifIf statement. For example:
returnReturn statement. For example:
switchSwitch statement. For example:
tryTry statement. For example:
whileWhile statement. For example:
|
All types that can be used for variable declaration.
ComplexNon-primitive types. This category contains the following types: ArrayArray type. For example:
BuiltinNon-primitive type builtin for a given compiler. ClassUser-defined class type. For example:
|
int i; decltype(i) k; // k is variable of type int: type of i. |
User-defined enum type. For example:
enum E { }; //Enum type
Function type. Used for function pointers. For example:
void foo(void (*ptr)(int)) { // ptr is Pointer of Type Function ptr(3); } |
Reference type. Used for passing by reference. For example:
void func(int &i) { // i is Parameter of Type Reference to Type int i = 3; } |
Struct type. For example:
struct Foo { }; // struct
A template parameter in template class declaration. For example:
template <typename T> class Temp{}; // Template Parameter: T
Typedef type. For example:
typedef int INT; INT x; // x is Variable of Type Typedef to Type int. |
Union type. For example":
union MyUnion { // union int x; char *y; }; |
All primitive types. This category contains the following types:
Primitive type bool. For example:
bool b; // b is Variable of Type bool
Primitive type char. For example:
char c; // c is Variable of Type char
Primitive type double. For example:
double d; // d is Variable of Type double
Primitive type float. For example:
float f; // f is Variable of Type float
Primitive type int. For example:
int i; // i is Variable of Type int
Primitive type long. For example:
long x; // x is Variable of Type long
Primitive type long double. For example:
long double d; // d is Variable of Type long double
Pointer type. For example:
char * name; // name is Variable of Type pointer to type char. |
Primitive type short. For example:
short x; // x is Variable of Type short
Primitive type void. Used for void pointers. For example:
void * p; // p is Variable of Type pointer to type void. |
Primitive type wchar_t. For example:
wchar_t c; // c is Variable of Type wchar_t
The type of pointer literal. Example:
decltype(nullptr) t; // variable of std::nullptr_t type