.. java:import:: fr.inria.tapenade.utils ILLang .. java:import:: fr.inria.tapenade.utils TapPair .. java:import:: fr.inria.tapenade.utils TapTriplet .. java:import:: fr.inria.tapenade.utils ToBool .. java:import:: fr.inria.tapenade.utils ToObject .. java:import:: fr.inria.tapenade.utils Tree WrapperTypeSpec =============== .. java:package:: fr.inria.tapenade.representation :noindex: .. java:type:: public final class WrapperTypeSpec extends TypeSpec A simple wrapper around another type. Used to build a type (possibly empty) that can later be created or modified by anyone sharing this wrapper, so that everyone sharing the wrapper will see the modification. In principle all wrappers may be removed when all type choices are done, i.e. after type-checking. Fields ------ wrappedType ^^^^^^^^^^^ .. java:field:: public TypeSpec wrappedType :outertype: WrapperTypeSpec The type inside the wrapper. Constructors ------------ WrapperTypeSpec ^^^^^^^^^^^^^^^ .. java:constructor:: public WrapperTypeSpec(TypeSpec wrappedType) :outertype: WrapperTypeSpec Create a new wrapper type around "wrappedType". Methods ------- acceptsMultiDirDimension ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override public boolean acceptsMultiDirDimension() :outertype: WrapperTypeSpec addMultiDirDimension ^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected WrapperTypeSpec addMultiDirDimension(ArrayDim dimension) :outertype: WrapperTypeSpec addRefDiffTypeSpec ^^^^^^^^^^^^^^^^^^ .. java:method:: protected void addRefDiffTypeSpec(SymbolTable symbolTable, SymbolTable srcSymbolTable) :outertype: WrapperTypeSpec addWith ^^^^^^^ .. java:method:: public WrapperTypeSpec addWith(WrapperTypeSpec type) :outertype: WrapperTypeSpec baseTypeName ^^^^^^^^^^^^ .. java:method:: @Override public String baseTypeName() :outertype: WrapperTypeSpec baseTypeSpec ^^^^^^^^^^^^ .. java:method:: @Override public WrapperTypeSpec baseTypeSpec(boolean stopOnPointer) :outertype: WrapperTypeSpec buildConstantOne ^^^^^^^^^^^^^^^^ .. java:method:: @Override public Tree buildConstantOne() :outertype: WrapperTypeSpec buildConstantZero ^^^^^^^^^^^^^^^^^ .. java:method:: @Override public Tree buildConstantZero() :outertype: WrapperTypeSpec buildTypeNameForProcName ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public String buildTypeNameForProcName(TapList toArraySize, SymbolTable symbolTable) :outertype: WrapperTypeSpec :return: a String that represents the present WrapperTypeSpec, to be used in a procedure name that is specialized for this type. Examples: INTEGER4, INTEGER8, REAL4, REAL8, REAL8ARRAY,... "toArraySize" must contain upon input a Tree which is the size of this WrapperTypeSpec if it is an array, null otherwise. Upon output this size is modified when this typeSpec is a string: it is multiplied by the number of characters. canMatchPointerTo ^^^^^^^^^^^^^^^^^ .. java:method:: public boolean canMatchPointerTo(WrapperTypeSpec destTypeSpec) :outertype: WrapperTypeSpec :return: true if the 2 types are similar enough so that a pointer to "this" may point to a "destTypeSpec". canReceiveVectorialDim ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public static boolean canReceiveVectorialDim(WrapperTypeSpec typeSpec, boolean passedArray) :outertype: WrapperTypeSpec :return: true if this type is deep/simple enough to receive the extra vectorial dimension. Example: REAL(:,:), REAL → true RECORD, REAL*, REAL(:,:)(:) → false. checkArray ^^^^^^^^^^ .. java:method:: protected boolean checkArray() :outertype: WrapperTypeSpec :return: true if this type is a wrapper around an array type. If this wrapper is free, fills it with an array type of free element type. checkBoolean ^^^^^^^^^^^^ .. java:method:: protected boolean checkBoolean() :outertype: WrapperTypeSpec :return: true if this type is a wrapper around boolean type. If this wrapper is free, fills it with boolean type. checkNoneDimensionsOfNewSH ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public WrapperTypeSpec checkNoneDimensionsOfNewSH(String hintNameInText, String hintNameInIdent, Tree hintTreeInCallSize, SymbolTable symbolTable, NewSymbolHolder symbolHolder) :outertype: WrapperTypeSpec checkNumeric ^^^^^^^^^^^^ .. java:method:: protected boolean checkNumeric() :outertype: WrapperTypeSpec :return: true if this type is a wrapper around some numeric type. If this wrapper is free, fills it with a "generic" numeric type. checkNumericInt ^^^^^^^^^^^^^^^ .. java:method:: protected boolean checkNumericInt() :outertype: WrapperTypeSpec :return: true if this type is a wrapper around integer type. If this wrapper is free, fills it with integer type. checkPointer ^^^^^^^^^^^^ .. java:method:: protected boolean checkPointer() :outertype: WrapperTypeSpec :return: true if this type is a wrapper around a pointer type. If this wrapper is free, fills it with a pointer to free type. checkRecord ^^^^^^^^^^^ .. java:method:: protected boolean checkRecord() :outertype: WrapperTypeSpec :return: true if this type is a wrapper around a composite type. If this wrapper is free, fills it with a composite RECORD type. checkTypeSpecValidity ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean checkTypeSpecValidity(TapList dejaVu) :outertype: WrapperTypeSpec cloneAsUndefinedNumeric ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected TypeSpec cloneAsUndefinedNumeric(boolean undefined) :outertype: WrapperTypeSpec combineWith ^^^^^^^^^^^ .. java:method:: public WrapperTypeSpec combineWith(WrapperTypeSpec newTypeSpec, SymbolTable symbolTable) :outertype: WrapperTypeSpec computeSize ^^^^^^^^^^^ .. java:method:: @Override protected int computeSize() :outertype: WrapperTypeSpec conformingTypeSpec ^^^^^^^^^^^^^^^^^^ .. java:method:: protected WrapperTypeSpec conformingTypeSpec(WrapperTypeSpec type1, WrapperTypeSpec type2) :outertype: WrapperTypeSpec Expand this type into an array type that makes it conform with array types type1 (and type2 if non-null). containsAPointer ^^^^^^^^^^^^^^^^ .. java:method:: @Override public boolean containsAPointer() :outertype: WrapperTypeSpec containsMetaType ^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean containsMetaType(TapList dejaVu) :outertype: WrapperTypeSpec containsUnknownDimension ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override public boolean containsUnknownDimension() :outertype: WrapperTypeSpec copy ^^^^ .. java:method:: @Override public TypeSpec copy() :outertype: WrapperTypeSpec copyStopOnComposite ^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override public TypeSpec copyStopOnComposite(Unit publishedUnit) :outertype: WrapperTypeSpec cumulActiveParts ^^^^^^^^^^^^^^^^ .. java:method:: @Override public void cumulActiveParts(TapList diffInfos, SymbolTable symbolTable) :outertype: WrapperTypeSpec differentiateTypeSpecMemo ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public WrapperTypeSpec differentiateTypeSpecMemo(SymbolTable symbolTable, SymbolTable srcSymbolTable, int diffUnitSort, String fSuffix, boolean localDecl, boolean multiDirMode, ArrayDim multiDirDimensionMax, String hintArrayNameInText, String hintArrayNameInIdent, Tree hintArraySize, Tree nameTree) :outertype: WrapperTypeSpec doUpdateAfterImports ^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override public void doUpdateAfterImports(SymbolTable symbolTable, TapList dejaVu) :outertype: WrapperTypeSpec dump ^^^^ .. java:method:: @Override public void dump() throws java.io.IOException :outertype: WrapperTypeSpec easilyDeclared ^^^^^^^^^^^^^^ .. java:method:: public boolean easilyDeclared() :outertype: WrapperTypeSpec :return: true if a declaration of a variable of this WrapperTypeSpec is cheap and easy Example: a primitive, a pointer, a void Counter example: an array of dynamic size (⇒ requiring a decl with ISIZEOF). elementType ^^^^^^^^^^^ .. java:method:: @Override public WrapperTypeSpec elementType() :outertype: WrapperTypeSpec equalsDiffTypeSpecAndTypeSpec ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public WrapperTypeSpec equalsDiffTypeSpecAndTypeSpec() :outertype: WrapperTypeSpec generateTree ^^^^^^^^^^^^ .. java:method:: @Override public Tree generateTree(SymbolTable symbolTable, TapList dependsOn, TapList shortNames, boolean useShortNames, TapList dejaVu) :outertype: WrapperTypeSpec getAllDimensions ^^^^^^^^^^^^^^^^ .. java:method:: @Override public TapList getAllDimensions() :outertype: WrapperTypeSpec hasAnArrayDimension ^^^^^^^^^^^^^^^^^^^ .. java:method:: protected static boolean hasAnArrayDimension(WrapperTypeSpec typeSpec) :outertype: WrapperTypeSpec hasPointerOnTop ^^^^^^^^^^^^^^^ .. java:method:: public static boolean hasPointerOnTop(WrapperTypeSpec typeSpec) :outertype: WrapperTypeSpec :return: true if contains a Pointer level before reaching an array or record type. hasUndefinedSize ^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean hasUndefinedSize() :outertype: WrapperTypeSpec intToReal ^^^^^^^^^ .. java:method:: public static WrapperTypeSpec intToReal(WrapperTypeSpec origType, TapList> dejaVu, SymbolTable symbolTable) :outertype: WrapperTypeSpec When the given origType is non-differentiable (e.g. integer), returns a copied WrapperTypeSpec with integers replaced with reals. Otherwise returns the same origType. isAnIOTypeSpec ^^^^^^^^^^^^^^ .. java:method:: @Override public boolean isAnIOTypeSpec(SymbolTable symbolTable) :outertype: WrapperTypeSpec isArray ^^^^^^^ .. java:method:: @Override public boolean isArray() :outertype: WrapperTypeSpec isCharacter ^^^^^^^^^^^ .. java:method:: @Override public boolean isCharacter() :outertype: WrapperTypeSpec isDifferentiated ^^^^^^^^^^^^^^^^ .. java:method:: @Override public boolean isDifferentiated(TapList dejaVu) :outertype: WrapperTypeSpec isFree ^^^^^^ .. java:method:: public static boolean isFree(WrapperTypeSpec typeSpec) :outertype: WrapperTypeSpec isFunction ^^^^^^^^^^ .. java:method:: @Override public boolean isFunction() :outertype: WrapperTypeSpec isFunctionOrPointerToFunction ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public static boolean isFunctionOrPointerToFunction(WrapperTypeSpec typeSpec) :outertype: WrapperTypeSpec isMetaType ^^^^^^^^^^ .. java:method:: protected boolean isMetaType() :outertype: WrapperTypeSpec isNamedType ^^^^^^^^^^^ .. java:method:: @Override public boolean isNamedType() :outertype: WrapperTypeSpec isNullOrVoid ^^^^^^^^^^^^ .. java:method:: public static boolean isNullOrVoid(WrapperTypeSpec typeSpec) :outertype: WrapperTypeSpec isPointer ^^^^^^^^^ .. java:method:: @Override public boolean isPointer() :outertype: WrapperTypeSpec isPointerOrArrayOfPointer ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public static boolean isPointerOrArrayOfPointer(WrapperTypeSpec typeSpec) :outertype: WrapperTypeSpec isPrimitiveTypeCharacter ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean isPrimitiveTypeCharacter() :outertype: WrapperTypeSpec isPrimitiveTypeFloat ^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected boolean isPrimitiveTypeFloat() :outertype: WrapperTypeSpec isPrimitiveTypeInteger ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected boolean isPrimitiveTypeInteger() :outertype: WrapperTypeSpec isScalar ^^^^^^^^ .. java:method:: @Override public boolean isScalar() :outertype: WrapperTypeSpec isString ^^^^^^^^ .. java:method:: @Override public boolean isString() :outertype: WrapperTypeSpec isTarget ^^^^^^^^ .. java:method:: @Override public boolean isTarget() :outertype: WrapperTypeSpec localize ^^^^^^^^ .. java:method:: @Override protected TypeSpec localize(TapList> toAlreadyCopied, ToBool containsMeta) :outertype: WrapperTypeSpec modifiedBaseTypeSpec ^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override public WrapperTypeSpec modifiedBaseTypeSpec() :outertype: WrapperTypeSpec needsADiffType ^^^^^^^^^^^^^^ .. java:method:: @Override public boolean needsADiffType(TapList dejaVu) :outertype: WrapperTypeSpec nestedLevelType ^^^^^^^^^^^^^^^ .. java:method:: @Override public TypeSpec nestedLevelType() :outertype: WrapperTypeSpec peelPointer ^^^^^^^^^^^ .. java:method:: @Override public TypeSpec peelPointer() :outertype: WrapperTypeSpec pointerToArrayTypeSpec ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected WrapperTypeSpec pointerToArrayTypeSpec() :outertype: WrapperTypeSpec preciseDimensions ^^^^^^^^^^^^^^^^^ .. java:method:: public static WrapperTypeSpec preciseDimensions(WrapperTypeSpec mainType, WrapperTypeSpec complementType, TapList> dejaVu, SymbolTable symbolTable) :outertype: WrapperTypeSpec :return: a WrapperTypeSpec built from "mainType" by replacing wherever possible imprecise dimensions by fixed dimensions found in the matching complementType. We assume that mainType and complementType have similar shapes except possibly for dimensions. The returned result may share parts with mainType, or may even be strictly eq to it. precisionSize ^^^^^^^^^^^^^ .. java:method:: @Override public int precisionSize() :outertype: WrapperTypeSpec realToComplex ^^^^^^^^^^^^^ .. java:method:: @Override protected WrapperTypeSpec realToComplex(TapList> dejaVu, WrapperTypeSpec complexTypeSpec) :outertype: WrapperTypeSpec scalarTypeSpec ^^^^^^^^^^^^^^ .. java:method:: public WrapperTypeSpec scalarTypeSpec(boolean stopOnPointer, SymbolTable symbolTable) :outertype: WrapperTypeSpec Seeks into this type the deepest array element type. setHasUndefinedSize ^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected void setHasUndefinedSize(boolean val) :outertype: WrapperTypeSpec setWrappedType ^^^^^^^^^^^^^^ .. java:method:: @Override public void setWrappedType(TypeSpec type) :outertype: WrapperTypeSpec showType ^^^^^^^^ .. java:method:: @Override public String showType() :outertype: WrapperTypeSpec testComparesWith ^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean testComparesWith(TypeSpec other, int comparison, TypeSpec toThis, TypeSpec toOther, TapList> dejaVu) :outertype: WrapperTypeSpec toString ^^^^^^^^ .. java:method:: @Override public String toString() :outertype: WrapperTypeSpec weakenForInference ^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected TypeSpec weakenForInference(int comparison) :outertype: WrapperTypeSpec wrappedType ^^^^^^^^^^^ .. java:method:: @Override public TypeSpec wrappedType() :outertype: WrapperTypeSpec