scale.clef.expr
Class AddressLiteral

java.lang.Object
  extended by scale.common.Root
      extended by scale.clef.Node
          extended by scale.clef.expr.Expression
              extended by scale.clef.expr.Literal
                  extended by scale.clef.expr.AddressLiteral
All Implemented Interfaces:
AnnotationInterface, DisplayNode

public class AddressLiteral
extends Literal

A class which represents the address of a Declaration.

$Id: AddressLiteral.java,v 1.28 2007-08-28 17:58:20 burrill Exp $

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


Constructor Summary
AddressLiteral(Type type, Declaration decl)
           
AddressLiteral(Type type, Declaration decl, long offset)
           
AddressLiteral(Type type, Literal value, long offset)
           
 
Method Summary
 AddressLiteral copy(Type type)
          Return a copy of the address literal with a different type.
 boolean equivalent(java.lang.Object exp)
          Return true if the two expressions are equivalent.
 Declaration getDecl()
          Return the declaration whose address is represented or null.
 void getDeclList(java.util.AbstractCollection<Declaration> varList)
          Add all declarations referenced in this expression to the collection.
 java.lang.String getDisplayLabel()
          Return short description of current node.
 java.lang.String getGenericValue()
          Get the string version of the address literal using C syntax.
 long getOffset()
          Return the offset from the declaration.
 Literal getValue()
          Return the literal whose address is represented or null.
 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.expr.Literal
executionCostEstimate, findCoefficient, formatRealValue, getConstantValue, getCount, getElement, isOne, isZero, linearity
 
Methods inherited from class scale.clef.expr.Expression
canonical, containsDeclaration, getCoreType, getDisplayColorHint, getDisplayShapeHint, getPointedToCore, getType, hasTrueFalseResult, isSimpleOp, setType
 
Methods inherited from class scale.clef.Node
getChild, getSourceLineNumber, numChildren, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toString, toStringChildren
 
Methods inherited from class scale.common.Root
addAnnotation, allAnnotations, allMatchingAnnotations, getAnnotation, getDisplayName, getDisplayString, getNodeCount, getNodeID, hasAnnotation, hasEqualAnnotation, hashCode, 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

AddressLiteral

public AddressLiteral(Type type,
                      Literal value,
                      long offset)
Parameters:
value - is the literal whose address is represented
offset - is the offset from the start of the literal

AddressLiteral

public AddressLiteral(Type type,
                      Declaration decl,
                      long offset)
Parameters:
decl - is the declaration whose address is represented
offset - is the offset from the start of the declaration

AddressLiteral

public AddressLiteral(Type type,
                      Declaration decl)
Parameters:
decl - is the declaration whose address is represented
Method Detail

copy

public AddressLiteral copy(Type type)
Return a copy of the address literal with a different type.


equivalent

public boolean equivalent(java.lang.Object exp)
Return true if the two expressions are equivalent.

Overrides:
equivalent in class Expression

getDisplayLabel

public java.lang.String getDisplayLabel()
Return short description of current node.

Specified by:
getDisplayLabel in interface DisplayNode
Overrides:
getDisplayLabel in class Literal

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 Expression

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

getOffset

public final long getOffset()
Return the offset from the declaration.


getValue

public final Literal getValue()
Return the literal whose address is represented or null.


getDecl

public final Declaration getDecl()
Return the declaration whose address is represented or null.

Overrides:
getDecl in class Node

getGenericValue

public java.lang.String getGenericValue()
Get the string version of the address literal using C syntax. For another language, use getValue() which returns an object that can then be displayed using logic specific to the target language.

Overrides:
getGenericValue in class Literal
Returns:
a String already converted for display using C syntax.

getDeclList

public void getDeclList(java.util.AbstractCollection<Declaration> varList)
Description copied from class: Expression
Add all declarations referenced in this expression to the collection.

Overrides:
getDeclList in class Literal