coins.sym
Interface StructType

All Superinterfaces:
Sym, Sym0, Type
All Known Implementing Classes:
StructTypeImpl

public interface StructType
extends Type

StructType interface See structType of Sym interface.


Field Summary
 
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
 
Method Summary
 void addElem(Elem pElem)
          addElem Add element to this struct type.
 void finishStructType(boolean pSeparately)
           finishStructType: Finish to define this struct type.
 IrList getElemList()
          getElemList
 SymTable getSymTable()
          Get the symbol table local to this structure.
 Sym getTag()
           
 void setAlignment(int pAlignment)
          setAlignment //##47 Set alignment value to be equal to the pAlignment.
 void setSymTable(SymTable pSymTalbe)
          Set the symbol table local to this structure.
 void setTag(Sym pTag)
           
 
Methods inherited from interface coins.sym.Type
getAlignment, getAlignmentGap, getCompleteType, getDimension, getElemListString, getFinalOrigin, getOrigin, getPointedType, getSizeExp, getSizeValue, getTypeKind, getTypeRank, getUnqualifiedType, isBasicType, isCompatibleWith, 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
 

Method Detail

getSymTable

public SymTable getSymTable()
Get the symbol table local to this structure.

Returns:
the local symbol table.

setSymTable

public void setSymTable(SymTable pSymTalbe)
Set the symbol table local to this structure.


getElemList

public IrList getElemList()
getElemList

Specified by:
getElemList in interface Type
Returns:
the list of elements for this structure.

addElem

public void addElem(Elem pElem)
addElem Add element to this struct type. addElem is called after instantiating StructType without giving element list. After successive call of addElem, finishStructType should be called. See structType of Sym, finishStructType.

Parameters:
pElem - Element of this struct type.

finishStructType

public void finishStructType(boolean pSeparately)
  finishStructType: Finish to define this struct type.
 After successive call of addElem,
 finishStructType should be called.
 This will make the struct type name and compute displacement
 of each elements, and then compute the size of this struct.
 See structType of Sym, addElem.
 The alignment of a struct type is the same to that of its element
 having the largest alignment among the elements in the structure.
 Elements of the struct type is aligned according to the alignment
 of element type. This may cause to place gap between preceeding element.
 The size of the struct type is multiple of the alignment value of
 the struct type, thus, there may be a gap at the tail of the struct type
 if the last element has small alignment value.
 finishStructType also allocates bit fields (set bit field offset).
 As for the allocation of bit field, see the explanation of
 setBitFieldOffset method of the Elem interface.

Parameters:
pSeparately - false if StructType is constructed with complete element list, true if StructType is constructed as incomplete and sequence of addElem call is performed and then finishStructType is called.

getTag

public Sym getTag()

setTag

public void setTag(Sym pTag)

setAlignment

public void setAlignment(int pAlignment)
setAlignment //##47 Set alignment value to be equal to the pAlignment. Default value of alignment is set to the alignment of element type with the largest alignment value.

Parameters:
pAlignment - alignment value to be set.