scale.clef.type
Class UnsignedIntegerType

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.IntegerType
                          extended by scale.clef.type.UnsignedIntegerType
All Implemented Interfaces:
AnnotationInterface, DisplayNode

public class UnsignedIntegerType
extends IntegerType

The UnsignedIntegerType class represents a primitive unsigned integer type.

$Id: UnsignedIntegerType.java,v 1.4 2007-10-04 19:58:09 burrill Exp $

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

Examples of unsigned integer types are C's unsigned short, unsigned int, and unsigned long types. The size of the type is specified as the minimum number of bits that are required to represent a value of that type.


Field Summary
 
Fields inherited from class scale.clef.type.IntegerType
cCharsAreSigned
 
Method Summary
static void cleanup()
          Remove static lists of types.
static UnsignedIntegerType create(int bits)
          Re-use an existing instance of a particular integer type.
 Type getSignedType()
          Return the equivalent signed type.
static java.util.Enumeration<UnsignedIntegerType> getTypes()
          Return an enumeration of all the different types.
 boolean isSigned()
          Return true if the type is signed.
 java.lang.String mapTypeToCString()
          Map a type to a C string.
 java.lang.String mapTypeToF77String()
          Map a type to a Fortran string.
 long putValueInRange(long value)
          Transform an integer value to be in a suitable range.
 UnsignedIntegerType returnUnsignedIntegerType()
          Return if this is a UnsignedIntegerType, return this.
 java.lang.String toString()
           
 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.IntegerType
bitSize, equivalent, isIntegerType, returnIntegerType, toStringShort
 
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, getTag, getType, isAggregateType, isAllocArrayType, isArrayType, isAttributeSet, isBooleanType, isCharacterType, isClassType, isComplexType, isCompositeType, isConst, isEnumerationType, isFixedArrayType, isFloatType, isFortranCharType, isIncompleteType, isNamedType, isPointerType, isProcedureType, isRealType, isRefType, isRestricted, isUnionType, isVoidType, isVolatile, memorySizeAsInt, nextVisit, numberOfElements, precedence, registerType, returnAggregateType, returnAllocArrayType, returnArrayType, returnBooleanType, returnCharacterType, returnComplexType, returnCompositeType, returnEnumerationType, returnFixedArrayType, returnFloatType, returnFortranCharType, returnIncompleteType, returnPointerType, returnProcedureType, returnRealType, returnRecordType, returnRefType, returnSignedIntegerType, returnUnionType, 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 UnsignedIntegerType create(int bits)
Re-use an existing instance of a particular integer type. If no equivalent integer type exists, create a new one.


getSignedType

public Type getSignedType()
Return the equivalent signed type.

Specified by:
getSignedType in class IntegerType

isSigned

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

Overrides:
isSigned in class Type

returnUnsignedIntegerType

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

Overrides:
returnUnsignedIntegerType in class Type

toString

public java.lang.String toString()
Overrides:
toString 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 IntegerType
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 IntegerType
See Also:
TypePredicate

putValueInRange

public long putValueInRange(long value)
Transform an integer value to be in a suitable range. The value is truncated according the the number of bits in the integer.

Specified by:
putValueInRange in class IntegerType

getTypes

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


mapTypeToCString

public java.lang.String mapTypeToCString()
Map a type to a C string. The string representation is based upon the size of the type.

Specified by:
mapTypeToCString in class IntegerType
Returns:
the string representation of the type

mapTypeToF77String

public java.lang.String mapTypeToF77String()
Map a type to a Fortran string. The string representation is based upon the size of the type.

Specified by:
mapTypeToF77String in class IntegerType
Returns:
the string representation of the type

cleanup

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