scale.clef.decl
Class FormalDecl

java.lang.Object
  extended by scale.common.Root
      extended by scale.clef.Node
          extended by scale.clef.decl.Declaration
              extended by scale.clef.decl.ValueDecl
                  extended by scale.clef.decl.VariableDecl
                      extended by scale.clef.decl.FormalDecl
All Implemented Interfaces:
java.lang.Comparable, AnnotationInterface, DisplayNode
Direct Known Subclasses:
UnknownFormals

public class FormalDecl
extends VariableDecl

This class represents a formal parameter to a procedure/function.

$Id: FormalDecl.java,v 1.43 2007-03-21 13:31:51 burrill Exp $

Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.


Field Summary
 
Fields inherited from class scale.clef.decl.VariableDecl
ignoreAddressTaken
 
Constructor Summary
FormalDecl(java.lang.String name, Type type)
           
FormalDecl(java.lang.String name, Type type, ParameterMode passByMode)
           
FormalDecl(java.lang.String name, Type type, ParameterMode passByMode, Expression defaultValue)
           
 
Method Summary
 Declaration copy(java.lang.String name)
          Return a copy of this Declaration but with a different name.
 Literal getConstantValue()
          Return the constant value of the expression.
 Expression getDefaultValue()
          Return the default value for this parameter (unused).
 ParameterMode getMode()
          Return the parameter passing mode.
 boolean isFormalDecl()
          Return true if this variable is an argument to the routine.
 FormalDecl returnFormalDecl()
          Re a FormalDecl instance or null.
protected  void setDefaultValue(Expression d)
          Set the default value for this parameter (unused).
 void setMode(ParameterMode passByMode)
          Specify the parameter passing mode.
 java.lang.String toStringSpecial()
          This method allows sub-classes to provide class specific stuff to the string.
 void visit(Predicate p)
          Process a node by calling its associated routine.
 
Methods inherited from class scale.clef.decl.VariableDecl
addressTaken, computeAttributes, declareFtnResultVar, getAddressRegister, getDisplacement, getInitialValue, getOriginal, getStorageLoc, getValueRegister, hasHiddenAliases, hasHiddenPtrAliases, hasInvalidArrayReferences, inMemory, isCommonBaseVar, isCommonBaseVariable, isConst, isFtnResultVar, isNotAliasCandidate, isNotSSACandidate, isReferenced, isRestricted, isStatic, isStorageLocSet, isTemporary, isVariableDecl, isVolatile, optimizationCandidate, residency, returnVariableDecl, setAddressRegister, setAddressTaken, setDisplacement, setHiddenAliases, setHiddenPtrAliases, setInitialValue, setInvalidArrayReferences, setReferenced, setResidency, setStorageLoc, setTemporary, setType, setValue, setValueRegister, setVisibility, shouldBeInRegister, specifyCommonBaseVariable, valueRegMode
 
Methods inherited from class scale.clef.decl.ValueDecl
getChild, getValue, isValueDecl, numChildren, returnValueDecl
 
Methods inherited from class scale.clef.decl.Declaration
accessibility, compareTo, getActualType, getAlias, getCoreType, getDecl, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getName, getPointedToCore, getTag, getType, hashCode, isCaseLabelDecl, isEnumElementDecl, isEquivalenceDecl, isExceptionDecl, isFieldDecl, isFileDecl, isForwardProcedureDecl, isGlobal, isLabelDecl, isProcedureDecl, isPure, isRenamed, isRenamedVariableDecl, isRoutineDecl, isStmtFtnDecl, isTypeDecl, isTypeName, isUnknownFormals, isVirtual, isWeak, returnCaseLabelDecl, returnEnumElementDecl, returnEquivalenceDecl, returnExceptionDecl, returnFieldDecl, returnFileDecl, returnForwardProcedureDecl, returnLabelDecl, returnProcedureDecl, returnRenamedVariableDecl, returnRoutineDecl, returnStmtFtnDecl, returnTypeDecl, returnTypeName, returnUnknownFormals, setAccessibility, setAlias, setName, setTag, setWeak, visibility
 
Methods inherited from class scale.clef.Node
getSourceLineNumber, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toString, toStringChildren
 
Methods inherited from class scale.common.Root
addAnnotation, allAnnotations, allMatchingAnnotations, getAnnotation, getDisplayName, getDisplayString, getNodeCount, getNodeID, hasAnnotation, hasEqualAnnotation, removeAnnotation, removeAnnotations, toStringAnnotations, toStringClass, trace, trace, trace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FormalDecl

public FormalDecl(java.lang.String name,
                  Type type,
                  ParameterMode passByMode,
                  Expression defaultValue)

FormalDecl

public FormalDecl(java.lang.String name,
                  Type type,
                  ParameterMode passByMode)

FormalDecl

public FormalDecl(java.lang.String name,
                  Type type)
Method Detail

toStringSpecial

public java.lang.String toStringSpecial()
Description copied from class: Node
This method allows sub-classes to provide class specific stuff to the string.

Overrides:
toStringSpecial in class VariableDecl

visit

public void visit(Predicate p)
Description copied from class: Node
Process a node by calling its associated routine. See the "visitor" design pattern in Design Patterns: Elements of Reusable Object-Oriented Software by E. Gamma, et al, Addison Wesley, ISBN 0-201-63361-2.

Each class has a visit(Predicate p) method. For example, in class ABC:

   public void visit(Predicate p)
   {
     p.visitABC(this);
   }
 
and the class that implements Predicate has a method
   public void visitABC(Node n)
   {
     ABC a = (ABC) n;
     ...
   }
 
Thus, the class that implements Predicate can call
   n.visit(this);
 
where n is a Node sub-class without determining which specific sub-class n is. The visit pattern basically avoids implementing a large switch statement or defining different methods in each class for some purpose.

Overrides:
visit in class VariableDecl
See Also:
Predicate

getMode

public final ParameterMode getMode()
Return the parameter passing mode.

Overrides:
getMode in class Declaration
See Also:
ParameterMode

getDefaultValue

public final Expression getDefaultValue()
Return the default value for this parameter (unused).


setMode

public final void setMode(ParameterMode passByMode)
Specify the parameter passing mode.


setDefaultValue

protected final void setDefaultValue(Expression d)
Set the default value for this parameter (unused).


getConstantValue

public Literal getConstantValue()
Return the constant value of the expression.

Overrides:
getConstantValue in class VariableDecl
See Also:
Lattice

copy

public Declaration copy(java.lang.String name)
Return a copy of this Declaration but with a different name.

Overrides:
copy in class VariableDecl

isFormalDecl

public final boolean isFormalDecl()
Return true if this variable is an argument to the routine.

Overrides:
isFormalDecl in class Declaration

returnFormalDecl

public final FormalDecl returnFormalDecl()
Description copied from class: Declaration
Re a FormalDecl instance or null.

Overrides:
returnFormalDecl in class Declaration