scale.clef.type
Class FloatType

java.lang.Object
  extended by scale.common.Root
      extended by scale.clef.Node
          extended by scale.clef.type.Type
              extended by scale.clef.type.AtomicType
                  extended by scale.clef.type.NumericType
                      extended by scale.clef.type.RealType
                          extended by scale.clef.type.FloatType
All Implemented Interfaces:
AnnotationInterface, DisplayNode

public class FloatType
extends RealType

This class repsents floating point types such as C's float and double types.

$Id: FloatType.java,v 1.54 2007-08-27 18:13:32 burrill Exp $

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


Method Summary
static void cleanup()
          Remove static lists of types.
static FloatType create(int minbitSize)
          Re-use an existing instance of a particular float type.
 boolean equivalent(Type t)
          Return true if the types are equivalent.
static java.util.Enumeration<FloatType> getTypes()
          Return an enumeration of all the different types.
 boolean isFloatType()
          Return true if type represents a character type.
 boolean isSigned()
          Return true if the type is signed.
 double putValueInRange(double value)
          Transform a value to be in a suitable range.
 FloatType returnFloatType()
          Return if this is a FloatType return this.
 java.lang.String toString()
           
 java.lang.String toStringShort()
           
 void visit(Predicate p)
          Process a node by calling its associated routine.
 void visit(TypePredicate p)
          Process a node by calling its associated routine.
 
Methods inherited from class scale.clef.type.RealType
bitSize, isRealType, mapTypeToCString, mapTypeToF77String, returnRealType
 
Methods inherited from class scale.clef.type.NumericType
isNumericType, returnNumericType
 
Methods inherited from class scale.clef.type.AtomicType
alignment, isAtomicType, memorySize, returnAtomicType
 
Methods inherited from class scale.clef.type.Type
canBeInRegister, elementSize, getCompleteType, getCoreType, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getEquivalentType, getNonAttributeType, getNonConstType, getPointedTo, getPointedToCore, getRank, getSignedType, getTag, getType, isAggregateType, isAllocArrayType, isArrayType, isAttributeSet, isBooleanType, isCharacterType, isClassType, isComplexType, isCompositeType, isConst, isEnumerationType, isFixedArrayType, isFortranCharType, isIncompleteType, isIntegerType, isNamedType, isPointerType, isProcedureType, isRefType, isRestricted, isUnionType, isVoidType, isVolatile, memorySizeAsInt, nextVisit, numberOfElements, precedence, registerType, returnAggregateType, returnAllocArrayType, returnArrayType, returnBooleanType, returnCharacterType, returnComplexType, returnCompositeType, returnEnumerationType, returnFixedArrayType, returnFortranCharType, returnIncompleteType, returnIntegerType, returnPointerType, returnProcedureType, returnRecordType, returnRefType, returnSignedIntegerType, returnUnionType, returnUnsignedIntegerType, returnVoidType, setTag, setVisited, specifyCanBeInRegister, visited
 
Methods inherited from class scale.clef.Node
getChild, getDecl, getSourceLineNumber, numChildren, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toStringChildren, toStringSpecial
 
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
 

Method Detail

create

public static FloatType create(int minbitSize)
Re-use an existing instance of a particular float type. If no equivalent float type exists, create a new one.

Parameters:
minbitSize - is the minimum number of bits required for the representation

isSigned

public final boolean isSigned()
Description copied from class: Type
Return true if the type is signed.

Overrides:
isSigned in class Type

isFloatType

public final boolean isFloatType()
Return true if type represents a character type.

Overrides:
isFloatType in class Type

returnFloatType

public final FloatType returnFloatType()
Description copied from class: Type
Return if this is a FloatType return this. Otherwise, return null.

Overrides:
returnFloatType in class Type

putValueInRange

public double putValueInRange(double value)
Transform a value to be in a suitable range. This method returns the original value unmodified.


toString

public java.lang.String toString()
Overrides:
toString in class Type

toStringShort

public java.lang.String toStringShort()
Overrides:
toStringShort in class Type

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

visit

public void visit(TypePredicate p)
Description copied from class: Type
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 type class has a visit(TypePredicate 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 TypePredicate 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 RealType
See Also:
TypePredicate

equivalent

public boolean equivalent(Type t)
Return true if the types are equivalent.

Specified by:
equivalent in class Type

getTypes

public static java.util.Enumeration<FloatType> getTypes()
Return an enumeration of all the different types.


cleanup

public static void cleanup()
Remove static lists of types.