scale.clef.type
Class VoidType

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

public class VoidType
extends Type

This class represents the void type in C and is used to represent the absence of a type.

$Id: VoidType.java,v 1.39 2007-03-21 13:32:01 burrill Exp $

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


Field Summary
static VoidType type
          There is only one void type.
 
Method Summary
 int alignment(Machine machine)
          Calculate the alignment needed for this data type.
 boolean equivalent(Type t)
          Return true because all void types are equivalent.
 boolean isVoidType()
          Return true if type represents no type.
 long memorySize(Machine machine)
          Calculate how many addressable memory units are needed to represent the type.
 long numberOfElements()
          Return the number of elements represented by this type which is 0 for void.
 VoidType returnVoidType()
          Return if this is a VoidType, return this.
 java.lang.String toString()
           
 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.
 void visit(TypePredicate p)
          Process a node by calling its associated routine.
 
Methods inherited from class scale.clef.type.Type
canBeInRegister, cleanup, elementSize, getCompleteType, getCoreType, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getEquivalentType, getNonAttributeType, getNonConstType, getPointedTo, getPointedToCore, getRank, getSignedType, getTag, getType, isAggregateType, isAllocArrayType, isArrayType, isAtomicType, isAttributeSet, isBooleanType, isCharacterType, isClassType, isComplexType, isCompositeType, isConst, isEnumerationType, isFixedArrayType, isFloatType, isFortranCharType, isIncompleteType, isIntegerType, isNamedType, isNumericType, isPointerType, isProcedureType, isRealType, isRefType, isRestricted, isSigned, isUnionType, isVolatile, mapTypeToCString, mapTypeToF77String, memorySizeAsInt, nextVisit, precedence, registerType, returnAggregateType, returnAllocArrayType, returnArrayType, returnAtomicType, returnBooleanType, returnCharacterType, returnComplexType, returnCompositeType, returnEnumerationType, returnFixedArrayType, returnFloatType, returnFortranCharType, returnIncompleteType, returnIntegerType, returnNumericType, returnPointerType, returnProcedureType, returnRealType, returnRecordType, returnRefType, returnSignedIntegerType, returnUnionType, returnUnsignedIntegerType, setTag, setVisited, specifyCanBeInRegister, toStringShort, visited
 
Methods inherited from class scale.clef.Node
getChild, getDecl, getSourceLineNumber, numChildren, setAnnotationLevel, setReportLevel, setSourceLineNumber, 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
 

Field Detail

type

public static final VoidType type
There is only one void type.

Method Detail

isVoidType

public boolean isVoidType()
Return true if type represents no type.

Overrides:
isVoidType in class Type

returnVoidType

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

Overrides:
returnVoidType in class Type

toString

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

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 Node

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 Type
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 Type
See Also:
TypePredicate

equivalent

public boolean equivalent(Type t)
Return true because all void types are equivalent.

Specified by:
equivalent in class Type

numberOfElements

public long numberOfElements()
Return the number of elements represented by this type which is 0 for void.

Overrides:
numberOfElements in class Type

memorySize

public long memorySize(Machine machine)
Calculate how many addressable memory units are needed to represent the type.

Specified by:
memorySize in class Type
Parameters:
machine - is the machine-specific data machine
Returns:
the number of addressable memory units required to represent this type

alignment

public int alignment(Machine machine)
Calculate the alignment needed for this data type.

Specified by:
alignment in class Type