scale.clef.decl
Class UnknownFormals

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
                          extended by scale.clef.decl.UnknownFormals
All Implemented Interfaces:
java.lang.Comparable, AnnotationInterface, DisplayNode

public class UnknownFormals
extends FormalDecl

UnknownFormals are used to specify that the remaining parameter declarations of the function are unknown.

$Id: UnknownFormals.java,v 1.29 2007-10-04 19:58:04 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
UnknownFormals()
          Construct a unknown formal parameter list (… in C).
UnknownFormals(Type type)
          Construct a unknown formal parameter list (… in C).
 
Method Summary
 Declaration copy(java.lang.String name)
          Return a copy of this Declaration but with a different name.
 boolean isUnknownFormals()
          Return true if UnknownFormals instance.
 UnknownFormals returnUnknownFormals()
          Return a UnknownFormals instance or null.
 void visit(Predicate p)
          Process a node by calling its associated routine.
 
Methods inherited from class scale.clef.decl.FormalDecl
getConstantValue, getDefaultValue, getMode, isFormalDecl, returnFormalDecl, setDefaultValue, setMode, toStringSpecial
 
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, isVirtual, isWeak, returnCaseLabelDecl, returnEnumElementDecl, returnEquivalenceDecl, returnExceptionDecl, returnFieldDecl, returnFileDecl, returnForwardProcedureDecl, returnLabelDecl, returnProcedureDecl, returnRenamedVariableDecl, returnRoutineDecl, returnStmtFtnDecl, returnTypeDecl, returnTypeName, 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

UnknownFormals

public UnknownFormals()
Construct a unknown formal parameter list (… in C). Creates a Formal Declaration with the name __unknown__, no type, pass by value, and no default expression.


UnknownFormals

public UnknownFormals(Type type)
Construct a unknown formal parameter list (… in C).

Method Detail

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 FormalDecl
See Also:
Predicate

copy

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

Overrides:
copy in class FormalDecl

isUnknownFormals

public final boolean isUnknownFormals()
Description copied from class: Declaration
Return true if UnknownFormals instance.

Overrides:
isUnknownFormals in class Declaration

returnUnknownFormals

public final UnknownFormals returnUnknownFormals()
Description copied from class: Declaration
Return a UnknownFormals instance or null.

Overrides:
returnUnknownFormals in class Declaration