RECODER 0.92

recoder.java.expression
Class ArrayInitializer

java.lang.Object
  extended by recoder.java.JavaSourceElement
      extended by recoder.java.JavaProgramElement
          extended by recoder.java.JavaNonTerminalProgramElement
              extended by recoder.java.expression.ArrayInitializer
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Expression, ExpressionContainer, NonTerminalProgramElement, ProgramElement, SourceElement, ModelElement

public class ArrayInitializer
extends JavaNonTerminalProgramElement
implements Expression, ExpressionContainer

An ArrayInitializer is a valid expression exclusively for initializing ArrayTypes. Any other expressions are suited for any expression node. These rules could have been expressed by appropriate types, but these solutions would require a couple of new interfaces which did not seem adequate. The parent expression is either another ArrayInitializer (nested blocks) or a VariableDeclaration.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class recoder.java.JavaSourceElement
factory
 
Constructor Summary
  ArrayInitializer()
          Array initializer.
protected ArrayInitializer(ArrayInitializer proto)
          Array initializer.
  ArrayInitializer(ASTList<Expression> args)
          Array initializer.
 
Method Summary
 void accept(SourceVisitor v)
          Receive a visitor, for instance a pretty printer.
 ArrayInitializer deepClone()
          Deep clone.
 ASTList<Expression> getArguments()
          Get arguments.
 NonTerminalProgramElement getASTParent()
          Get AST parent.
 ProgramElement getChildAt(int index)
          Returns the child at the specified index in this node's "virtual" child array
 int getChildCount()
          Returns the number of children of this node.
 int getChildPositionCode(ProgramElement child)
          Returns the positional code of the given child, or -1 if there is no such child.
 Expression getExpressionAt(int index)
           
 ExpressionContainer getExpressionContainer()
          Get expression container.
 int getExpressionCount()
          Get the number of expressions in this container.
 void makeParentRoleValid()
          Make parent role valid.
 boolean replaceChild(ProgramElement p, ProgramElement q)
          Replace a single child in the current node.
 void setArguments(ASTList<Expression> list)
          Set arguments.
 void setExpressionContainer(ExpressionContainer c)
          Set expression container.
 
Methods inherited from class recoder.java.JavaNonTerminalProgramElement
getIndexOfChild, getRoleOfChild, makeAllParentRolesValid, validateAll
 
Methods inherited from class recoder.java.JavaProgramElement
getComments, getID, setComments, validate
 
Methods inherited from class recoder.java.JavaSourceElement
getEndPosition, getFactory, getFirstElement, getLastElement, getRelativePosition, getStartPosition, setEndPosition, setRelativePosition, setStartPosition, toSource
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface recoder.java.NonTerminalProgramElement
getIndexOfChild, getRoleOfChild, makeAllParentRolesValid, validateAll
 

Constructor Detail

ArrayInitializer

public ArrayInitializer()
Array initializer.


ArrayInitializer

public ArrayInitializer(ASTList<Expression> args)
Array initializer.

Parameters:
args - an expression mutable list.

ArrayInitializer

protected ArrayInitializer(ArrayInitializer proto)
Array initializer.

Parameters:
proto - an array initializer.
Method Detail

makeParentRoleValid

public void makeParentRoleValid()
Make parent role valid.

Specified by:
makeParentRoleValid in interface NonTerminalProgramElement
Overrides:
makeParentRoleValid in class JavaNonTerminalProgramElement

deepClone

public ArrayInitializer deepClone()
Deep clone.

Specified by:
deepClone in interface Expression
Specified by:
deepClone in interface SourceElement
Returns:
the object.

getASTParent

public NonTerminalProgramElement getASTParent()
Get AST parent.

Specified by:
getASTParent in interface ProgramElement
Returns:
the non terminal program element.

getChildCount

public int getChildCount()
Returns the number of children of this node.

Specified by:
getChildCount in interface NonTerminalProgramElement
Returns:
an int giving the number of children of this node

getChildAt

public ProgramElement getChildAt(int index)
Returns the child at the specified index in this node's "virtual" child array

Specified by:
getChildAt in interface NonTerminalProgramElement
Parameters:
index - an index into this node's "virtual" child array
Returns:
the program element at the given position
Throws:
java.lang.ArrayIndexOutOfBoundsException - if index is out of bounds

getChildPositionCode

public int getChildPositionCode(ProgramElement child)
Description copied from interface: NonTerminalProgramElement
Returns the positional code of the given child, or -1 if there is no such child. The result contains an encoding of the relative position of the child as well as the role it has been playing in this parent element. This information is required internally for proper undo of transformations and is to be delivered to the detached method of the ChangeHistory.

Specified by:
getChildPositionCode in interface NonTerminalProgramElement
Parameters:
child - the exact child to look for.
Returns:
the positional code of the given child, or -1.
See Also:
ChangeHistory.detached(recoder.java.ProgramElement, recoder.java.NonTerminalProgramElement, int)

getExpressionContainer

public ExpressionContainer getExpressionContainer()
Get expression container.

Specified by:
getExpressionContainer in interface Expression
Returns:
the expression container.

setExpressionContainer

public void setExpressionContainer(ExpressionContainer c)
Set expression container.

Specified by:
setExpressionContainer in interface Expression
Parameters:
c - an expression container.

getExpressionCount

public int getExpressionCount()
Get the number of expressions in this container.

Specified by:
getExpressionCount in interface ExpressionContainer
Returns:
the number of expressions.

getExpressionAt

public Expression getExpressionAt(int index)
Specified by:
getExpressionAt in interface ExpressionContainer

replaceChild

public boolean replaceChild(ProgramElement p,
                            ProgramElement q)
Replace a single child in the current node. The child to replace is matched by identity and hence must be known exactly. The replacement element can be null - in that case, the child is effectively removed. The parent role of the new child is validated, while the parent link of the replaced child is left untouched.

Specified by:
replaceChild in interface NonTerminalProgramElement
Parameters:
p - the old child.
p - the new child.
Returns:
true if a replacement has occured, false otherwise.
Throws:
java.lang.ClassCastException - if the new child cannot take over the role of the old one.

getArguments

public ASTList<Expression> getArguments()
Get arguments.

Returns:
the expression mutable list.

setArguments

public void setArguments(ASTList<Expression> list)
Set arguments.

Parameters:
list - an expression mutable list.

accept

public void accept(SourceVisitor v)
Description copied from interface: SourceElement
Receive a visitor, for instance a pretty printer.

Specified by:
accept in interface SourceElement
Parameters:
v - a source visitor.

RECODER 0.92