RECODER 0.92

recoder.java.declaration
Class VariableSpecification

java.lang.Object
  extended by recoder.java.JavaSourceElement
      extended by recoder.java.JavaProgramElement
          extended by recoder.java.JavaNonTerminalProgramElement
              extended by recoder.java.declaration.VariableSpecification
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, ProgramModelElement, Variable, AccessFlags, Declaration, ExpressionContainer, NamedProgramElement, NonTerminalProgramElement, ProgramElement, SourceElement, ModelElement, NamedModelElement
Direct Known Subclasses:
FieldSpecification

public class VariableSpecification
extends JavaNonTerminalProgramElement
implements Declaration, NamedProgramElement, ExpressionContainer, Variable

Variable specification that defines a variable name. This is a part of a VariableDeclarationand does not contain a type reference or own modifiers. Note that calls to modifiers are delegated to the enclosing variable declaration and are therefore discouraged. This was necessary to subtype Declaration as analyses are interested in the exact location of a variable name.

Author:
AL
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.java.ProgramElement
ProgramElement.TreeStructure
 
Nested classes/interfaces inherited from interface recoder.java.SourceElement
SourceElement.Position
 
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.ProgramModelElement
ProgramModelElement.LexicalOrder
 
Field Summary
 
Fields inherited from class recoder.java.JavaSourceElement
factory
 
Fields inherited from interface recoder.java.ProgramElement
STRUCTURAL_EQUALITY, STRUCTURAL_HASH_CODE
 
Fields inherited from interface recoder.java.ProgramElement
STRUCTURAL_EQUALITY, STRUCTURAL_HASH_CODE
 
Fields inherited from interface recoder.java.ProgramElement
STRUCTURAL_EQUALITY, STRUCTURAL_HASH_CODE
 
Fields inherited from interface recoder.abstraction.ProgramModelElement
LEXICAL_ORDER
 
Fields inherited from interface recoder.bytecode.AccessFlags
ABSTRACT, ANNOTATION, BRIDGE, ENUM, FINAL, INTERFACE, NATIVE, PRIVATE, PROTECTED, PUBLIC, STATIC, STRICT, SUPER, SYNCHRONIZED, SYNTHETIC, TRANSIENT, VARARGS, VOLATILE
 
Constructor Summary
  VariableSpecification()
          Variable specification.
  VariableSpecification(Identifier name)
          Variable specification.
  VariableSpecification(Identifier name, Expression init)
          Variable specification.
  VariableSpecification(Identifier name, int dimensions, Expression init)
          Variable specification.
protected VariableSpecification(VariableSpecification proto)
          Variable specification.
 
Method Summary
 void accept(SourceVisitor v)
          Receive a visitor, for instance a pretty printer.
 VariableSpecification deepClone()
          Deep clone.
 NonTerminalProgramElement getASTParent()
          Get AST parent.
 java.lang.String getBinaryName()
          Returns the binary name.
 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.
 ASTList<DeclarationSpecifier> getDeclarationSpecifiers()
          Get modifiers of the enclosing declaration.
 int getDimensions()
          Get dimensions.
 Expression getExpressionAt(int index)
           
 int getExpressionCount()
          Get the number of expressions in this container.
 SourceElement getFirstElement()
          Finds the source element that occurs first in the source.
 java.lang.String getFullName()
          Returns the maximal expanded name including all applicable qualifiers.
 Identifier getIdentifier()
          Get identifier.
 Expression getInitializer()
          Get initializer.
 SourceElement getLastElement()
          Finds the source element that occurs last in the source.
 java.lang.String getName()
          Get name.
 VariableDeclaration getParent()
          Get parent.
 ProgramModelInfo getProgramModelInfo()
          Returns the instance that can retrieve information about this program model element.
 Type getType()
          Returns the type of this variable.
 boolean isFinal()
          Test whether the declaration is final.
 boolean isStrictFp()
          Test whether the declaration is strictfp.
 void makeParentRoleValid()
          Make parent role valid.
 boolean replaceChild(ProgramElement p, ProgramElement q)
          Replace a single child in the current node.
 void setDeclarationSpecifiers(ASTList<DeclarationSpecifier> m)
          Set modifiers of the enclosing declaration.
 void setDimensions(int dimensions)
          Set dimensions.
 void setIdentifier(Identifier id)
          Set identifier.
 void setInitializer(Expression expr)
          Set initializer.
 void setParent(VariableDeclaration parent)
          Set parent.
 void setProgramModelInfo(ProgramModelInfo service)
          Sets the instance that can retrieve information about this program model element.
 
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.NonTerminalProgramElement
getIndexOfChild, getRoleOfChild, makeAllParentRolesValid, validateAll
 
Methods inherited from interface recoder.java.ProgramElement
getComments, getID, setComments
 
Methods inherited from interface recoder.java.SourceElement
getEndPosition, getFactory, getRelativePosition, getStartPosition, setEndPosition, setRelativePosition, setStartPosition, toSource
 
Methods inherited from interface recoder.ModelElement
validate
 
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, getRelativePosition, getStartPosition, setEndPosition, setRelativePosition, setStartPosition, toSource
 
Methods inherited from interface recoder.ModelElement
validate
 
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, getRelativePosition, getStartPosition, setEndPosition, setRelativePosition, setStartPosition, toSource
 
Methods inherited from interface recoder.ModelElement
validate
 
Methods inherited from interface recoder.ModelElement
validate
 

Constructor Detail

VariableSpecification

public VariableSpecification()
Variable specification.


VariableSpecification

public VariableSpecification(Identifier name)
Variable specification.

Parameters:
name - an identifier.

VariableSpecification

public VariableSpecification(Identifier name,
                             Expression init)
Variable specification.

Parameters:
name - an identifier.
init - an expression.

VariableSpecification

public VariableSpecification(Identifier name,
                             int dimensions,
                             Expression init)
Variable specification.

Parameters:
name - an identifier.
dimensions - an int value.
init - an expression.

VariableSpecification

protected VariableSpecification(VariableSpecification proto)
Variable specification.

Parameters:
proto - a variable specification.
Method Detail

deepClone

public VariableSpecification deepClone()
Deep clone.

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

makeParentRoleValid

public void makeParentRoleValid()
Make parent role valid.

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

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)

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.

setParent

public void setParent(VariableDeclaration parent)
Set parent.

Parameters:
parent - a variable declaration.

getParent

public VariableDeclaration getParent()
Get parent.

Returns:
the variable declaration.

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

getName

public final java.lang.String getName()
Get name.

Specified by:
getName in interface NamedModelElement
Returns:
the string.

getIdentifier

public Identifier getIdentifier()
Get identifier.

Specified by:
getIdentifier in interface NamedProgramElement
Returns:
the identifier.

setIdentifier

public void setIdentifier(Identifier id)
Set identifier.

Specified by:
setIdentifier in interface NamedProgramElement
Parameters:
id - an identifier.

setDimensions

public void setDimensions(int dimensions)
Set dimensions.

Parameters:
dimensions - an int value.

getDimensions

public int getDimensions()
Get dimensions.

Returns:
the int value.

setInitializer

public void setInitializer(Expression expr)
Set initializer.

Parameters:
expr - an expression.

getInitializer

public Expression getInitializer()
Get initializer.

Returns:
the expression.

getDeclarationSpecifiers

public ASTList<DeclarationSpecifier> getDeclarationSpecifiers()
Get modifiers of the enclosing declaration.

Specified by:
getDeclarationSpecifiers in interface Declaration
Returns:
the modifier mutable list.

setDeclarationSpecifiers

public void setDeclarationSpecifiers(ASTList<DeclarationSpecifier> m)
Set modifiers of the enclosing declaration.

Specified by:
setDeclarationSpecifiers in interface Declaration
Parameters:
m - a modifier mutable list.

isStrictFp

public boolean isStrictFp()
Test whether the declaration is strictfp.


isFinal

public boolean isFinal()
Test whether the declaration is final.

Specified by:
isFinal in interface Variable
Returns:
true if this variable is final, false otherwise.

getProgramModelInfo

public ProgramModelInfo getProgramModelInfo()
Description copied from interface: ProgramModelElement
Returns the instance that can retrieve information about this program model element.

Specified by:
getProgramModelInfo in interface ProgramModelElement
Returns:
the program model info of this element.

setProgramModelInfo

public void setProgramModelInfo(ProgramModelInfo service)
Description copied from interface: ProgramModelElement
Sets the instance that can retrieve information about this program model element. Should not be called from outside a service.

Specified by:
setProgramModelInfo in interface ProgramModelElement
Parameters:
service - the program model info to be used for this element.

getType

public Type getType()
Description copied from interface: Variable
Returns the type of this variable.

Specified by:
getType in interface Variable
Returns:
the type of this variable.

getFullName

public java.lang.String getFullName()
Description copied from interface: ProgramModelElement
Returns the maximal expanded name including all applicable qualifiers.

Specified by:
getFullName in interface ProgramModelElement
Returns:
the full name of this program model element.

getBinaryName

public java.lang.String getBinaryName()
Description copied from interface: ProgramModelElement
Returns the binary name. The binary name is the name this program model element would have in bytecode, i.e., how it either is read by the bytecode parser, or the name a compiler would give this element during the compilation process (if this program model element is represented in source code). See JLS, §13.1

Specified by:
getBinaryName in interface ProgramModelElement
Returns:
the bytecode name of this program model element

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()

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

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