|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.common.Root scale.clef.Node scale.clef.type.Type scale.clef.type.AtomicType scale.clef.type.NumericType scale.clef.type.CharacterType
public class CharacterType
This class represents the character type for languages other than C.
$Id: CharacterType.java,v 1.47 2007-08-27 18:13:31 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
An IntegerType
is used for the
C char
type.
Ideally, the source language should not specify a particular character format. However, many C programs rely on the ANSI character set, and Java prescribes the use of Unicode. Hence, user code may use these attributes to specify the format (and implicitly the size) of the character set. If the language does not require a particular format it may specify Any. The generation interface assumes a default of Any.
Field Summary | |
---|---|
static int |
cAnsi
Character representation is 8-bit ASCII. |
static int |
cAny
Character representation is unknown. |
static int |
cEbcdic
Character representation is 8-bit EBCDIC. |
static int |
cUnicode
Character representation is 16-bit unicode. |
static java.lang.String[] |
formatMap
Map from character type to a string representing that type. |
Method Summary | |
---|---|
int |
bitSize()
Return the number of bits required to represent the type. |
static void |
cleanup()
Remove static lists of types. |
static CharacterType |
create(int format)
Re-use an existing instance of a particular character type. |
boolean |
equivalent(Type t)
Return true if the types are equivalent. |
int |
getFormat()
|
static java.util.Enumeration<CharacterType> |
getTypes()
Return an enumeration of all the different types. |
boolean |
isCharacterType()
Return true if type represents a character type. |
java.lang.String |
mapTypeToCString()
Map a type to a C string. |
CharacterType |
returnCharacterType()
Return if this is a CharacterType , 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.NumericType |
---|
isNumericType, returnNumericType |
Methods inherited from class scale.clef.type.AtomicType |
---|
alignment, isAtomicType, memorySize, returnAtomicType |
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 |
Field Detail |
---|
public static final int cAny
public static final int cAnsi
public static final int cEbcdic
public static final int cUnicode
public static final java.lang.String[] formatMap
Method Detail |
---|
public static CharacterType create(int format)
format
- the type of character formatpublic final boolean isCharacterType()
isCharacterType
in class Type
public final CharacterType returnCharacterType()
Type
this
is a CharacterType
, return this
. Otherwise, return
null
.
returnCharacterType
in class Type
public java.lang.String toString()
toString
in class Type
public void visit(Predicate p)
Node
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.
visit
in class NumericType
Predicate
public void visit(TypePredicate p)
Type
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.
visit
in class NumericType
TypePredicate
public final int getFormat()
public boolean equivalent(Type t)
equivalent
in class Type
public static java.util.Enumeration<CharacterType> getTypes()
public int bitSize()
AtomicType
bitSize
in class AtomicType
public java.lang.String mapTypeToCString()
mapTypeToCString
in class Type
public static void cleanup()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |