coins.sym
Class PointerTypeImpl

java.lang.Object
  extended bycoins.sym.SymImpl
      extended bycoins.sym.TypeImpl
          extended bycoins.sym.PointerTypeImpl
All Implemented Interfaces:
java.lang.Cloneable, HasStringObject, PointerType, Sym, Sym0, Type

public class PointerTypeImpl
extends TypeImpl
implements PointerType

PointerTypeImpl Class


Field Summary
(package private)  long fElemCount
          Element count if this pointer is declared as an array.
(package private)  long fLowerBound
          Lower bound of array subscript if this pointer is declared as an array.
(package private)  Type fPointedType
          Type of pointed object.
 
Fields inherited from class coins.sym.TypeImpl
fCompleteType, fConst, fOrigin, fRestrict, fTypeCore, fTypeKind, fVolatile
 
Fields inherited from class coins.sym.SymImpl
fDbgLevel, fDefinedIn, fFlagBox, fKind, fName, fNextSym, fRecordedIn, fSourceInf, fSymInf, fType, fUniqueNameSym, fWork, machineParam, sourceLanguage, symRoot
 
Fields inherited from interface coins.sym.Type
KIND_ADDRESS, KIND_ALIGNMENT, KIND_BASE_LIM, KIND_BOOL, KIND_CHAR, KIND_DEFINED, KIND_DOUBLE, KIND_ENUM, KIND_FLOAT, KIND_FLOAT_LOWER_LIM, KIND_FLOAT_UPPER_LIM, KIND_INT, KIND_INT_UPPER_LIM, KIND_LONG, KIND_LONG_DOUBLE, KIND_LONG_LONG, KIND_OFFSET, KIND_POINTER, KIND_RANKS, KIND_REGION, KIND_SHORT, KIND_STRING, KIND_STRUCT, KIND_SUBP, KIND_U_CHAR, KIND_U_INT, KIND_U_LONG, KIND_U_LONG_LONG, KIND_U_SHORT, KIND_UNDEF, KIND_UNION, KIND_UNSIGNED_LOWER_LIM, KIND_VECTOR, KIND_VOID, KIND_WCHAR
 
Fields inherited from interface coins.sym.Sym
KIND_NAME, VISIBILITY
 
Fields inherited from interface coins.sym.Sym0
FLAG_ADDRESS_TAKEN, FLAG_CASTLESS_SUBP, FLAG_COMMON, FLAG_COMPLEX_STRUCT, FLAG_DERIVED_SYM, FLAG_GENERATED_SYM, FLAG_INCOMPLETE_TYPE, FLAG_POINTER_OPERATION, FLAG_REGION_ELEM, FLAG_RESERVED_NAME, FLAG_SIZEOF_TAKEN, FLAG_UNFIXED_SIZE, FLAG_UNIFORM_SIZE, FLAG_VALUE_IS_ASSIGNED, KIND_AREG, KIND_BOOL_CONST, KIND_CHAR_CONST, KIND_CONST_FIRST, KIND_CONST_LAST, KIND_ELEM, KIND_EXP_ID, KIND_FLOAT_CONST, KIND_INT_CONST, KIND_LABEL, KIND_MREG, KIND_NAMED_CONST, KIND_OTHER, KIND_PARAM, KIND_REMOVED, KIND_STRING_CONST, KIND_TAG, KIND_TYPE, KIND_VAR, SYM_COMPILE_UNIT, SYM_EXTERN, SYM_PRIVATE, SYM_PROTECTED, SYM_PUBLIC
 
Constructor Summary
PointerTypeImpl(SymRoot pSymRoot, java.lang.String pTypeName, Type pPointedType)
           
PointerTypeImpl(SymRoot pSymRoot, Type pPointedType)
           
PointerTypeImpl(SymRoot pSymRoot, Type pPointedType, long pElemCount, long pLowerBound)
           
 
Method Summary
 long getElemCount()
          getElemCount
 long getLowerBound()
          getLowerBound
 Type getPointedType()
          getPointedType Get the pointed type of this pointer type.
 boolean isCompatibleWith(Type pType)
          isCompatibleWith The origin type of this type and pType are compared to be equal or not.
 boolean isDeclaredAsArray()
          isDeclaredAsArray Test if this pointer type is declared as a popinter representing an array (as it is done in C language).
 
Methods inherited from class coins.sym.TypeImpl
getAlignment, getAlignmentGap, getCompleteType, getDimension, getElemList, getElemListString, getElemListString, getEnumListString, getFinalOrigin, getOrigin, getSizeExp, getSizeValue, getTypeKind, getTypeRank, getUnqualifiedType, isBasicType, isConst, isFloating, isInteger, isRestrict, isScalar, isSizeEvaluable, isUnsigned, isVolatile, makeConstType, makeRestrictType, makeVolatileType, searchTypeCompatibleWithThis, setOrigin, setSizeExp, setSizeValue, setStaticTable, toString, toStringDetail, toStringShort
 
Methods inherited from class coins.sym.SymImpl
bareStringConst, baseType, boolConst, charConst, charConst, charConst, definedType, definedType, defineElem, defineLabel, defineParam, defineRegionVar, defineSubp, defineVar, defineVar, derivedSym, enumType, enumType, floatConst, floatConst, getDefinedColumn, getDefinedFile, getDefinedIn, getDefinedInName, getDefinedLine, getFlag, getInf, getName, getNameOrNull, getNextSym, getOrAddInf, getOriginalSym, getOriginalSym, getPureName, getRecordedIn, getSourceInf, getSymKind, getSymKindName, getSymType, getUniqueName, getWork, intConst, intConst, intObject, isGlobal, isHIR, isRemoved, isSym, linkSym, makeCstring, makeCstringWithTrailing0, makeEnumTypeName, makeExpString, makeJavaString, makeStructUnionTypeName, makeSubpTypeName, makeSubpTypeName, makeVectorTypeName, makeVectorTypeName, makeVectorTypeName, namedConst, namedConst, pointerType, pointerType, pointerType, pointerType, pointerType, print, print, regionType, regionType, remove, setDefinedFile, setDefinedIn, setDefinedLine, setFlag, setOriginalSym, setParameters, setRecordedIn, setSourceInf, setSymKind, setSymType, setUniqueNameSym, setWork, stringConst, stringConstFromQuotedString, structType, structType, subpType, subpType, symbol, unionType, unionType, vectorType, vectorType, vectorType, vectorType, vectorTypeUnfixed, vectorTypeUnfixed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface coins.sym.Type
getAlignment, getAlignmentGap, getCompleteType, getDimension, getElemList, getElemListString, getFinalOrigin, getOrigin, getSizeExp, getSizeValue, getTypeKind, getTypeRank, getUnqualifiedType, isBasicType, isConst, isFloating, isInteger, isRestrict, isScalar, isSizeEvaluable, isUnsigned, isVolatile, makeConstType, makeRestrictType, makeVolatileType, setOrigin, setSizeExp, setSizeValue
 
Methods inherited from interface coins.sym.Sym
baseType, boolConst, charConst, defineVar, derivedSym, floatConst, getDefinedColumn, getDefinedInName, getDefinedLine, getInf, getNameOrNull, getOrAddInf, getOriginalSym, getOriginalSym, getPureName, getSymKindName, getWork, intConst, intObject, isRemoved, makeCstring, makeCstringWithTrailing0, makeEnumTypeName, makeJavaString, makeStructUnionTypeName, makeSubpTypeName, makeVectorTypeName, makeVectorTypeName, makeVectorTypeName, namedConst, pointerType, pointerType, pointerType, regionType, remove, setDefinedFile, setDefinedIn, setDefinedLine, setRecordedIn, setSymKind, setSymType, setUniqueNameSym, setWork, stringConstFromQuotedString, symbol, toStringDetail, toStringShort, vectorType, vectorType, vectorType, vectorTypeUnfixed
 
Methods inherited from interface coins.sym.Sym0
charConst, definedType, defineElem, defineLabel, defineParam, defineSubp, defineVar, enumType, floatConst, getDefinedFile, getDefinedIn, getFlag, getName, getNextSym, getRecordedIn, getSymKind, getSymType, getUniqueName, intConst, isGlobal, namedConst, pointerType, setFlag, stringConst, structType, subpType, unionType, vectorType, vectorTypeUnfixed
 

Field Detail

fPointedType

Type fPointedType
Type of pointed object.


fElemCount

long fElemCount
Element count if this pointer is declared as an array.


fLowerBound

long fLowerBound
Lower bound of array subscript if this pointer is declared as an array.

Constructor Detail

PointerTypeImpl

public PointerTypeImpl(SymRoot pSymRoot,
                       java.lang.String pTypeName,
                       Type pPointedType)

PointerTypeImpl

public PointerTypeImpl(SymRoot pSymRoot,
                       Type pPointedType)

PointerTypeImpl

public PointerTypeImpl(SymRoot pSymRoot,
                       Type pPointedType,
                       long pElemCount,
                       long pLowerBound)
Method Detail

getPointedType

public Type getPointedType()
getPointedType Get the pointed type of this pointer type. "this" should be a pointer type.

Specified by:
getPointedType in interface PointerType
Overrides:
getPointedType in class TypeImpl
Returns:
Type the pointed type of this type. If "this" is not a pointer, then return null.

isCompatibleWith

public boolean isCompatibleWith(Type pType)
Description copied from interface: Type
isCompatibleWith The origin type of this type and pType are compared to be equal or not. Strict type compatibility check sh ould be done in the semantic analyzer of each language. This method can not afford to do strict semantic check considering language specifications.

Specified by:
isCompatibleWith in interface Type
Overrides:
isCompatibleWith in class TypeImpl
Returns:
true if this type is compatible with pType.

isDeclaredAsArray

public boolean isDeclaredAsArray()
Description copied from interface: PointerType
isDeclaredAsArray Test if this pointer type is declared as a popinter representing an array (as it is done in C language).

Specified by:
isDeclaredAsArray in interface PointerType
Returns:
true if it is declared as array, else return false.

getElemCount

public long getElemCount()
Description copied from interface: PointerType
getElemCount

Specified by:
getElemCount in interface PointerType
Returns:
the number of elements of the array represented by this pointer if this pointer represents an array; return 0 if this pointer does not represent array.

getLowerBound

public long getLowerBound()
Description copied from interface: PointerType
getLowerBound

Specified by:
getLowerBound in interface PointerType
Returns:
lower bound of array subscript if this pointer represents an array; return 0 if this pointer does not represent array.