Eclipse JDT
2.0

org.eclipse.jdt.core.dom
Class ASTNode

java.lang.Object
  |
  +--org.eclipse.jdt.core.dom.ASTNode
Direct Known Subclasses:
AnonymousClassDeclaration, BodyDeclaration, CatchClause, CompilationUnit, Expression, ImportDeclaration, Javadoc, PackageDeclaration, Statement, Type, VariableDeclaration

public abstract class ASTNode
extends Object

Abstract superclass of all Abstract Syntax Tree (AST) node types.

An AST node represents a Java source code construct, such as a name, type, expression, statement, or declaration.

Each AST node belongs to a unique AST instance, called the owning AST. The children of an AST node always have the same owner as their parent node. If a node from one AST is to be added to a different AST, the subtree must be cloned first to ensure that the added nodes have the correct owning AST.

When an AST node is part of an AST, it has a unique parent node. Clients can navigate upwards, from child to parent, as well as downwards, from parent to child. Newly created nodes are unparented. When an unparented node is set as a child of a node (using a setCHILD method), its parent link is set automatically and the parent link of the former child is set to null. For nodes with properties that include a list of children (for example, Block whose statements property is a list of statements), adding or removing an element to/for the list property automatically updates the parent links.

ASTs must not contain cycles. All operations that could create a cycle detect this possibility and fail.

ASTs do not contain "holes" (missing subtrees). If a node is required to have a certain property, a syntactically plausible initial value is always supplied.

The hierarchy of AST node types has some convenient groupings marked by abstract superclasses:

Abstract syntax trees may be hand constructed by clients, using the newTYPE factory methods (see AST) to create new nodes, and the various setCHILD methods to connect them together.

The static method AST.parseCompilationUnit parses a string containing a Java compilation unit and returns the abstract syntax tree for it. The resulting nodes carry a source range relating the node back to the original source characters. The source range covers the construct as a whole.

Each AST node carries bit flags, which may convey additional information about the node. For instance, the parser uses a flag to indicate a syntax error. Newly created nodes have no flags set.

Each AST node is capable of carrying an open-ended collection of client-defined properties. Newly created nodes have none. getProperty and setProperty are used to access these properties.

AST nodes are not thread-safe; this is true even for trees that are read-only. If synchronization is required, consider using the common AST object that owns the node; that is, use synchronize (node.getAST()) {...}.

ASTs also support the visitor pattern; see the class ASTVisitor for details.

Since:
2.0
See Also:
AST.parseCompilationUnit(org.eclipse.jdt.core.ICompilationUnit, boolean), ASTVisitor

Field Summary
static int ANONYMOUS_CLASS_DECLARATION
          Node type constant indicating a node of type AnonymousClassDeclaration.
static int ARRAY_ACCESS
          Node type constant indicating a node of type ArrayAccess.
static int ARRAY_CREATION
          Node type constant indicating a node of type ArrayCreation.
static int ARRAY_INITIALIZER
          Node type constant indicating a node of type ArrayInitializer.
static int ARRAY_TYPE
          Node type constant indicating a node of type ArrayType.
static int ASSERT_STATEMENT
          Node type constant indicating a node of type AssertStatement.
static int ASSIGNMENT
          Node type constant indicating a node of type Assignment.
static int BLOCK
          Node type constant indicating a node of type Block.
static int BOOLEAN_LITERAL
          Node type constant indicating a node of type BooleanLiteral.
static int BREAK_STATEMENT
          Node type constant indicating a node of type BreakStatement.
static int CAST_EXPRESSION
          Node type constant indicating a node of type CastExpression.
static int CATCH_CLAUSE
          Node type constant indicating a node of type CatchClause.
static int CHARACTER_LITERAL
          Node type constant indicating a node of type CharacterLiteral.
static int CLASS_INSTANCE_CREATION
          Node type constant indicating a node of type ClassInstanceCreation.
static int COMPILATION_UNIT
          Node type constant indicating a node of type CompilationUnit.
static int CONDITIONAL_EXPRESSION
          Node type constant indicating a node of type ConditionalExpression.
static int CONSTRUCTOR_INVOCATION
          Node type constant indicating a node of type ConstructorInvocation.
static int CONTINUE_STATEMENT
          Node type constant indicating a node of type ContinueStatement.
static int DO_STATEMENT
          Node type constant indicating a node of type DoStatement.
static int EMPTY_STATEMENT
          Node type constant indicating a node of type EmptyStatement.
static int EXPRESSION_STATEMENT
          Node type constant indicating a node of type ExpressionStatement.
static int FIELD_ACCESS
          Node type constant indicating a node of type FieldAccess.
static int FIELD_DECLARATION
          Node type constant indicating a node of type FieldDeclaration.
static int FOR_STATEMENT
          Node type constant indicating a node of type ForStatement.
static int IF_STATEMENT
          Node type constant indicating a node of type IfStatement.
static int IMPORT_DECLARATION
          Node type constant indicating a node of type ImportDeclaration.
static int INFIX_EXPRESSION
          Node type constant indicating a node of type InfixExpression.
static int INITIALIZER
          Node type constant indicating a node of type Initializer.
static int INSTANCEOF_EXPRESSION
          Node type constant indicating a node of type InstanceofExpression.
static int JAVADOC
          Node type constant indicating a node of type Javadoc.
static int LABELED_STATEMENT
          Node type constant indicating a node of type LabeledStatement.
static int MALFORMED
          Flag constant (bit mask, value 1) indicating that there is something not quite right with this AST node.
static int METHOD_DECLARATION
          Node type constant indicating a node of type MethodDeclaration.
static int METHOD_INVOCATION
          Node type constant indicating a node of type MethodInvocation.
static int NULL_LITERAL
          Node type constant indicating a node of type NullLiteral.
static int NUMBER_LITERAL
          Node type constant indicating a node of type NumberLiteral.
static int PACKAGE_DECLARATION
          Node type constant indicating a node of type PackageDeclaration.
static int PARENTHESIZED_EXPRESSION
          Node type constant indicating a node of type ParenthesizedExpression.
static int POSTFIX_EXPRESSION
          Node type constant indicating a node of type PostfixExpression.
static int PREFIX_EXPRESSION
          Node type constant indicating a node of type PrefixExpression.
static int PRIMITIVE_TYPE
          Node type constant indicating a node of type PrimitiveType.
static int QUALIFIED_NAME
          Node type constant indicating a node of type QualifiedName.
static int RETURN_STATEMENT
          Node type constant indicating a node of type ReturnStatement.
static int SIMPLE_NAME
          Node type constant indicating a node of type SimpleName.
static int SIMPLE_TYPE
          Node type constant indicating a node of type SimpleType.
static int SINGLE_VARIABLE_DECLARATION
          Node type constant indicating a node of type SingleVariableDeclaration.
static int STRING_LITERAL
          Node type constant indicating a node of type StringLiteral.
static int SUPER_CONSTRUCTOR_INVOCATION
          Node type constant indicating a node of type SuperConstructorInvocation.
static int SUPER_FIELD_ACCESS
          Node type constant indicating a node of type SuperFieldAccess.
static int SUPER_METHOD_INVOCATION
          Node type constant indicating a node of type SuperMethodInvocation.
static int SWITCH_CASE
          Node type constant indicating a node of type SwitchCase.
static int SWITCH_STATEMENT
          Node type constant indicating a node of type SwitchStatement.
static int SYNCHRONIZED_STATEMENT
          Node type constant indicating a node of type SynchronizedStatement.
static int THIS_EXPRESSION
          Node type constant indicating a node of type ThisExpression.
static int THROW_STATEMENT
          Node type constant indicating a node of type ThrowStatement.
static int TRY_STATEMENT
          Node type constant indicating a node of type TryStatement.
static int TYPE_DECLARATION
          Node type constant indicating a node of type TypeDeclaration.
static int TYPE_DECLARATION_STATEMENT
          Node type constant indicating a node of type TypeDeclarationStatement.
static int TYPE_LITERAL
          Node type constant indicating a node of type TypeLiteral.
static int VARIABLE_DECLARATION_EXPRESSION
          Node type constant indicating a node of type VariableDeclarationExpression.
static int VARIABLE_DECLARATION_FRAGMENT
          Node type constant indicating a node of type VariableDeclarationFragment.
static int VARIABLE_DECLARATION_STATEMENT
          Node type constant indicating a node of type VariableDeclarationStatement.
static int WHILE_STATEMENT
          Node type constant indicating a node of type WhileStatement.
 
Method Summary
 void accept(ASTVisitor visitor)
          Accepts the given visitor on a visit of the current node.
static ASTNode copySubtree(AST target, ASTNode node)
          Returns a deep copy of the subtree of AST nodes rooted at the given node.
static List copySubtrees(AST target, List nodes)
          Returns a deep copy of the subtrees of AST nodes rooted at the given list of nodes.
 boolean equals(Object obj)
          The ASTNode implementation of this Object method uses object identity (==).
 AST getAST()
          Returns this node's AST.
 int getFlags()
          Returns the flags associated with this node.
 int getLength()
          Returns the length in characters of the original source file indicating where the source fragment corresponding to this node ends.
abstract  int getNodeType()
          Returns an integer value identifying the type of this concrete AST node.
 ASTNode getParent()
          Returns this node's parent node, or null if this is the root node.
 Object getProperty(String propertyName)
          Returns the named property of this node, or null if none.
 ASTNode getRoot()
          Returns the root node at or above this node; returns this node if it is a root.
 int getStartPosition()
          Returns the character index into the original source file indicating where the source fragment corresponding to this node begins.
 Map properties()
          Returns an unmodifiable table of the properties of this node with non-null values.
 void setFlags(int flags)
          Sets the flags associated with this node to the given value.
 void setProperty(String propertyName, Object data)
          Sets the named property of this node to the given value, or to null to clear it.
 void setSourceRange(int startPosition, int length)
          Sets the source range of the original source file where the source fragment corresponding to this node was found.
 int subtreeBytes()
          Returns an estimate of the memory footprint in bytes of the entire subtree rooted at this node.
abstract  boolean subtreeMatch(ASTMatcher matcher, Object other)
          Returns whether the subtree rooted at the given node matches the given other object as decided by the given matcher.
 String toString()
          Returns a string representation of this node suitable for debugging purposes only.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ANONYMOUS_CLASS_DECLARATION

public static final int ANONYMOUS_CLASS_DECLARATION
Node type constant indicating a node of type AnonymousClassDeclaration.

See Also:
AnonymousClassDeclaration, Constant Field Values

ARRAY_ACCESS

public static final int ARRAY_ACCESS
Node type constant indicating a node of type ArrayAccess.

See Also:
ArrayAccess, Constant Field Values

ARRAY_CREATION

public static final int ARRAY_CREATION
Node type constant indicating a node of type ArrayCreation.

See Also:
ArrayCreation, Constant Field Values

ARRAY_INITIALIZER

public static final int ARRAY_INITIALIZER
Node type constant indicating a node of type ArrayInitializer.

See Also:
ArrayInitializer, Constant Field Values

ARRAY_TYPE

public static final int ARRAY_TYPE
Node type constant indicating a node of type ArrayType.

See Also:
ArrayType, Constant Field Values

ASSERT_STATEMENT

public static final int ASSERT_STATEMENT
Node type constant indicating a node of type AssertStatement.

See Also:
AssertStatement, Constant Field Values

ASSIGNMENT

public static final int ASSIGNMENT
Node type constant indicating a node of type Assignment.

See Also:
Assignment, Constant Field Values

BLOCK

public static final int BLOCK
Node type constant indicating a node of type Block.

See Also:
Block, Constant Field Values

BOOLEAN_LITERAL

public static final int BOOLEAN_LITERAL
Node type constant indicating a node of type BooleanLiteral.

See Also:
BooleanLiteral, Constant Field Values

BREAK_STATEMENT

public static final int BREAK_STATEMENT
Node type constant indicating a node of type BreakStatement.

See Also:
BreakStatement, Constant Field Values

CAST_EXPRESSION

public static final int CAST_EXPRESSION
Node type constant indicating a node of type CastExpression.

See Also:
CastExpression, Constant Field Values

CATCH_CLAUSE

public static final int CATCH_CLAUSE
Node type constant indicating a node of type CatchClause.

See Also:
CatchClause, Constant Field Values

CHARACTER_LITERAL

public static final int CHARACTER_LITERAL
Node type constant indicating a node of type CharacterLiteral.

See Also:
CharacterLiteral, Constant Field Values

CLASS_INSTANCE_CREATION

public static final int CLASS_INSTANCE_CREATION
Node type constant indicating a node of type ClassInstanceCreation.

See Also:
ClassInstanceCreation, Constant Field Values

COMPILATION_UNIT

public static final int COMPILATION_UNIT
Node type constant indicating a node of type CompilationUnit.

See Also:
CompilationUnit, Constant Field Values

CONDITIONAL_EXPRESSION

public static final int CONDITIONAL_EXPRESSION
Node type constant indicating a node of type ConditionalExpression.

See Also:
ConditionalExpression, Constant Field Values

CONSTRUCTOR_INVOCATION

public static final int CONSTRUCTOR_INVOCATION
Node type constant indicating a node of type ConstructorInvocation.

See Also:
ConstructorInvocation, Constant Field Values

CONTINUE_STATEMENT

public static final int CONTINUE_STATEMENT
Node type constant indicating a node of type ContinueStatement.

See Also:
ContinueStatement, Constant Field Values

DO_STATEMENT

public static final int DO_STATEMENT
Node type constant indicating a node of type DoStatement.

See Also:
DoStatement, Constant Field Values

EMPTY_STATEMENT

public static final int EMPTY_STATEMENT
Node type constant indicating a node of type EmptyStatement.

See Also:
EmptyStatement, Constant Field Values

EXPRESSION_STATEMENT

public static final int EXPRESSION_STATEMENT
Node type constant indicating a node of type ExpressionStatement.

See Also:
ExpressionStatement, Constant Field Values

FIELD_ACCESS

public static final int FIELD_ACCESS
Node type constant indicating a node of type FieldAccess.

See Also:
FieldAccess, Constant Field Values

FIELD_DECLARATION

public static final int FIELD_DECLARATION
Node type constant indicating a node of type FieldDeclaration.

See Also:
FieldDeclaration, Constant Field Values

FOR_STATEMENT

public static final int FOR_STATEMENT
Node type constant indicating a node of type ForStatement.

See Also:
ForStatement, Constant Field Values

IF_STATEMENT

public static final int IF_STATEMENT
Node type constant indicating a node of type IfStatement.

See Also:
IfStatement, Constant Field Values

IMPORT_DECLARATION

public static final int IMPORT_DECLARATION
Node type constant indicating a node of type ImportDeclaration.

See Also:
ImportDeclaration, Constant Field Values

INFIX_EXPRESSION

public static final int INFIX_EXPRESSION
Node type constant indicating a node of type InfixExpression.

See Also:
InfixExpression, Constant Field Values

INITIALIZER

public static final int INITIALIZER
Node type constant indicating a node of type Initializer.

See Also:
Initializer, Constant Field Values

JAVADOC

public static final int JAVADOC
Node type constant indicating a node of type Javadoc.

See Also:
Javadoc, Constant Field Values

LABELED_STATEMENT

public static final int LABELED_STATEMENT
Node type constant indicating a node of type LabeledStatement.

See Also:
LabeledStatement, Constant Field Values

METHOD_DECLARATION

public static final int METHOD_DECLARATION
Node type constant indicating a node of type MethodDeclaration.

See Also:
MethodDeclaration, Constant Field Values

METHOD_INVOCATION

public static final int METHOD_INVOCATION
Node type constant indicating a node of type MethodInvocation.

See Also:
MethodInvocation, Constant Field Values

NULL_LITERAL

public static final int NULL_LITERAL
Node type constant indicating a node of type NullLiteral.

See Also:
NullLiteral, Constant Field Values

NUMBER_LITERAL

public static final int NUMBER_LITERAL
Node type constant indicating a node of type NumberLiteral.

See Also:
NumberLiteral, Constant Field Values

PACKAGE_DECLARATION

public static final int PACKAGE_DECLARATION
Node type constant indicating a node of type PackageDeclaration.

See Also:
PackageDeclaration, Constant Field Values

PARENTHESIZED_EXPRESSION

public static final int PARENTHESIZED_EXPRESSION
Node type constant indicating a node of type ParenthesizedExpression.

See Also:
ParenthesizedExpression, Constant Field Values

POSTFIX_EXPRESSION

public static final int POSTFIX_EXPRESSION
Node type constant indicating a node of type PostfixExpression.

See Also:
PostfixExpression, Constant Field Values

PREFIX_EXPRESSION

public static final int PREFIX_EXPRESSION
Node type constant indicating a node of type PrefixExpression.

See Also:
PrefixExpression, Constant Field Values

PRIMITIVE_TYPE

public static final int PRIMITIVE_TYPE
Node type constant indicating a node of type PrimitiveType.

See Also:
PrimitiveType, Constant Field Values

QUALIFIED_NAME

public static final int QUALIFIED_NAME
Node type constant indicating a node of type QualifiedName.

See Also:
QualifiedName, Constant Field Values

RETURN_STATEMENT

public static final int RETURN_STATEMENT
Node type constant indicating a node of type ReturnStatement.

See Also:
ReturnStatement, Constant Field Values

SIMPLE_NAME

public static final int SIMPLE_NAME
Node type constant indicating a node of type SimpleName.

See Also:
SimpleName, Constant Field Values

SIMPLE_TYPE

public static final int SIMPLE_TYPE
Node type constant indicating a node of type SimpleType.

See Also:
SimpleType, Constant Field Values

SINGLE_VARIABLE_DECLARATION

public static final int SINGLE_VARIABLE_DECLARATION
Node type constant indicating a node of type SingleVariableDeclaration.

See Also:
SingleVariableDeclaration, Constant Field Values

STRING_LITERAL

public static final int STRING_LITERAL
Node type constant indicating a node of type StringLiteral.

See Also:
StringLiteral, Constant Field Values

SUPER_CONSTRUCTOR_INVOCATION

public static final int SUPER_CONSTRUCTOR_INVOCATION
Node type constant indicating a node of type SuperConstructorInvocation.

See Also:
SuperConstructorInvocation, Constant Field Values

SUPER_FIELD_ACCESS

public static final int SUPER_FIELD_ACCESS
Node type constant indicating a node of type SuperFieldAccess.

See Also:
SuperFieldAccess, Constant Field Values

SUPER_METHOD_INVOCATION

public static final int SUPER_METHOD_INVOCATION
Node type constant indicating a node of type SuperMethodInvocation.

See Also:
SuperMethodInvocation, Constant Field Values

SWITCH_CASE

public static final int SWITCH_CASE
Node type constant indicating a node of type SwitchCase.

See Also:
SwitchCase, Constant Field Values

SWITCH_STATEMENT

public static final int SWITCH_STATEMENT
Node type constant indicating a node of type SwitchStatement.

See Also:
SwitchStatement, Constant Field Values

SYNCHRONIZED_STATEMENT

public static final int SYNCHRONIZED_STATEMENT
Node type constant indicating a node of type SynchronizedStatement.

See Also:
SynchronizedStatement, Constant Field Values

THIS_EXPRESSION

public static final int THIS_EXPRESSION
Node type constant indicating a node of type ThisExpression.

See Also:
ThisExpression, Constant Field Values

THROW_STATEMENT

public static final int THROW_STATEMENT
Node type constant indicating a node of type ThrowStatement.

See Also:
ThrowStatement, Constant Field Values

TRY_STATEMENT

public static final int TRY_STATEMENT
Node type constant indicating a node of type TryStatement.

See Also:
TryStatement, Constant Field Values

TYPE_DECLARATION

public static final int TYPE_DECLARATION
Node type constant indicating a node of type TypeDeclaration.

See Also:
TypeDeclaration, Constant Field Values

TYPE_DECLARATION_STATEMENT

public static final int TYPE_DECLARATION_STATEMENT
Node type constant indicating a node of type TypeDeclarationStatement.

See Also:
TypeDeclarationStatement, Constant Field Values

TYPE_LITERAL

public static final int TYPE_LITERAL
Node type constant indicating a node of type TypeLiteral.

See Also:
TypeLiteral, Constant Field Values

VARIABLE_DECLARATION_EXPRESSION

public static final int VARIABLE_DECLARATION_EXPRESSION
Node type constant indicating a node of type VariableDeclarationExpression.

See Also:
VariableDeclarationExpression, Constant Field Values

VARIABLE_DECLARATION_FRAGMENT

public static final int VARIABLE_DECLARATION_FRAGMENT
Node type constant indicating a node of type VariableDeclarationFragment.

See Also:
VariableDeclarationFragment, Constant Field Values

VARIABLE_DECLARATION_STATEMENT

public static final int VARIABLE_DECLARATION_STATEMENT
Node type constant indicating a node of type VariableDeclarationStatement.

See Also:
VariableDeclarationStatement, Constant Field Values

WHILE_STATEMENT

public static final int WHILE_STATEMENT
Node type constant indicating a node of type WhileStatement.

See Also:
WhileStatement, Constant Field Values

INSTANCEOF_EXPRESSION

public static final int INSTANCEOF_EXPRESSION
Node type constant indicating a node of type InstanceofExpression.

See Also:
InstanceofExpression, Constant Field Values

MALFORMED

public static final int MALFORMED
Flag constant (bit mask, value 1) indicating that there is something not quite right with this AST node.

The standard parser (AST.parseCompilationUnit) sets this flag on a node to indicate a syntax error detected in the vicinity.

See Also:
Constant Field Values
Method Detail

getAST

public AST getAST()
Returns this node's AST.

Note that the relationship between an AST node and its owing AST does not change over the lifetime of a node.

Returns:
the AST that owns this node

getParent

public ASTNode getParent()
Returns this node's parent node, or null if this is the root node.

Note that the relationship between an AST node and its parent node may change over the lifetime of a node.

Returns:
the parent of this node, or null if none

getRoot

public ASTNode getRoot()
Returns the root node at or above this node; returns this node if it is a root.

Returns:
the root node at or above this node

getProperty

public Object getProperty(String propertyName)
Returns the named property of this node, or null if none.

Parameters:
propertyName - the property name
Returns:
the property value, or null if none
See Also:
setProperty(java.lang.String, java.lang.Object)

setProperty

public void setProperty(String propertyName,
                        Object data)
Sets the named property of this node to the given value, or to null to clear it.

Clients should employ property names that are sufficiently unique to avoid inadvertent conflicts with other clients that might also be setting properties on the same node.

Note that modifying a property is not considered a modification to the AST itself. This is to allow clients to decorate existing nodes with their own properties without jeopardizing certain things (like the validity of bindings), which rely on the underlying tree remaining static.

Parameters:
propertyName - the property name
data - the new property value, or null if none
See Also:
getProperty(java.lang.String)

properties

public Map properties()
Returns an unmodifiable table of the properties of this node with non-null values.

Returns:
the table of property values keyed by property name (key type: String; value type: Object)

getFlags

public int getFlags()
Returns the flags associated with this node.

No flags are associated with newly created nodes.

The flags are the bitwise-or of individual flags. The following flags are currently defined:

Other bit positions are reserved for future use.

Returns:
the bitwise-or of individual flags
See Also:
setFlags(int), MALFORMED

setFlags

public void setFlags(int flags)
Sets the flags associated with this node to the given value.

The flags are the bitwise-or of individual flags. The following flags are currently defined:

Other bit positions are reserved for future use.

Parameters:
flags - the bitwise-or of individual flags
See Also:
getFlags(), MALFORMED

getNodeType

public abstract int getNodeType()
Returns an integer value identifying the type of this concrete AST node. The values are small positive integers, suitable for use in switch statements.

For each concrete node type there is a unique node type constant (name and value). The unique node type constant for a concrete node type such as CastExpression is ASTNode.CAST_EXPRESSION.

Returns:
one of the node type constants

equals

public final boolean equals(Object obj)
The ASTNode implementation of this Object method uses object identity (==). Use subtreeMatch to compare two subtrees for equality.

Overrides:
equals in class Object
See Also:
subtreeMatch(ASTMatcher matcher, Object other)

subtreeMatch

public abstract boolean subtreeMatch(ASTMatcher matcher,
                                     Object other)
Returns whether the subtree rooted at the given node matches the given other object as decided by the given matcher.

Parameters:
matcher - the matcher
other - the other object, or null
Returns:
true if the subtree matches, or false if they do not match

copySubtree

public static ASTNode copySubtree(AST target,
                                  ASTNode node)
Returns a deep copy of the subtree of AST nodes rooted at the given node. The resulting nodes are owned by the given AST, which may be different from the ASTs of the given node. Even if the given node has a parent, the result node will be unparented.

Note that client properties are not carried over to the new nodes.

Parameters:
target - the AST that is to own the nodes in the result
node - the node to copy, or null if none
Returns:
the copied node, or null if node is null

copySubtrees

public static List copySubtrees(AST target,
                                List nodes)
Returns a deep copy of the subtrees of AST nodes rooted at the given list of nodes. The resulting nodes are owned by the given AST, which may be different from the ASTs of the nodes in the list. Even if the nodes in the list have parents, the nodes in the result will be unparented.

Note that client properties are not carried over to the new nodes.

Parameters:
target - the AST that is to own the nodes in the result
nodes - the list of nodes to copy (element type: ASTNode)
Returns:
the list of copied subtrees (element type: ASTNode)

accept

public final void accept(ASTVisitor visitor)
Accepts the given visitor on a visit of the current node.

Parameters:
visitor - the visitor object
Throws:
IllegalArgumentException - if the visitor is null

getStartPosition

public int getStartPosition()
Returns the character index into the original source file indicating where the source fragment corresponding to this node begins.

Returns:
the 0-based character index, or -1 if no source position information is recorded for this node
See Also:
getLength()

getLength

public int getLength()
Returns the length in characters of the original source file indicating where the source fragment corresponding to this node ends.

Returns:
a (possibly 0) length, or 0 if no source position information is recorded for this node
See Also:
getStartPosition()

setSourceRange

public void setSourceRange(int startPosition,
                           int length)
Sets the source range of the original source file where the source fragment corresponding to this node was found.

Parameters:
startPosition - a 0-based character index, or -1 if no source position information is available for this node
length - a (possibly 0) length, or 0 if no source position information is recorded for this node
See Also:
getStartPosition(), getLength()

toString

public final String toString()
Returns a string representation of this node suitable for debugging purposes only.

Overrides:
toString in class Object
Returns:
a debug string

subtreeBytes

public final int subtreeBytes()
Returns an estimate of the memory footprint in bytes of the entire subtree rooted at this node.

Returns:
the size of this subtree in bytes

Eclipse JDT
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.