scale.clef.decl
Class CaseLabelDecl

java.lang.Object
  extended by scale.common.Root
      extended by scale.clef.Node
          extended by scale.clef.decl.Declaration
              extended by scale.clef.decl.LabelDecl
                  extended by scale.clef.decl.CaseLabelDecl
All Implemented Interfaces:
java.lang.Comparable, AnnotationInterface, DisplayNode

public class CaseLabelDecl
extends LabelDecl

This class represents a C case label in a switch statement.

$Id: CaseLabelDecl.java,v 1.25 2007-03-21 13:31:50 burrill Exp $

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


Constructor Summary
CaseLabelDecl(java.lang.String name, Expression value)
           
 
Method Summary
 Declaration copy(java.lang.String name)
          Return a copy of this Declaration but with a different name.
 Node getChild(int i)
          Return the specified AST child of this node.
 Expression getExpr()
          Return the case label value.
 boolean isCaseLabelDecl()
          Return true if CaseLabelDecl instance.
 int numChildren()
          Return the number of AST children of this node.
 CaseLabelDecl returnCaseLabelDecl()
          Return a CaseLabelDecl instance or null.
 void setExpr(Expression value)
          Set the value of the case label.
 void visit(Predicate p)
          Process a node by calling its associated routine.
 
Methods inherited from class scale.clef.decl.LabelDecl
isLabelDecl, returnLabelDecl
 
Methods inherited from class scale.clef.decl.Declaration
accessibility, addressTaken, compareTo, getActualType, getAddressRegister, getAlias, getConstantValue, getCoreType, getDecl, getDisplacement, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getMode, getName, getPointedToCore, getStorageLoc, getTag, getType, getValueRegister, hashCode, hasHiddenAliases, inMemory, isCommonBaseVariable, isConst, isEnumElementDecl, isEquivalenceDecl, isExceptionDecl, isFieldDecl, isFileDecl, isFormalDecl, isForwardProcedureDecl, isFtnResultVar, isGlobal, isProcedureDecl, isPure, isReferenced, isRenamed, isRenamedVariableDecl, isRoutineDecl, isStmtFtnDecl, isTemporary, isTypeDecl, isTypeName, isUnknownFormals, isValueDecl, isVariableDecl, isVirtual, isWeak, residency, returnEnumElementDecl, returnEquivalenceDecl, returnExceptionDecl, returnFieldDecl, returnFileDecl, returnFormalDecl, returnForwardProcedureDecl, returnProcedureDecl, returnRenamedVariableDecl, returnRoutineDecl, returnStmtFtnDecl, returnTypeDecl, returnTypeName, returnUnknownFormals, returnValueDecl, returnVariableDecl, setAccessibility, setAddressRegister, setAddressTaken, setAlias, setDisplacement, setName, setReferenced, setResidency, setStorageLoc, setTag, setType, setValueRegister, setVisibility, setWeak, toStringSpecial, valueRegMode, 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

CaseLabelDecl

public CaseLabelDecl(java.lang.String name,
                     Expression value)
Parameters:
name - - the label name
value - - the case value
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 LabelDecl
See Also:
Predicate

getExpr

public Expression getExpr()
Return the case label value.


setExpr

public void setExpr(Expression value)
Set the value of the case label.


getChild

public Node getChild(int i)
Return the specified AST child of this node.

Overrides:
getChild in class Node

numChildren

public int numChildren()
Return the number of AST children of this node.

Overrides:
numChildren in class Node

copy

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

Overrides:
copy in class LabelDecl

isCaseLabelDecl

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

Overrides:
isCaseLabelDecl in class Declaration

returnCaseLabelDecl

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

Overrides:
returnCaseLabelDecl in class Declaration