RECODER 0.92

recoder.java.expression.operator
Class New

java.lang.Object
  extended by recoder.java.JavaSourceElement
      extended by recoder.java.JavaProgramElement
          extended by recoder.java.JavaNonTerminalProgramElement
              extended by recoder.java.expression.Operator
                  extended by recoder.java.expression.operator.TypeOperator
                      extended by recoder.java.expression.operator.New
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, TypeDeclarationContainer, Expression, ExpressionStatement, ExpressionContainer, LoopInitializer, NonTerminalProgramElement, ProgramElement, Reference, ConstructorReference, MemberReference, ReferencePrefix, ReferenceSuffix, TypeReferenceContainer, SourceElement, Statement, ModelElement

public class New
extends TypeOperator
implements ConstructorReference, ExpressionStatement, ReferencePrefix, ReferenceSuffix, TypeDeclarationContainer

The object allocation operator. There are two variants for New:

  1. Class constructor call
    new XYZ(a1, ..., an)
    if getType() instanceof UserType
  2. Anonymous Inner Class definition and construction
    new XYZ(a1, ..., an) { m1, ..., mk }
    if getType() instanceof UserType && getClassDeclaration() !=null
The access path is null in most cases, except when an inner class constructor is invoked from an outer instance.

See Also:
Serialized Form

Field Summary
protected  ReferencePrefix accessPath
          Access path.
protected  ClassDeclaration anonymousClass
          Anonymous class.
protected  ReferenceSuffix referenceParent
          Reference parent.
protected  StatementContainer statementParent
          Statement parent.
 
Fields inherited from class recoder.java.expression.Operator
children, expressionParent, INFIX, POSTFIX, PREFIX
 
Fields inherited from class recoder.java.JavaSourceElement
factory
 
Constructor Summary
  New()
          New.
protected New(New proto)
          New.
  New(ReferencePrefix accessPath, TypeReference constructorName, ASTList<Expression> arguments)
          New.
  New(ReferencePrefix accessPath, TypeReference constructorName, ASTList<Expression> arguments, ClassDeclaration anonymousClass)
          New.
 
Method Summary
 void accept(SourceVisitor v)
          Receive a visitor, for instance a pretty printer.
 New deepClone()
          Deep clone.
 ASTList<Expression> getArguments()
          Get arguments.
 int getArity()
          Get arity.
 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.
 ClassDeclaration getClassDeclaration()
          Get class declaration.
 ExpressionContainer getExpressionContainer()
          Get expression container.
 SourceElement getFirstElement()
          Finds the source element that occurs first in the source.
 SourceElement getLastElement()
          Finds the source element that occurs last in the source.
 int getNotation()
          Get notation.
 int getPrecedence()
          Get precedence.
 ReferencePrefix getReferencePrefix()
          Get reference prefix.
 ReferenceSuffix getReferenceSuffix()
          Get reference suffix.
 StatementContainer getStatementContainer()
          Get statement container.
 TypeDeclaration getTypeDeclarationAt(int index)
           
 int getTypeDeclarationCount()
          Get the number of type declarations 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 setClassDeclaration(ClassDeclaration decl)
          Set class declaration.
 void setExpressionContainer(ExpressionContainer parent)
          Set expression container.
 void setReferencePrefix(ReferencePrefix x)
          Set reference prefix.
 void setReferenceSuffix(ReferenceSuffix path)
          Set reference suffix.
 void setStatementContainer(StatementContainer parent)
          Set statement container.
 
Methods inherited from class recoder.java.expression.operator.TypeOperator
getTypeReference, getTypeReferenceAt, getTypeReferenceCount, setTypeReference
 
Methods inherited from class recoder.java.expression.Operator
getExpressionAt, getExpressionCount, isLeftAssociative, isToBeParenthesized, precedes
 
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, 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.ExpressionContainer
getExpressionAt, getExpressionCount
 
Methods inherited from interface recoder.java.NonTerminalProgramElement
getIndexOfChild, getRoleOfChild, makeAllParentRolesValid, validateAll
 

Field Detail

anonymousClass

protected ClassDeclaration anonymousClass
Anonymous class.


accessPath

protected ReferencePrefix accessPath
Access path.


referenceParent

protected ReferenceSuffix referenceParent
Reference parent.


statementParent

protected StatementContainer statementParent
Statement parent.

Constructor Detail

New

public New()
New.


New

public New(ReferencePrefix accessPath,
           TypeReference constructorName,
           ASTList<Expression> arguments)
New.

Parameters:
accessPath - a reference prefix.
constructorName - a type reference.
arguments - an expression mutable list.

New

public New(ReferencePrefix accessPath,
           TypeReference constructorName,
           ASTList<Expression> arguments,
           ClassDeclaration anonymousClass)
New.

Parameters:
accessPath - a reference prefix.
constructorName - a type reference.
arguments - an expression mutable list.
anonymousClass - a class declaration.

New

protected New(New proto)
New.

Parameters:
proto - a new.
Method Detail

deepClone

public New deepClone()
Deep clone.

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

makeParentRoleValid

public void makeParentRoleValid()
Make parent role valid.

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

getFirstElement

public SourceElement getFirstElement()
Description copied from class: JavaSourceElement
Finds the source element that occurs first in the source. The default implementation returns this element, which is correct for all terminal program elements, and many non terminals such as statements and prefixed operators.

Specified by:
getFirstElement in interface SourceElement
Overrides:
getFirstElement in class Operator
Returns:
the first source element in the syntactical representation of this element, may be equals to this element.
See Also:
JavaSourceElement.toSource(), JavaSourceElement.getStartPosition()

getLastElement

public SourceElement getLastElement()
Description copied from class: JavaSourceElement
Finds the source element that occurs last in the source. The default implementation returns this element, which is correct for all terminal program elements, and many non terminals such as statements and prefixed operators.

Specified by:
getLastElement in interface SourceElement
Overrides:
getLastElement in class Operator
Returns:
the last source element in the syntactical representation of this element, may be equals to this element.
See Also:
JavaSourceElement.toSource(), JavaSourceElement.getEndPosition()

getASTParent

public NonTerminalProgramElement getASTParent()
Get AST parent.

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

getArity

public int getArity()
Get arity.

Specified by:
getArity in class Operator
Returns:
the int value.

getPrecedence

public int getPrecedence()
Get precedence.

Specified by:
getPrecedence in class Operator
Returns:
the int value.

getNotation

public int getNotation()
Get notation.

Specified by:
getNotation in class Operator
Returns:
the int value.

getStatementContainer

public StatementContainer getStatementContainer()
Get statement container.

Specified by:
getStatementContainer in interface Statement
Returns:
the statement container.

getExpressionContainer

public ExpressionContainer getExpressionContainer()
Get expression container.

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

setExpressionContainer

public void setExpressionContainer(ExpressionContainer parent)
Set expression container.

Specified by:
setExpressionContainer in interface Expression
Overrides:
setExpressionContainer in class Operator
Parameters:
parent - an expression container.

setStatementContainer

public void setStatementContainer(StatementContainer parent)
Set statement container.

Specified by:
setStatementContainer in interface Statement
Parameters:
parent - a statement container.

getClassDeclaration

public ClassDeclaration getClassDeclaration()
Get class declaration.

Returns:
the class declaration.

setClassDeclaration

public void setClassDeclaration(ClassDeclaration decl)
Set class declaration.

Parameters:
decl - a class declaration.

getTypeDeclarationCount

public int getTypeDeclarationCount()
Get the number of type declarations in this container.

Specified by:
getTypeDeclarationCount in interface TypeDeclarationContainer
Returns:
the number of type declarations.

getTypeDeclarationAt

public TypeDeclaration getTypeDeclarationAt(int index)
Specified by:
getTypeDeclarationAt in interface TypeDeclarationContainer

getChildCount

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

Specified by:
getChildCount in interface NonTerminalProgramElement
Overrides:
getChildCount in class Operator
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
Overrides:
getChildAt in class Operator
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
Overrides:
getChildPositionCode in class TypeOperator
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)

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
Overrides:
replaceChild in class TypeOperator
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.

getReferencePrefix

public ReferencePrefix getReferencePrefix()
Get reference prefix.

Specified by:
getReferencePrefix in interface ReferenceSuffix
Returns:
the reference prefix.

setReferencePrefix

public void setReferencePrefix(ReferencePrefix x)
Set reference prefix.

Parameters:
x - a reference prefix.

getReferenceSuffix

public ReferenceSuffix getReferenceSuffix()
Get reference suffix.

Specified by:
getReferenceSuffix in interface ReferencePrefix
Returns:
the reference suffix.

setReferenceSuffix

public void setReferenceSuffix(ReferenceSuffix path)
Set reference suffix.

Specified by:
setReferenceSuffix in interface ReferencePrefix
Parameters:
path - a reference suffix.

getArguments

public ASTList<Expression> getArguments()
Get arguments.

Specified by:
getArguments in interface ConstructorReference
Overrides:
getArguments in class Operator
Returns:
the expression mutable list.

setArguments

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

Specified by:
setArguments in interface ConstructorReference
Overrides:
setArguments in class Operator
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