Package org.eclipse.cdt.core.dom.ast

# Class ASTVisitor

java.lang.Object
org.eclipse.cdt.core.dom.ast.ASTVisitor

Direct Known Subclasses:
  `ASTGenericVisitor`, `ASTNameCollector`, `CASTVisitor`, `CPPASTVisitor`

public abstract class ASTVisitor extends Object
Abstract base class for all visitors to traverse AST nodes.
visit() methods implement a top-down traversal, and
leave() methods implement a bottom-up traversal.

Clients may subclass.

## Field Summary

Fields
Modifier and Type
Field
Description
`boolean`
`includeInactiveNodes`
Per default inactive nodes are not visited.
`static final int`
`PROCESS_ABORT`
Abort the entire traversal.
`static final int`
`PROCESS_CONTINUE`
Continue with traversing the children of this node.
`static final int`
`PROCESS_SKIP`
Skip the traversal of children of this node, don't call leave on this node.
`boolean`
`shouldVisitAmbiguousNodes`
Normally neither ambiguous nodes nor their children are visited.
`boolean`
`shouldVisitArrayModifiers`
Set this flag to visit array modifiers.
`boolean`
`shouldVisitAttributes`
Set this flag to visit attributes.
`boolean`
`shouldVisitBaseSpecifiers`
Set this flag to visit base specifiers off composite types.
`boolean`
`shouldVisitCaptures`
Set this flag to visit captures
`boolean`
`shouldVisitDeclarations`
Set this flag to visit declarations.
`boolean`
`shouldVisitDeclarators`
Set this flag to visit declarators.
`boolean`
`shouldVisitDeclSpecifiers`
Set this flag to visit declaration specifiers.
`boolean`
`shouldVisitDecltypeSpecifiers`
Set this flag to visit decltype-specifiers.
`boolean`
`shouldVisitDesignators`
Set this flag to visit designators of initializers.
`boolean`
`shouldVisitEnumerators`
Set this flag to visit enumerators.
`boolean`
`shouldVisitExpressions`
Set this flag to visit expressions.
`boolean`
`shouldVisitImplicitDestructorNames`
Implicit destructor names are created to mark code locations where destructors of temporaries and variables going out of scope are called, normally they are not visited, set this flag to true to visit them.
`boolean`
`shouldVisitImplicitNameAlternates`
Sometimes more than one implicit name is created for a binding, set this flag to true to visit more than one name for an implicit binding.
`boolean`
`shouldVisitImplicitNames`
Implicit names are created to allow implicit bindings to be resolved, normally they are not visited, set this flag to true to visit them.
`boolean`
`shouldVisitInitializers`
Set this flag to visit initializers.
`boolean`
`shouldVisitNames`
Set this flag to visit names.
`boolean`
`shouldVisitNamespaces`
Set this flag to visit namespace definitions.
`boolean`
`shouldVisitParameterDeclarations`
Set this flag to visit parameter declarations.
`boolean`
`shouldVisitPointerOperators`
Set this flag to visit pointer operators of declarators.
`boolean`
`shouldVisitProblems`
Set this flag to visit problem nodes.
`boolean`
`shouldVisitStatements`
Set this flag to visit statements.
`boolean`
`shouldVisitTemplateParameters`
Set this flag to visit template parameters.
`boolean`
`shouldVisitTokens`
Set this flag to visit token nodes.
`boolean`
`shouldVisitTranslationUnit`
Set this flag to visit translation units.
`boolean`
`shouldVisitTypeIds`
Set this flag to visit typeids.
`boolean`
`shouldVisitVirtSpecifiers`
Set this flag to visit virt-specifiers.

## Constructor Summary

Constructors
Constructor
Description
`ASTVisitor()`
Creates a visitor that does not visit any kind of node per default.
`ASTVisitor(boolean visitNodes)`
Creates a visitor.

## Method Summary

Modifier and Type
Method
Description
`int`
`leave(ICASTDesignator designator)`
`int`
`leave(ICPPASTCapture capture)`
`int`
`leave(ICPPASTClassVirtSpecifier virtSpecifier)`
`int`
`leave(ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier baseSpecifier)`
`int`
`leave(ICPPASTDecltypeSpecifier decltypeSpecifier)`
`int`
`leave(ICPPASTDesignator designator)`
`int`
`leave(ICPPASTNamespaceDefinition namespaceDefinition)`
`int`
`leave(ICPPASTTemplateParameter templateParameter)`
`int`
`leave(ICPPASTVirtSpecifier virtSpecifier)`
`int`
`leave(IASTArrayModifier arrayModifier)`
`int`
`leave(IASTAttribute attribute)`
`int`
`leave(IASTAttributeSpecifier specifier)`
`int`
`leave(IASTDeclaration declaration)`
`int`
`leave(IASTDeclarator declarator)`
`int`
`leave(IASTDeclSpecifier declSpec)`
`int`
`leave(IASTEnumerationSpecifier.IASTEnumerator enumerator)`
`int`
`leave(IASTExpression expression)`
`int`
`leave(IASTInitializer initializer)`
`int`
`leave(IASTName name)`
`int`
`leave(IASTParameterDeclaration parameterDeclaration)`
`int`
`leave(IASTPointerOperator ptrOperator)`
`int`
`leave(IASTProblem problem)`
`int`
`leave(IASTStatement statement)`
`int`
`leave(IASTToken token)`
`int`
`leave(IASTTranslationUnit tu)`
`int`
`leave(IASTTypeId typeId)`
`int`
`visit(ICASTDesignator designator)`
`int`
`visit(ICPPASTCapture capture)`
`int`
`visit(ICPPASTClassVirtSpecifier classVirtSpecifier)`
`int`
`visit(ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier baseSpecifier)`
`int`
`visit(ICPPASTDecltypeSpecifier decltypeSpecifier)`
`int`
`visit(ICPPASTDesignator designator)`
`int`
`visit(ICPPASTNamespaceDefinition namespaceDefinition)`
`int`
`visit(ICPPASTTemplateParameter templateParameter)`
`int`
`visit(ICPPASTVirtSpecifier virtSpecifier)`
`int`
`visit(IASTArrayModifier arrayModifier)`
`int`
`visit(IASTAttribute attribute)`
`int`
`visit(IASTAttributeSpecifier specifier)`
`int`
`visit(IASTDeclaration declaration)`
`int`
`visit(IASTDeclarator declarator)`
`int`
`visit(IASTDeclSpecifier declSpec)`
`int`
`visit(IASTEnumerationSpecifier.IASTEnumerator enumerator)`
`int`
`visit(IASTExpression expression)`
`int`
`visit(IASTInitializer initializer)`
`int`
`visit(IASTName name)`
`int`
`visit(IASTParameterDeclaration parameterDeclaration)`
`int`
`visit(IASTPointerOperator ptrOperator)`
`int`
`visit(IASTProblem problem)`
`int`
`visit(IASTStatement statement)`
`int`
`visit(IASTToken token)`
`int`
`visit(IASTTranslationUnit tu)`
`int`
`visit(IASTTypeId typeId)`
`int`
`visit(org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode astAmbiguousNode)`
For internal use, only.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### PROCESS_SKIP

public static final int PROCESS_SKIP
Skip the traversal of children of this node, don't call leave on this node.

See Also:
  - Constant Field Values

### PROCESS_ABORT

public static final int PROCESS_ABORT
Abort the entire traversal.

See Also:
  - Constant Field Values

### PROCESS_CONTINUE

public static final int PROCESS_CONTINUE
Continue with traversing the children of this node.

See Also:
  - Constant Field Values

### shouldVisitNames

public boolean shouldVisitNames
Set this flag to visit names.

### shouldVisitDeclarations

public boolean shouldVisitDeclarations
Set this flag to visit declarations.

### shouldVisitInitializers

public boolean shouldVisitInitializers
Set this flag to visit initializers.

### shouldVisitParameterDeclarations

public boolean shouldVisitParameterDeclarations
Set this flag to visit parameter declarations.

### shouldVisitDeclarators

public boolean shouldVisitDeclarators
Set this flag to visit declarators.

### shouldVisitDeclSpecifiers

public boolean shouldVisitDeclSpecifiers
Set this flag to visit declaration specifiers.

### shouldVisitArrayModifiers

public boolean shouldVisitArrayModifiers
Set this flag to visit array modifiers.

Since:
  5.1

### shouldVisitPointerOperators

public boolean shouldVisitPointerOperators
Set this flag to visit pointer operators of declarators.

Since:
  5.1

### shouldVisitAttributes

public boolean shouldVisitAttributes
Set this flag to visit attributes.

Since:
  5.4

### shouldVisitTokens

public boolean shouldVisitTokens
Set this flag to visit token nodes.

Since:
  5.4

### shouldVisitExpressions

public boolean shouldVisitExpressions
Set this flag to visit expressions.

### shouldVisitStatements

public boolean shouldVisitStatements
Set this flag to visit statements.

### shouldVisitTypeIds

public boolean shouldVisitTypeIds
Set this flag to visit typeids.

### shouldVisitEnumerators

public boolean shouldVisitEnumerators
Set this flag to visit enumerators.

### shouldVisitTranslationUnit

public boolean shouldVisitTranslationUnit
Set this flag to visit translation units.

### shouldVisitProblems

public boolean shouldVisitProblems
Set this flag to visit problem nodes.

### shouldVisitDesignators

public boolean shouldVisitDesignators
Set this flag to visit designators of initializers.

### shouldVisitBaseSpecifiers

public boolean shouldVisitBaseSpecifiers
Set this flag to visit base specifiers off composite types.

### shouldVisitNamespaces

public boolean shouldVisitNamespaces
Set this flag to visit namespace definitions.

### shouldVisitTemplateParameters

public boolean shouldVisitTemplateParameters
Set this flag to visit template parameters.

### shouldVisitCaptures

public boolean shouldVisitCaptures
Set this flag to visit captures

Since:
  5.3

### shouldVisitVirtSpecifiers

public boolean shouldVisitVirtSpecifiers
Set this flag to visit virt-specifiers.

Since:
  5.7

### shouldVisitDecltypeSpecifiers

public boolean shouldVisitDecltypeSpecifiers
Set this flag to visit decltype-specifiers.

Since:
  5.8

### includeInactiveNodes

public boolean includeInactiveNodes
Per default inactive nodes are not visited. You can change that by setting this flag to `true`.

Since:
  5.1

### shouldVisitAmbiguousNodes

public boolean shouldVisitAmbiguousNodes
Normally neither ambiguous nodes nor their children are visited. By setting this flag to `true` ambiguous nodes are visited, their children are not.

Restriction:
  This field is not intended to be referenced by clients.

### shouldVisitImplicitNames

public boolean shouldVisitImplicitNames
Implicit names are created to allow implicit bindings to be resolved, normally they are not visited, set this flag to true to visit them.

Since:
  5.1
See Also:
  - `visit(IASTName)`
  - `IASTImplicitName`

### shouldVisitImplicitNameAlternates

public boolean shouldVisitImplicitNameAlternates
Sometimes more than one implicit name is created for a binding, set this flag to true to visit more than one name for an implicit binding.

Since:
  5.1
See Also:
  - `visit(IASTName)`
  - `IASTImplicitName`

### shouldVisitImplicitDestructorNames

public boolean shouldVisitImplicitDestructorNames
Implicit destructor names are created to mark code locations where destructors of temporaries and variables going out of scope are called, normally they are not visited, set this flag to true to visit them.

Since:
  5.10
See Also:
  - `visit(IASTName)`
  - `IASTImplicitDestructorName`

## Constructor Details

### ASTVisitor

public ASTVisitor()
Creates a visitor that does not visit any kind of node per default.

### ASTVisitor

public ASTVisitor(boolean visitNodes)
Creates a visitor.

Parameters:
  `visitNodes` - whether visitor is setup to visit all nodes per default, except ambiguous nodes (`shouldVisitAmbiguousNodes`), inactive nodes (`includeInactiveNodes`), implicit names (`shouldVisitImplicitNames`), and tokens (`shouldVisitTokens`).
Since:
  5.1

## Method Details

### visit

public int visit(IASTTranslationUnit tu)

### visit

public int visit(IASTName name)

### visit

public int visit(IASTDeclaration declaration)

### visit

public int visit(IASTInitializer initializer)

### visit

public int visit(IASTParameterDeclaration parameterDeclaration)

### visit

public int visit(IASTDeclarator declarator)

### visit

public int visit(IASTDeclSpecifier declSpec)

### visit

public int visit(IASTArrayModifier arrayModifier)

Since:
  5.1

### visit

public int visit(IASTPointerOperator ptrOperator)

Since:
  5.1

### visit

public int visit(IASTAttribute attribute)

Since:
  5.4

### visit

public int visit(IASTAttributeSpecifier specifier)

Since:
  5.7

### visit

public int visit(IASTToken token)

Since:
  5.4

### visit

public int visit(IASTExpression expression)

### visit

public int visit(IASTStatement statement)

### visit

public int visit(IASTTypeId typeId)

### visit

public int visit(IASTEnumerationSpecifier.IASTEnumerator enumerator)

### visit

public int visit(IASTProblem problem)

### visit

public int visit(ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier baseSpecifier)

Since:
  5.3

### visit

public int visit(ICPPASTNamespaceDefinition namespaceDefinition)

Since:
  5.3

### visit

public int visit(ICPPASTTemplateParameter templateParameter)

Since:
  5.3

### visit

public int visit(ICPPASTCapture capture)

Since:
  5.3

### visit

public int visit(ICASTDesignator designator)

Since:
  5.3

### visit

public int visit(ICPPASTDesignator designator)

Since:
  6.0

### visit

public int visit(ICPPASTVirtSpecifier virtSpecifier)

Since:
  5.7

### visit

public int visit(ICPPASTClassVirtSpecifier classVirtSpecifier)

Since:
  5.7

### visit

public int visit(ICPPASTDecltypeSpecifier decltypeSpecifier)

Since:
  5.8

### leave

public int leave(IASTTranslationUnit tu)

### leave

public int leave(IASTName name)

### leave

public int leave(IASTDeclaration declaration)

### leave

public int leave(IASTInitializer initializer)

### leave

public int leave(IASTParameterDeclaration parameterDeclaration)

### leave

public int leave(IASTDeclarator declarator)

### leave

public int leave(IASTDeclSpecifier declSpec)

### leave

public int leave(IASTArrayModifier arrayModifier)

Since:
  5.1

### leave

public int leave(IASTPointerOperator ptrOperator)

Since:
  5.1

### leave

public int leave(IASTAttribute attribute)

Since:
  5.4

### leave

public int leave(IASTAttributeSpecifier specifier)

Since:
  5.7

### leave

public int leave(IASTToken token)

Since:
  5.4

### leave

public int leave(IASTExpression expression)

### leave

public int leave(IASTStatement statement)

### leave

public int leave(IASTTypeId typeId)

### leave

public int leave(IASTEnumerationSpecifier.IASTEnumerator enumerator)

### leave

public int leave(IASTProblem problem)

### leave

public int leave(ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier baseSpecifier)

Since:
  5.3

### leave

public int leave(ICPPASTNamespaceDefinition namespaceDefinition)

Since:
  5.3

### leave

public int leave(ICPPASTTemplateParameter templateParameter)

Since:
  5.3

### leave

public int leave(ICPPASTCapture capture)

Since:
  5.3

### leave

public int leave(ICASTDesignator designator)

Since:
  5.3

### leave

public int leave(ICPPASTDesignator designator)

Since:
  6.0

### leave

public int leave(ICPPASTVirtSpecifier virtSpecifier)

Since:
  5.7

### leave

public int leave(ICPPASTClassVirtSpecifier virtSpecifier)

Since:
  5.7

### leave

public int leave(ICPPASTDecltypeSpecifier decltypeSpecifier)

Since:
  5.8

### visit

public int visit(org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode astAmbiguousNode)
For internal use, only. When `shouldVisitAmbiguousNodes` is set to true, the visitor will be called for ambiguous nodes. However, the children of an ambiguous will not be traversed.

Restriction:
  This method is not intended to be referenced by clients.
Restriction:
  This method is not intended to be re-implemented or extended by clients.