coins.sym
Class SubpTypeImpl

java.lang.Object
  extended bycoins.sym.SymImpl
      extended bycoins.sym.TypeImpl
          extended bycoins.sym.SubpTypeImpl
All Implemented Interfaces:
java.lang.Cloneable, HasStringObject, SubpType, Sym, Sym0, Type
Direct Known Subclasses:
StmtFuncType

public class SubpTypeImpl
extends TypeImpl
implements SubpType

SubpTypeImpl Class


Field Summary
protected  boolean fNoParamSpec
          True if any number of parameters of any kind are permitted.
protected  boolean fOptionalParam
          True if this subprogram has optional param (...
protected  IrList fParamTypeList
          Parameter type list if this is function type
protected  Type fReturnType
          Return Type if this is function type
 
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
SubpTypeImpl(SymRoot pSymRoot, java.lang.String pSubpTypeName, Type pReturnType, IrList pParamList, boolean pOptionalParam, boolean pNoParamSpec)
           
 
Method Summary
 IrList getParamTypeList()
          getParamTypeList Get a component of function type.
 Type getReturnType()
          getReturnType Get a component of function type.
 boolean hasNoParamSpec()
          permitAnyParam
 boolean hasOptionalParam()
          hasOptionalParam
 boolean isCompatibleWith(Type pType)
          isCompatibleWith The origin type of this type and pType are compared to be equal or not.
 
Methods inherited from class coins.sym.TypeImpl
getAlignment, getAlignmentGap, getCompleteType, getDimension, getElemList, getElemListString, getElemListString, getEnumListString, getFinalOrigin, getOrigin, getPointedType, 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, getPointedType, 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

fParamTypeList

protected IrList fParamTypeList
Parameter type list if this is function type


fReturnType

protected Type fReturnType
Return Type if this is function type


fOptionalParam

protected boolean fOptionalParam
True if this subprogram has optional param (... in C)


fNoParamSpec

protected boolean fNoParamSpec
True if any number of parameters of any kind are permitted.

Constructor Detail

SubpTypeImpl

public SubpTypeImpl(SymRoot pSymRoot,
                    java.lang.String pSubpTypeName,
                    Type pReturnType,
                    IrList pParamList,
                    boolean pOptionalParam,
                    boolean pNoParamSpec)
Method Detail

getParamTypeList

public IrList getParamTypeList()
getParamTypeList Get a component of function type. "this" should be a function type symbol.

Specified by:
getParamTypeList in interface SubpType
Returns:
IrList parameter type list.

getReturnType

public Type getReturnType()
getReturnType Get a component of function type. "this" should be a function type symbol.

Specified by:
getReturnType in interface SubpType
Returns:
Type function value type.

hasOptionalParam

public boolean hasOptionalParam()
Description copied from interface: SubpType
hasOptionalParam

Specified by:
hasOptionalParam in interface SubpType
Returns:
true if this subprogram has optional parameter (represented by ... in C) otherwise return false.

hasNoParamSpec

public boolean hasNoParamSpec()
Description copied from interface: SubpType
permitAnyParam

Specified by:
hasNoParamSpec in interface SubpType
Returns:
true if this subprogram permit any number of parameters of any type are permitted (in such case as extern sub(); sub(a); sub(a, b); in old C language style).

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.