RECODER 0.92

recoder.java.declaration
Class TypeArgumentDeclaration

java.lang.Object
  extended by recoder.java.JavaSourceElement
      extended by recoder.java.JavaProgramElement
          extended by recoder.java.JavaNonTerminalProgramElement
              extended by recoder.java.declaration.TypeArgumentDeclaration
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, TypeArgument, NonTerminalProgramElement, ProgramElement, TypeReferenceContainer, SourceElement, ModelElement

public class TypeArgumentDeclaration
extends JavaNonTerminalProgramElement
implements TypeReferenceContainer, TypeArgument

This class represents a TypeArgument, as e.g. given in variable declarations.

Author:
Tobias Gutzmann
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface recoder.java.ProgramElement
ProgramElement.TreeStructure
 
Nested classes/interfaces inherited from interface recoder.java.SourceElement
SourceElement.Position
 
Nested classes/interfaces inherited from interface recoder.abstraction.TypeArgument
TypeArgument.CapturedTypeArgument, TypeArgument.DescriptionImpl, TypeArgument.EqualsImpl, TypeArgument.WildcardMode
 
Field Summary
 
Fields inherited from class recoder.java.JavaSourceElement
factory
 
Fields inherited from interface recoder.java.ProgramElement
STRUCTURAL_EQUALITY, STRUCTURAL_HASH_CODE
 
Constructor Summary
  TypeArgumentDeclaration()
           
protected TypeArgumentDeclaration(TypeArgumentDeclaration proto)
           
  TypeArgumentDeclaration(TypeReference tr)
           
  TypeArgumentDeclaration(TypeReference tr, TypeArgument.WildcardMode wm)
           
 
Method Summary
 void accept(SourceVisitor v)
          Receive a visitor, for instance a pretty printer.
 TypeArgumentDeclaration deepClone()
          Creates a deep clone of the current source element.
 NonTerminalProgramElement getASTParent()
          Yields the syntactical parent node.
 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.
 SourceElement getFirstElement()
          Finds the source element that occurs first in the source.
 java.lang.String getFullSignature()
           
 Reference getParent()
           
 TypeParameter getTargetedTypeParameter()
           
 ASTList<TypeArgumentDeclaration> getTypeArguments()
          Returns type reference's type arguments, or null if wildcardMode == WildcardMode.Any
 java.lang.String getTypeName()
           
 TypeReference getTypeReference()
           
 TypeReference getTypeReferenceAt(int index)
           
 int getTypeReferenceCount()
          Get the number of type references in this container.
 TypeArgument.WildcardMode getWildcardMode()
           
 void makeParentRoleValid()
          Defaults to do nothing.
 boolean replaceChild(ProgramElement p, ProgramElement q)
          Replace a single non-null child in the current node.
 boolean semanticalEquality(TypeArgument tad)
           
 void setParent(Reference tr)
           
 void setTypeReference(TypeReference tr)
           
 void setWildcardMode(TypeArgument.WildcardMode wm)
           
 
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, 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
 
Methods inherited from interface recoder.java.ProgramElement
getComments, getID, setComments
 
Methods inherited from interface recoder.java.SourceElement
getEndPosition, getFactory, getLastElement, getRelativePosition, getStartPosition, setEndPosition, setRelativePosition, setStartPosition, toSource
 
Methods inherited from interface recoder.ModelElement
validate
 

Constructor Detail

TypeArgumentDeclaration

public TypeArgumentDeclaration()

TypeArgumentDeclaration

protected TypeArgumentDeclaration(TypeArgumentDeclaration proto)
Parameters:
proto -

TypeArgumentDeclaration

public TypeArgumentDeclaration(TypeReference tr)

TypeArgumentDeclaration

public TypeArgumentDeclaration(TypeReference tr,
                               TypeArgument.WildcardMode wm)
Method Detail

getTypeReferenceCount

public int getTypeReferenceCount()
Description copied from interface: TypeReferenceContainer
Get the number of type references in this container.

Specified by:
getTypeReferenceCount in interface TypeReferenceContainer
Returns:
the number of type references.

getTypeReferenceAt

public TypeReference getTypeReferenceAt(int index)
Specified by:
getTypeReferenceAt in interface TypeReferenceContainer

getChildCount

public int getChildCount()
Description copied from interface: NonTerminalProgramElement
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)
Description copied from interface: NonTerminalProgramElement
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

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)

replaceChild

public boolean replaceChild(ProgramElement p,
                            ProgramElement q)
Description copied from interface: NonTerminalProgramElement
Replace a single non-null 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.
Returns:
true if a replacement has occured, false otherwise.

getASTParent

public NonTerminalProgramElement getASTParent()
Description copied from interface: ProgramElement
Yields the syntactical parent node.

Specified by:
getASTParent in interface ProgramElement
Returns:
the parent node in the syntax tree.

getParent

public Reference getParent()

setParent

public void setParent(Reference tr)
Parameters:
tr - either a TypeReference, a URQ, or an MethodReference
Throws:
java.lang.IllegalArgumentException - if tr isn't of type TypeReference, URQ, or MethodReference

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.

deepClone

public TypeArgumentDeclaration deepClone()
Description copied from interface: SourceElement
Creates a deep clone of the current source element. For NonTerminalProgramElements, the parent roles are valid, except that the root element is not included anywhere and hence has no set parents, of course. This method also clones Comment s, but does not clone derived information such as scopes.

Specified by:
deepClone in interface SourceElement

makeParentRoleValid

public void makeParentRoleValid()
Description copied from class: JavaNonTerminalProgramElement
Defaults to do nothing.

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

getWildcardMode

public TypeArgument.WildcardMode getWildcardMode()
Specified by:
getWildcardMode in interface TypeArgument

getTypeName

public java.lang.String getTypeName()
Specified by:
getTypeName in interface TypeArgument

getTypeArguments

public ASTList<TypeArgumentDeclaration> getTypeArguments()
Returns type reference's type arguments, or null if wildcardMode == WildcardMode.Any

Specified by:
getTypeArguments in interface TypeArgument

setWildcardMode

public void setWildcardMode(TypeArgument.WildcardMode wm)

getTypeReference

public TypeReference getTypeReference()

setTypeReference

public void setTypeReference(TypeReference tr)

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 JavaSourceElement
Returns:
the first source element in the syntactical representation of this element, may be equals to this element.
See Also:
JavaSourceElement.toSource(), JavaSourceElement.getStartPosition()

semanticalEquality

public boolean semanticalEquality(TypeArgument tad)
Specified by:
semanticalEquality in interface TypeArgument

getTargetedTypeParameter

public TypeParameter getTargetedTypeParameter()
Specified by:
getTargetedTypeParameter in interface TypeArgument
Returns:
the targeted TypeParameter of the type, if the parent of the type argument is a TypeReference. null otherwise.

getFullSignature

public java.lang.String getFullSignature()
Specified by:
getFullSignature in interface TypeArgument

RECODER 0.92