PointerTypeSpec

public final class PointerTypeSpec extends TypeSpec

A “pointer” type, to some destination type.

Fields

destinationType

public WrapperTypeSpec destinationType

The pointer destination type.

offsetLength

public ArrayDim offsetLength

When this pointer type actually means a C array type, the dimension of this array.

subAccess

protected TapList<String> subAccess

Access info on this destination e.g. “const” etc.

Constructors

PointerTypeSpec

public PointerTypeSpec(WrapperTypeSpec destinationType, ArrayDim offsetLength)

Create a new pointer type to destination type, possibly with a C array dimension.

Methods

acceptsMultiDirDimension

public boolean acceptsMultiDirDimension()

addDiffTypeSpec

protected void addDiffTypeSpec(SymbolTable symbolTable, SymbolTable srcSymbolTable)

baseTypeName

protected String baseTypeName()

baseTypeSpec

public WrapperTypeSpec baseTypeSpec(boolean stopOnPointer)

buildConstantZero

public Tree buildConstantZero()

checkTypeSpecValidity

protected boolean checkTypeSpecValidity(TapList<TypeSpec> dejaVu)

computeSize

protected int computeSize()

containsAPointer

public boolean containsAPointer()

containsMetaType

protected boolean containsMetaType(TapList<TypeSpec> dejaVu)

containsUnknownDimension

public boolean containsUnknownDimension()

copy

public PointerTypeSpec copy()

copyStopOnComposite

public TypeSpec copyStopOnComposite(Unit publishedUnit)

cumulActiveParts

protected void cumulActiveParts(TapList diffInfos, SymbolTable symbolTable)

differentiateTypeSpec

public WrapperTypeSpec differentiateTypeSpec(SymbolTable symbolTable, SymbolTable srcSymbolTable, int diffUnitSort, String fSuffix, boolean localDecl, boolean multiDirMode, ArrayDim multiDirDimensionMax, String hintArrayNameInText, String hintArrayNameInIdent, Tree hintArrayNameTree, Tree nameTree)

dump

public void dump()

generateTree

public Tree generateTree(SymbolTable symbolTable, TapList<SymbolDecl> dependsOn, TapList<SymbolDecl> shortNames, boolean useShortNames, TapList<TypeSpec> dejaVu)

intToReal

public TypeSpec intToReal(TapList<TapPair<TypeSpec, TypeSpec>> dejaVu, SymbolTable symbolTable)

isAnIOTypeSpec

protected boolean isAnIOTypeSpec(SymbolTable symbolTable)

isDifferentiated

public boolean isDifferentiated(TapList<TypeSpec> dejaVu)

isInFactArray

public boolean isInFactArray()
Returns

true if this PointerTypeSpec is a C array type.

isPointer

public boolean isPointer()

localize

protected TypeSpec localize(TapList<TapTriplet<TypeSpec, TypeSpec, Boolean>> toAlreadyCopied, ToBool containsMeta)

modifiedBaseTypeSpec

public WrapperTypeSpec modifiedBaseTypeSpec()

needsADiffType

public boolean needsADiffType(TapList<TypeSpec> dejaVu)

nestedLevelType

public TypeSpec nestedLevelType()

peelPointer

protected TypeSpec peelPointer()

pointerToArrayTypeSpec

protected ArrayTypeSpec pointerToArrayTypeSpec()
Returns

the ArrayTypeSpec if this PointerTypeSpec is a C array type.

preciseDimensions

public TypeSpec preciseDimensions(TypeSpec complementType, TapList<TapPair<TypeSpec, TypeSpec>> dejaVu, SymbolTable symbolTable)

realToComplex

protected TypeSpec realToComplex(TapList<TapPair<TypeSpec, TypeSpec>> dejaVu, WrapperTypeSpec complexTypeSpec)

setWrappedType

public void setWrappedType(TypeSpec type)

showType

public String showType()

testComparesWith

protected boolean testComparesWith(TypeSpec other, int comparison, TypeSpec toThis, TypeSpec toOther, TapList<TapPair<TypeSpec, TypeSpec>> dejaVu)

toString

public String toString()

updateAfterImports

public void updateAfterImports(SymbolTable symbolTable, TapList<TypeSpec> dejaVu)

weakenForInference

protected TypeSpec weakenForInference(int comparison)

wrappedType

public TypeSpec wrappedType()