.. java:import:: fr.inria.tapenade.analysis ActivityPattern .. java:import:: fr.inria.tapenade.analysis DataFlowAnalyzer .. java:import:: fr.inria.tapenade.analysis InOutAnalyzer .. java:import:: fr.inria.tapenade.analysis PointerAnalyzer .. java:import:: fr.inria.tapenade.utils BoolMatrix .. java:import:: fr.inria.tapenade.utils BoolVector .. java:import:: fr.inria.tapenade.utils ILLang .. java:import:: fr.inria.tapenade.utils Int2ZoneInfo .. java:import:: fr.inria.tapenade.utils Operator .. java:import:: fr.inria.tapenade.utils TapIntList .. 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 SymbolTable =========== .. java:package:: fr.inria.tapenade.representation :noindex: .. java:type:: public final class SymbolTable Symbol Table. Scoping is implemented through layered Symbol Tables. Each Symbol Table, except the root, has access to its enclosing Symbol Table. Fields ------ associationByAddressTypes ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public TapList associationByAddressTypes :outertype: SymbolTable containerFileName ^^^^^^^^^^^^^^^^^ .. java:field:: public String containerFileName :outertype: SymbolTable The name of the (past or future) container file. This is temporary until TranslationUnits become Units. danglingCircularTypes ^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public TapList danglingCircularTypes :outertype: SymbolTable List of all types used in this SymbolTable that have not been finished yet because they are circular. Must be solved when all types have been prepared. dataList ^^^^^^^^ .. java:field:: protected TapList dataList :outertype: SymbolTable List of data Tree's. declarationsBlock ^^^^^^^^^^^^^^^^^ .. java:field:: public Block declarationsBlock :outertype: SymbolTable Block that contains the Instructions corresponding to these declarations. implicits ^^^^^^^^^ .. java:field:: public WrapperTypeSpec[] implicits :outertype: SymbolTable The Fortran "implicit" typing information at this level. inheritedClass ^^^^^^^^^^^^^^ .. java:field:: public Unit inheritedClass :outertype: SymbolTable When this is the copy of the Symbol Table of an IMPORT'd class, contains this IMPORT'd class. isImports ^^^^^^^^^ .. java:field:: public boolean isImports :outertype: SymbolTable true when this SymbolTable (basis of a public SymbolTable) is for symbols IMPORTed or for global variables isPublic ^^^^^^^^ .. java:field:: public boolean isPublic :outertype: SymbolTable true when this SymbolTable is the public SymbolTable of some Unit (contains public variables or formal parameters) nameListList ^^^^^^^^^^^^ .. java:field:: public TapList nameListList :outertype: SymbolTable List of nameList Tree's. nameSpaceName ^^^^^^^^^^^^^ .. java:field:: public String nameSpaceName :outertype: SymbolTable When this is the SymbolTable of a nameSpace, holds the nameSpace name. needNoAtomic ^^^^^^^^^^^^ .. java:field:: public BoolVector needNoAtomic :outertype: SymbolTable For lack of a better place, zones that need no multithread atomic nestedIntIndexSymbolHolders ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public TapList nestedIntIndexSymbolHolders :outertype: SymbolTable Ordered list of the NewSymbolHolder's used in this SymbolTable for the indexes of nested do loops. newSymbolHolders ^^^^^^^^^^^^^^^^ .. java:field:: public TapList newSymbolHolders :outertype: SymbolTable List of all NewSymbolHolder's that are waiting for declaration in this SymbolTable. nonPrivForwardDeclarations ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public TapList nonPrivForwardDeclarations :outertype: SymbolTable Contains the Units for which we need to add a forward declaration (non-private? case) This field is (non-empty/used) ONLY for a "TranslationUnit" SymbolTable This field will probably move into the TranslationUnit Unit when we implement one. privateForwardDeclarations ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public TapList privateForwardDeclarations :outertype: SymbolTable Contains the Units for which we need to add a forward declaration (private? case) This field is (non-empty/used) ONLY for a "TranslationUnit" SymbolTable This field will probably move into the TranslationUnit Unit when we implement one. saveList ^^^^^^^^ .. java:field:: public TapList saveList :outertype: SymbolTable List of save Tree's. unit ^^^^ .. java:field:: public Unit unit :outertype: SymbolTable The enclosing Unit. Never null with translationUnit. Constructors ------------ SymbolTable ^^^^^^^^^^^ .. java:constructor:: public SymbolTable(SymbolTable basisSymbolTable) :outertype: SymbolTable Creates a new SymbolTable as a layer under the existing SymbolTable "basisSymbolTable". If "basisSymbolTable" is null, creates a root SymbolTable. Methods ------- addAllocatableDeclaration ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void addAllocatableDeclaration(Tree decl, Instruction instrDecl) :outertype: SymbolTable addConstDeclaration ^^^^^^^^^^^^^^^^^^^ .. java:method:: public void addConstDeclaration(Tree decl, Instruction instrDecl) :outertype: SymbolTable Creates and inserts the new SymbolDecl coming from the constant declaration Tree "decl". or adds the constant declaration into the variableDecl. addData ^^^^^^^ .. java:method:: public void addData(Instruction instr) :outertype: SymbolTable Processes a DATA declaration. Adds it into the list of DATA trees, and declares all variable names found inside "decl" into this SymbolTable addExternalOrForwardDeclaration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void addExternalOrForwardDeclaration(Tree externalTree, Instruction instrDecl, boolean isPrivate) :outertype: SymbolTable Declares a list of external function names. or a forward or external function (for C/C++). addImplicit ^^^^^^^^^^^ .. java:method:: public void addImplicit(Tree decl, SymbolTable refST) :outertype: SymbolTable Updates this symbolTable with respect to the implicit typing declaration Tree "decl". This typing is analyzed with respect to SymbolTable "refST". addInterfaceDecl ^^^^^^^^^^^^^^^^ .. java:method:: protected InterfaceDecl addInterfaceDecl(Tree interfaceTreeOrig, Unit containerUnit) :outertype: SymbolTable Declares an interface name Assumes interfaceTree is an op_ident. For generic interfaces: declare the generic name of the interfaceDecl. addIntrinsicDeclaration ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void addIntrinsicDeclaration(Tree intrinsicTree, Instruction instrDecl) :outertype: SymbolTable Declares a list of intrinsic function names. Assumes intrinsicTree is an op_intrinsic. addNameList ^^^^^^^^^^^ .. java:method:: public void addNameList(Instruction instr) :outertype: SymbolTable Processes a namelist declaration. Adds it into the list of namelist trees, and declares all variable names found addSymbolDecls inside "decl" into this SymbolTable. addNameSpaceDecl ^^^^^^^^^^^^^^^^ .. java:method:: public NameSpaceDecl addNameSpaceDecl(String name, SymbolTable nameSpaceSymbolTable) :outertype: SymbolTable addNewSymbolDecl ^^^^^^^^^^^^^^^^ .. java:method:: protected void addNewSymbolDecl(SymbolDecl symbolDecl) :outertype: SymbolTable Plainly inserts the given "symbolDecl" into this SymbolTable. addNewSymbolHolder ^^^^^^^^^^^^^^^^^^ .. java:method:: public void addNewSymbolHolder(NewSymbolHolder newSymbolHolder) :outertype: SymbolTable Adds a new NewSymbolHolder into the current list of waiting NewSymbolHolder's. addPrimitiveTypes ^^^^^^^^^^^^^^^^^ .. java:method:: public void addPrimitiveTypes() :outertype: SymbolTable addSave ^^^^^^^ .. java:method:: public void addSave(Instruction instr) :outertype: SymbolTable Processes a SAVE declaration. Adds it into the list of SAVE trees, and declares all variable names found inside "decl" into this SymbolTable. addSymbolDecl ^^^^^^^^^^^^^ .. java:method:: public void addSymbolDecl(SymbolDecl symbolDecl) :outertype: SymbolTable Inserts the given "symbolDecl" into this SymbolTable. Inserts it at the current top level of the SymbolTable, except for special case of Fortran that lets one declare local variable mixed with formal params and commons. Checks for double declaration. Combines declarations when done in multiple steps (e.g. type then dimension). addSystemSymbolDecl ^^^^^^^^^^^^^^^^^^^ .. java:method:: public void addSystemSymbolDecl(SymbolDecl symbolDecl) :outertype: SymbolTable addTypeDeclaration ^^^^^^^^^^^^^^^^^^ .. java:method:: public void addTypeDeclaration(Tree typeNameTree, Tree typeDef, Instruction instrDecl, TapList modifiers) :outertype: SymbolTable addVarDeclaration ^^^^^^^^^^^^^^^^^ .. java:method:: public TapList addVarDeclaration(Tree decl, Instruction instrDecl, boolean isATrueVariable, ToBool addInstruction) :outertype: SymbolTable Creates and inserts the SymbolDecl coming from the variable declaration Tree "decl". addVarDimDeclaration ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void addVarDimDeclaration(Tree decl, Instruction instrDecl) :outertype: SymbolTable Creates and inserts the SymbolDecl coming from the variable dimension declaration Tree "decl". addWaitingZoneInfo ^^^^^^^^^^^^^^^^^^ .. java:method:: public void addWaitingZoneInfo(ZoneInfo proxyZoneInfo) :outertype: SymbolTable addressChain ^^^^^^^^^^^^ .. java:method:: public String addressChain() :outertype: SymbolTable For debugging, returns the chain of hashcodes of the SymbolTable's from this to root SymbolTable. allSymbolTableRoots ^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList allSymbolTableRoots() :outertype: SymbolTable :return: the list of all the root SymbolTables of this SymbolTable, including this SymbolTable. The resulting list is ordered with the rootmost SymbolTable first. allSymbolTableRoots ^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList allSymbolTableRoots(SymbolTable limit) :outertype: SymbolTable Same as allSymbolTableRoots(), but stops going rootwards when reaching the given SymbolTable "limit". The result is ordered rootmost SymbolTable first, never contains the "limit", and contains "this" only when "this" is not the "limit". allocateZones ^^^^^^^^^^^^^ .. java:method:: protected void allocateZones(ZoneAllocator zoneAllocator, Unit declarationUnit) :outertype: SymbolTable basisNotImportedSymbolTable ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public SymbolTable basisNotImportedSymbolTable() :outertype: SymbolTable :return: the enclosing level SymbolTable skips the imported symbolTables between this and result. basisSymbolTable ^^^^^^^^^^^^^^^^ .. java:method:: public SymbolTable basisSymbolTable() :outertype: SymbolTable :return: the enclosing level SymbolTable. buildExternalUnit ^^^^^^^^^^^^^^^^^ .. java:method:: public Unit buildExternalUnit(String name, boolean isPrivate) :outertype: SymbolTable buildZoneVisibleAccessTree ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public Tree buildZoneVisibleAccessTree(ZoneInfo zoneInfo) :outertype: SymbolTable :return: a reference expression that may be used from the scope of this SymbolTable, to access (exactly) the given zone (i.e. zoneInfo). In most cases this will be the same as zoneInfo.accessTree, but not always e.g. when the variable is declared extern, with a type which is different from its type in its basis, reference declaration. cf non-regression set08/lh068. Warning: The current mechanism uses the initial pointer destination zones, so this mechanism might still be wrong if pointers have been redirected, in which case the returned expression might point to a different location, and the given zone may even become inaccessible !! checkTypeSpecValidity ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void checkTypeSpecValidity() :outertype: SymbolTable cleanCopySymbolDecls ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void cleanCopySymbolDecls() :outertype: SymbolTable After copying, cleans the association between origin SymbolDecl's and their copies. collectAddressTakenZones ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList collectAddressTakenZones(Tree tree, Instruction instruction, TapList collected) :outertype: SymbolTable Collects the ZoneInfo of all expressions of which "tree" takes the address (e.g. "&v"). combineNumeric ^^^^^^^^^^^^^^ .. java:method:: public TypeSpec combineNumeric(TypeSpec lhsType, TypeSpec rhsType, Tree instrOrExpr) :outertype: SymbolTable Very similar to canCombineNumeric(), but doesn't modify lhsType nor rhsType. computeFirstDeclaredZone ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void computeFirstDeclaredZone(int[] globalFirstZone, SymbolTable basisNumberingST) :outertype: SymbolTable Computes the rank of the first zone of kind "whichKind", declared at this level. computeIntConstant ^^^^^^^^^^^^^^^^^^ .. java:method:: public Integer computeIntConstant(Tree tree) :outertype: SymbolTable constantZones ^^^^^^^^^^^^^ .. java:method:: public TapIntList constantZones() :outertype: SymbolTable declareAllSymbolDecls ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void declareAllSymbolDecls() :outertype: SymbolTable declareAllSymbolsIn ^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList declareAllSymbolsIn(Tree decl, Tree topDeclTree, TapList commonNames, Tree modifier, int symbolKind, boolean delayedDeclaration, boolean noFunctionCall, Instruction instr) :outertype: SymbolTable Searches inside "decl" for all used identifiers that are not yet declared in this SymbolTable (at this level or above). Each missing SymbolDecl is created and then either inserted in this SymbolTable or returned in the result, depending on the value of "delayedDeclaration". :param decl: the declaration expression in which symbols must be searched. :param topDeclTree: the "decl" passed to the initial top recursive call. :param commonNames: collected name of enclosing common ?? ([llh] not sure it is used correctly?) :param modifier: collected modifier to be applied to identifiers found. ([llh] not sure it is used correctly?) :param symbolKind: the kind of declaration "decl" e.g. VARIABLE, :param delayedDeclaration: true when new SymbolDecl's must be returned instead of inserted. :param noFunctionCall: true when the expression "decl" is in a place that guarantees it cannot be a function call (e.g. left of assign, overwritten...) :param instr: the Instruction that contains the given expression "decl". :return: the list of missing SymbolDecl's that have been found but not yet inserted because delayedDeclaration is true. declareFormalParamsLevel ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void declareFormalParamsLevel() :outertype: SymbolTable Declares that this current SymbolTable is the level that contains the declarations of the formal parameters. This is because this level has special behavior (for Fortran). declaredZoneInfo ^^^^^^^^^^^^^^^^ .. java:method:: public ZoneInfo declaredZoneInfo(int zone, int whichKind) :outertype: SymbolTable :return: the ZoneInfo for the zone of kind "whichKind" number "zone". declaredZonesNb ^^^^^^^^^^^^^^^ .. java:method:: public int declaredZonesNb(int whichKind) :outertype: SymbolTable :return: the number of declared zones of kind "whichKind", visible from this SymbolTable level. delNewSymbolHolder ^^^^^^^^^^^^^^^^^^ .. java:method:: public void delNewSymbolHolder(NewSymbolHolder newSymbolHolder) :outertype: SymbolTable Deletes a NewSymbolHolder from the current list of waiting NewSymbolHolder's. dump ^^^^ .. java:method:: public void dump(int indent) throws java.io.IOException :outertype: SymbolTable Prints in detail the contents of this SymbolTable, onto TapEnv.curOutputStream(). :param indent: the amount of indentation to be used for this printing. dumpDeclaredZones ^^^^^^^^^^^^^^^^^ .. java:method:: public void dumpDeclaredZones(String stRanks) throws java.io.IOException :outertype: SymbolTable equalValues ^^^^^^^^^^^ .. java:method:: public boolean equalValues(Tree exp1, Tree exp2) :outertype: SymbolTable :return: true when expressions "exp1" and "exp2" can be proved to return equal values. fillImportedZones ^^^^^^^^^^^^^^^^^ .. java:method:: protected void fillImportedZones(int[] zoneNumbers, TapList allStaticZones) :outertype: SymbolTable Fills the declaredZoneInfos attached to this SymbolTable, which is some Unit's importsSymbolTable) :param zoneNumbers: the total numbers (one per kind) of ZoneInfo's that will be declared by this import SymbolTable. :param allStaticZones: is the list of all static zones created, ordered from zoneNb 0 up. findAssocAddresTypeDeclSymbolTable ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected SymbolTable findAssocAddresTypeDeclSymbolTable() :outertype: SymbolTable findCompositeTypeSpec ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected WrapperTypeSpec findCompositeTypeSpec(String name) :outertype: SymbolTable findProtectedSymbolDecls ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected TapList findProtectedSymbolDecls() :outertype: SymbolTable :return: the list of all protected symbolDecl of the top level of this SymbolTable. findPublicSymbolDecls ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected TapList findPublicSymbolDecls() :outertype: SymbolTable :return: the list of all public symbolDecl of the top level of this SymbolTable. firstDeclaredZone ^^^^^^^^^^^^^^^^^ .. java:method:: public int firstDeclaredZone(int whichKind) :outertype: SymbolTable :return: the rank of the first zone of kind "whichKind", declared at this level. firstDeclaredZone4 ^^^^^^^^^^^^^^^^^^ .. java:method:: public int[] firstDeclaredZone4() :outertype: SymbolTable fixImplicits ^^^^^^^^^^^^ .. java:method:: protected void fixImplicits() :outertype: SymbolTable Fixes all incomplete types in the top level of this SymbolTable, that can be fixed using the implicit typing mechanism. fixImportedDeclarations ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void fixImportedDeclarations() :outertype: SymbolTable Fixes all incomplete types in the top level of this SymbolTable, that can be fixed using the imported symbolTables. focusToKind ^^^^^^^^^^^ .. java:method:: public BoolVector focusToKind(BoolVector vectorAllKind, int kind) :outertype: SymbolTable Returns a translation of the given "vectorAllKind", which is based on the ALLKIND zones numbering, into its subset dealing only with "kind" zones, and using the "kind" zones numbering. freeDeclaredZone ^^^^^^^^^^^^^^^^ .. java:method:: public int freeDeclaredZone(int whichKind) :outertype: SymbolTable :return: the rank of the last zone of kind "whichKind" (ALLKIND, REALKIND or INTKIND) declared here, plus one. This is also equal to the number of zones declared here and in enclosing SymbolTable's. freeDeclaredZone4 ^^^^^^^^^^^^^^^^^ .. java:method:: public int[] freeDeclaredZone4() :outertype: SymbolTable getAdditionalDuplicatedDeclaredZoneInfos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList[] getAdditionalDuplicatedDeclaredZoneInfos() :outertype: SymbolTable getAllInterfaceDecls ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllInterfaceDecls(String name) :outertype: SymbolTable :return: all the visible declarations of "name" as an interface. getAllInterfacedFunctionDecls ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllInterfacedFunctionDecls() :outertype: SymbolTable :return: the FunctionDecl's declarations of this SymbolTable that have an interface. getAllTopFunctionDecls ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllTopFunctionDecls() :outertype: SymbolTable :return: the function declarations in the top level of this SymbolTable. getAllTopSymbolDecls ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllTopSymbolDecls() :outertype: SymbolTable :return: the symbol declarations in the top level of this SymbolTable. getAllTopVariableDecls ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllTopVariableDecls() :outertype: SymbolTable :return: the variable declarations in the top level of this SymbolTable. getAllTypeDecls ^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllTypeDecls() :outertype: SymbolTable :return: the all type declarations in this SymbolTable. getAllVariableDecls ^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getAllVariableDecls() :outertype: SymbolTable :return: the variable declarations from this SymbolTable. getCallGraph ^^^^^^^^^^^^ .. java:method:: public CallGraph getCallGraph() :outertype: SymbolTable getClassDecl ^^^^^^^^^^^^ .. java:method:: public ClassDecl getClassDecl(Tree classNameTree) :outertype: SymbolTable getClassDecl ^^^^^^^^^^^^ .. java:method:: public ClassDecl getClassDecl(String name) :outertype: SymbolTable getCommonRoot ^^^^^^^^^^^^^ .. java:method:: public SymbolTable getCommonRoot(SymbolTable otherSymbolTable) :outertype: SymbolTable :return: null if there is no common enclosing SymbolTable. getConstantDecl ^^^^^^^^^^^^^^^ .. java:method:: public VariableDecl getConstantDecl(String name) :outertype: SymbolTable :return: the declaration of constant "name" in this SymbolTable. @return null if no declaration is found. getDecl ^^^^^^^ .. java:method:: public SymbolDecl getDecl(String name, int kind, boolean top) :outertype: SymbolTable Searches symbol "name" in this SymbolTable. Searches and returns the declaration of symbol "name" as a "kind", that may be TYPE, VARIABLE, FUNCTION, or SYMBOL(meaning any kind). The search is performed only in the top level of this SymbolTable when "top" is true. At all levels otherwise. :return: the SymbolDecl when found, null otherwise. getDecl ^^^^^^^ .. java:method:: public SymbolDecl getDecl(String name, int kind, boolean top, ToObject toST) :outertype: SymbolTable Same as getDecl(name,kind,top), but returns in "toST" a handle to the container SymbolTable. getDecl ^^^^^^^ .. java:method:: public SymbolDecl getDecl(String name, int kind1, int kind2, boolean top, ToObject toST) :outertype: SymbolTable Searches symbol "name" in this SymbolTable. Searches and returns the declaration of symbol "name" as a "kind", that may be TYPE, VARIABLE, FUNCTION, or SYMBOL(meaning any kind). The search is performed only in the top level of this SymbolTable when "top" is true. At all levels otherwise. :return: the SymbolDecl when found, null otherwise. getDecl ^^^^^^^ .. java:method:: public SymbolDecl getDecl(String name, int kind1, int kind2, int kind3, boolean top) :outertype: SymbolTable Searches symbol "name" in this SymbolTable. Searches and returns the declaration of symbol "name" as a "kind", that may be TYPE, VARIABLE, FUNCTION, or SYMBOL(meaning any kind). The search is performed only in the top level of this SymbolTable when "top" is true. At all levels otherwise. :return: the SymbolDecl when found, null otherwise. getDeclaredKindZones ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapIntList getDeclaredKindZones(TapIntList zones, int whichKind, boolean withTmps) :outertype: SymbolTable :return: the TapIntList of the "whichKind"-kind zones for all zones in "zones" (ALLKIND declared zones) that are actually of type "whichKind". [llh] TODO: This method shouldn't be used, it should be redesigned because for "tmp" zones, there is no notion of whichKind-zones, so WHEN "withTmps" IS TRUE, we return the "zone" itself, whatever "whichKind" is!! Also this method doesn't take into account side-effect zones. It should be replaced by something like DataFlowAnalyzer.mapExtendedDeclaredToVectorIndex(...). getDeclaredZoneInfos ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public ZoneInfo[] getDeclaredZoneInfos(int kind) :outertype: SymbolTable getExistingCopy ^^^^^^^^^^^^^^^ .. java:method:: public final SymbolTable getExistingCopy(TapList> associationsST) :outertype: SymbolTable getExistingOrig ^^^^^^^^^^^^^^^ .. java:method:: public SymbolTable getExistingOrig(TapList> associationsST) :outertype: SymbolTable getFunctionDecl ^^^^^^^^^^^^^^^ .. java:method:: public TapList getFunctionDecl(String name, TypeSpec returnType, TypeSpec[] argumentsTypes, boolean checkArgsTypes) :outertype: SymbolTable :return: the declarations of function/method "name" in this SymbolTable with a "returnType" and some "argumentsType". @return null if no declaration is found. getFunctionDecl ^^^^^^^^^^^^^^^ .. java:method:: public TapList getFunctionDecl(String name, TypeSpec returnType, TypeSpec[] argumentsTypes, String className, boolean checkArgsTypes) :outertype: SymbolTable getFunctionNotExternalNorInterfaceDecl ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected FunctionDecl getFunctionNotExternalNorInterfaceDecl(String name) :outertype: SymbolTable Same as getFunctionDecl, but discards external. getFunctionNotInterfaceDecl ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected FunctionDecl getFunctionNotInterfaceDecl(String name) :outertype: SymbolTable Same as getFunctionDecl, but discards interfaces. getModule ^^^^^^^^^ .. java:method:: protected Unit getModule(String name) :outertype: SymbolTable When this SymbolTable sees a module named "name". :return: its Unit. getModuleDecl ^^^^^^^^^^^^^ .. java:method:: public FunctionDecl getModuleDecl(String name) :outertype: SymbolTable :return: the declaration of module "name" in this SymbolTable. @return null if no declaration is found. getNameSpaceDecl ^^^^^^^^^^^^^^^^ .. java:method:: public NameSpaceDecl getNameSpaceDecl(String name) :outertype: SymbolTable getNamedScope ^^^^^^^^^^^^^ .. java:method:: public SymbolTable getNamedScope(String prefixName) :outertype: SymbolTable getPointerDestinationVector ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public BoolVector getPointerDestinationVector(int pointerRowIndex, Instruction instruction, Block block, BoolMatrix pointerInfo, boolean upstream) :outertype: SymbolTable :param upstream: true when one must use the pointer destinations upstream the instruction. :return: null when not found only: when the pointer dests row is null, meaning implicit-identity, returns explicit-identity non-null BoolVector. This function can be called in 2 ways/contexts: EITHER (during pointer analysis) given the complete pointer info matrix at this time (in arg "pointerInfo"), OR (during any later analysis), with a null "pointerInfo", but given the current "instruction" and its containing "block". In this case, the search goes upstream in the instructions and if no info is found, the pointer destination info at the begining of the block is used. getPointerDestinationZonesTreeHere ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getPointerDestinationZonesTreeHere(TapIntList pointerZones, Instruction instruction, Block block, BoolMatrix pointerInfo, WrapperTypeSpec type, Unit calledUnit, boolean upstream) :outertype: SymbolTable :param pointerZones: The list of the extended declared ALLKIND zones of the pointer(s). :param instruction: (Optional) The current Instruction (at which these destinations are required). :param block: The current Block (which contains the current Instruction). :param pointerInfo: (Optional) The current info on pointers destination. :param type: The type of these pointers' destination. :param calledUnit: When on a call, the called Unit. May be null otherwise. :param upstream: true when one must use the pointer destinations upstream the instruction. :return: the TapList tree of zones of the destination of the pointer(s) whose zone(s) is in "pointerZones". The type of the destination of the pointer must be given in "type". This search is done in the pointer destination context pointerInfo, or that of Instruction "instruction", or of the beginning of Block "block". If instruction and block and pointerInfo are null, we have no pointer info available, and therefore we return all possible "target" variables. getPrefixedNamedScope ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public SymbolTable getPrefixedNamedScope(Tree prefixTree) :outertype: SymbolTable :return: the scope, i.e. a SymbolTable, in which must be found the symbols prefixed by "prefixTree::". For instance if looking for "prefix::a", getPrefixedNamedScope(ident:"prefix") is the scope in which we expect to find declaration of "a". "prefix" may be the name of a nameSpace or of a class. We first search "prefix" as a class name, then as a nameSpace name. If not found (error), we create a nameSpace with that name. getRequiredDiffVars ^^^^^^^^^^^^^^^^^^^ .. java:method:: public BoolVector getRequiredDiffVars(ActivityPattern pattern) :outertype: SymbolTable getSetNameSpaceDecl ^^^^^^^^^^^^^^^^^^^ .. java:method:: public NameSpaceDecl getSetNameSpaceDecl(Tree nameSpaceTree) :outertype: SymbolTable getSymbolDecl ^^^^^^^^^^^^^ .. java:method:: public SymbolDecl getSymbolDecl(String name) :outertype: SymbolTable :return: null if no declaration is found. getSymbolDecl ^^^^^^^^^^^^^ .. java:method:: public SymbolDecl getSymbolDecl(Tree tree) :outertype: SymbolTable getToDecl ^^^^^^^^^ .. java:method:: protected TapList getToDecl(String name, int kind, boolean top, ToObject toST) :outertype: SymbolTable If toST is provided non-null, fills its head with the definition SymbolTable. getToDecl ^^^^^^^^^ .. java:method:: protected TapList getToDecl(String name, int kind1, int kind2, boolean top, ToObject toST) :outertype: SymbolTable getToDecl ^^^^^^^^^ .. java:method:: protected TapList getToDecl(String name, int kind1, int kind2, int kind3, boolean top, ToObject toST) :outertype: SymbolTable getTopClassDecl ^^^^^^^^^^^^^^^ .. java:method:: public ClassDecl getTopClassDecl(String name) :outertype: SymbolTable getTopDecl ^^^^^^^^^^ .. java:method:: public SymbolDecl getTopDecl(String name, int kind) :outertype: SymbolTable getTopFunctionDecl ^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getTopFunctionDecl(String name, TypeSpec returnType, TypeSpec[] argumentsTypes, boolean checkArgsTypes) :outertype: SymbolTable :return: null if no declaration is found. getTopFunctionDecl ^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList getTopFunctionDecl(String name, TypeSpec returnType, TypeSpec[] argumentsTypes, String className, boolean checkArgsTypes) :outertype: SymbolTable :return: null if no declaration is found. getTopInterfaceDecl ^^^^^^^^^^^^^^^^^^^ .. java:method:: public InterfaceDecl getTopInterfaceDecl(String name) :outertype: SymbolTable :return: the declaration of interface "name" in this SymbolTable. @return null if no declaration is found. getTopModuleDecl ^^^^^^^^^^^^^^^^ .. java:method:: public FunctionDecl getTopModuleDecl(String name) :outertype: SymbolTable :return: the declaration of module "name" in the toplevel of this SymbolTable. @return null if no declaration is found. getTopNameSpaceDecl ^^^^^^^^^^^^^^^^^^^ .. java:method:: public NameSpaceDecl getTopNameSpaceDecl(String name) :outertype: SymbolTable getTopSymbolDecl ^^^^^^^^^^^^^^^^ .. java:method:: public SymbolDecl getTopSymbolDecl(String name) :outertype: SymbolTable :return: the declaration of symbol "name" in the toplevel of this SymbolTable. @return null if no declaration is found. getTopTypeDecl ^^^^^^^^^^^^^^ .. java:method:: protected TypeDecl getTopTypeDecl(String name) :outertype: SymbolTable :return: the declaration of type "name" in the toplevel of this SymbolTable. @return null if no declaration is found. getTopVariableDecl ^^^^^^^^^^^^^^^^^^ .. java:method:: public VariableDecl getTopVariableDecl(String name) :outertype: SymbolTable :return: the declaration of variable "name" in the toplevel of this SymbolTable or null if no declaration is found. getTopVariableOrConstantDecl ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public VariableDecl getTopVariableOrConstantDecl(String name) :outertype: SymbolTable :return: the declaration of variable or constant "name" in the toplevel of this SymbolTable or null if no declaration is found. getTypeDecl ^^^^^^^^^^^ .. java:method:: public TypeDecl getTypeDecl(String name) :outertype: SymbolTable :return: null if no declaration is found. getTypedFunctionDecl ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public FunctionDecl getTypedFunctionDecl(String name, WrapperTypeSpec returnType, WrapperTypeSpec[] argumentsTypes, boolean top, Tree callTree) :outertype: SymbolTable :return: the declaration of function "name" in this SymbolTable. @return null if no declaration is found. getVariableDecl ^^^^^^^^^^^^^^^ .. java:method:: public VariableDecl getVariableDecl(String name) :outertype: SymbolTable :return: the declaration of variable "name" in this SymbolTable. @return null if no declaration is found. getVariableDeclOfRank ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public VariableDecl getVariableDeclOfRank(int rank) :outertype: SymbolTable getVariableOrConstantDecl ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public VariableDecl getVariableOrConstantDecl(String name) :outertype: SymbolTable :return: the declaration of variable or constant "name" in this SymbolTable. @return null if no declaration is found. getVariableOrConstantOrFuncNameDecl ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected VariableDecl getVariableOrConstantOrFuncNameDecl(String name) :outertype: SymbolTable :return: null if no declaration is found. hasNoDeclaredZoneInfos ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean hasNoDeclaredZoneInfos(int kind) :outertype: SymbolTable hidesRef ^^^^^^^^ .. java:method:: public boolean hidesRef(Tree tree1, Tree tree2) :outertype: SymbolTable :return: true if write reference "tree1" completely hides "tree2". Assumes tree1 and tree2 refer to a common zone. identIsAFunction ^^^^^^^^^^^^^^^^ .. java:method:: public boolean identIsAFunction(Tree varTree) :outertype: SymbolTable :return: true when this "varTree" is an identifier which is known as a function name (or a variable that holds a function name) in the current symbolTable. importAllClassSymbolTable ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void importAllClassSymbolTable(SymbolTable parentClassSymbolTable, Unit classUnit, Unit inheritedClassUnit, boolean isVirtualInheritance) :outertype: SymbolTable Copy every symbol from parentClassSymbolTable to this. Add a marker containing the inherited class unit. :param parentClassSymbolTable: :param classUnit: :param inheritedClassUnit: :param isVirtualInheritance: importModuleSymbolTable ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void importModuleSymbolTable(TapTriplet oneUse, boolean checkExist) :outertype: SymbolTable inCommonZones ^^^^^^^^^^^^^ .. java:method:: public TapIntList inCommonZones() :outertype: SymbolTable includePointedElementsInZonesTree ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList includePointedElementsInZonesTree(TapList zonesTree, Instruction instruction, BoolMatrix pointerInfo, boolean upstream) :outertype: SymbolTable Builds a copy of the given "zonesTree", in which all pointer zones are followed with the zonesTree of their possible destinations at the current point. The current point in the code is represented by either the 'instruction" or the current "pointerInfo" matrix. If both "instruction" and "pointerInfo" are null, we make the conservative assumption that all "target" vars may be destinations. :param instruction: The actual Instruction of the expression which gave the "zonesTree". Used to find current pointer destinations, which is dynamic. :param pointerInfo: The BoolMatrix of pointer destinations. Needed only when the pointer info is not stored in the instruction, i.e. during pointer analysis itself. Can be null when pointer analysis is done. :param upstream: true when one must use the pointer destinations upstream the instruction. isAllocatableAndTarget ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean isAllocatableAndTarget(Tree assignedVar) :outertype: SymbolTable isCaseDependent ^^^^^^^^^^^^^^^ .. java:method:: public boolean isCaseDependent() :outertype: SymbolTable :return: whether this SymbolTable is case dependent (e.g. c, java, ...) instead of case independent (fortran77, 90, 95). isEmptyTranslationUnitST ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean isEmptyTranslationUnitST() :outertype: SymbolTable :return: true if translationUnit contains global variables definitions either static (variableDecl defined in this translationUnit-symbolTable or global (variable defined in this translationUnit-symbolTable.declarationsBlock with variableDecl in rootCSymbolTable). isFormalParamsLevel ^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean isFormalParamsLevel() :outertype: SymbolTable :return: true when this current SymbolTable is the level that contains the declarations of the formal parameters. isFunctionNamed ^^^^^^^^^^^^^^^ .. java:method:: public boolean isFunctionNamed(String funcName, String refFuncName) :outertype: SymbolTable :return: true if given "funcName" in the context of this SymbolTable is actually a reference to a function named "refFuncName". Can be nontrivial with mixed language calls. isGlobalSymbolTable ^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean isGlobalSymbolTable() :outertype: SymbolTable isTranslationUnitSymbolTable ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean isTranslationUnitSymbolTable() :outertype: SymbolTable isUseless ^^^^^^^^^ .. java:method:: protected boolean isUseless() :outertype: SymbolTable :return: true when this SymbolTable defines absolutely nothing new with respect to its basisSymbolTable. language ^^^^^^^^ .. java:method:: public int language() :outertype: SymbolTable The language of this SymbolTable. May be -1 for the root SymbolTable. listOfPointedDestinations ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList listOfPointedDestinations(BoolVector destsRow, int[] elemMap, WrapperTypeSpec destinationType) :outertype: SymbolTable :return: a list of Strings that designates all the possible pointer destinations found in the zone vector "destsRow", including possibly NULL, Undef, or Unknown. listOfZonesOfValue ^^^^^^^^^^^^^^^^^^ .. java:method:: public TapIntList listOfZonesOfValue(Tree refExpr, ToBool total, Instruction instruction) :outertype: SymbolTable Assuming that "refExpr" is a reference to a memory location, returns the list of the zones that contain the value of "refExpr". Otherwise complains and returns null. :param refExpr: the given memory reference expression. :param total: Contains true upon exit iff the value is the complete contents of "refExpr" (out). May be null, in which case it is not used. :param instruction: The actual Instruction which contains "refExpr". Used to find dynamic info, such as pointer destinations (in). May be null, in which case conservative assumptions are made. :return: "extendedDeclared" zones as defined in DataFlowAnalyzer. localDeclaredZoneInfo ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public ZoneInfo localDeclaredZoneInfo(int zoneNumber, int whichKind) :outertype: SymbolTable moveSymbolDeclListUpRec ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void moveSymbolDeclListUpRec(TapList symbolDecls, SymbolTable targetSymbolTable) :outertype: SymbolTable Moves all SymbolDecls in symbolDecls, and all those recursively used, into targetSymbolTable. Sweeps all SymbolTables on the way from this to targetSymbolTable. all SymbolDecls in symbolDecls or recursively used are collected and removed from where they were. Finally they are all inserted back into targetSymbolTable. mustBeCreated ^^^^^^^^^^^^^ .. java:method:: public boolean mustBeCreated() :outertype: SymbolTable :return: true if translationUnit file must be created. nestedIn ^^^^^^^^ .. java:method:: public boolean nestedIn(SymbolTable symbolTable) :outertype: SymbolTable :return: true iff this SymbolTable is nested in the given "symbolTable". In other words, "symbolTable" is "this" or a recursive root of "this". offsetRef ^^^^^^^^^ .. java:method:: public static Tree offsetRef(Tree refToStart, WrapperTypeSpec type, int offset) :outertype: SymbolTable :return: an IL expression which is a reference to the place with the given "offset" into the memory object returned by the given expression "refToStart" ("refToStart is of type "type"). origUnit ^^^^^^^^ .. java:method:: public Unit origUnit() :outertype: SymbolTable When this SymbolTable's enclosing Unit results from differentiation of an original Unit. :return: this original Unit. rank ^^^^ .. java:method:: public int rank() :outertype: SymbolTable :return: A unique number used mostly to identify this SymbolTable in debug and trace. Positive number, default initialized to -1. refOffset ^^^^^^^^^ .. java:method:: protected int refOffset(Tree ref) :outertype: SymbolTable removeDecl ^^^^^^^^^^ .. java:method:: public void removeDecl(String name, int kind, boolean top) :outertype: SymbolTable Removes an entry of this SymbolTable. removeInterfaceDecl ^^^^^^^^^^^^^^^^^^^ .. java:method:: public void removeInterfaceDecl(String name, int kind, boolean top) :outertype: SymbolTable retrieveWaitingPtrZoneInfo ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public ZoneInfo retrieveWaitingPtrZoneInfo(int ptrZoneNb) :outertype: SymbolTable reuseNewSymbolHolder ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public NewSymbolHolder reuseNewSymbolHolder(String name, WrapperTypeSpec type, TapList excluded) :outertype: SymbolTable :return: an existing NewSymbolHolder of the given name and type in this SymbolTable, excluding the given "excluded" ones (e.g. because they are already in use). setAdditionalDuplicatedDeclaredZoneInfos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void setAdditionalDuplicatedDeclaredZoneInfos(TapList additionalZoneInfos, int kind) :outertype: SymbolTable setBasisSymbolTable ^^^^^^^^^^^^^^^^^^^ .. java:method:: public void setBasisSymbolTable(SymbolTable basis) :outertype: SymbolTable Sets the enclosing level SymbolTable of this SymbolTable. setCaseDependent ^^^^^^^^^^^^^^^^ .. java:method:: public void setCaseDependent(boolean caseDependent) :outertype: SymbolTable Sets the property whether this SymbolTable is case dependent. setConformingDimension ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected WrapperTypeSpec setConformingDimension(WrapperTypeSpec resultType, WrapperTypeSpec type1, WrapperTypeSpec type2, Tree expression) :outertype: SymbolTable setDeclaredZoneInfos ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void setDeclaredZoneInfos(ZoneInfo[] zoneInfos, int kind) :outertype: SymbolTable setEmptyImportedZones ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void setEmptyImportedZones() :outertype: SymbolTable setFreeDeclaredZone ^^^^^^^^^^^^^^^^^^^ .. java:method:: public void setFreeDeclaredZone(int freeDZ, int kind) :outertype: SymbolTable setImplicitLetters ^^^^^^^^^^^^^^^^^^ .. java:method:: public void setImplicitLetters(char fromChar, char toChar, WrapperTypeSpec defaultType) :outertype: SymbolTable Sets all implicit definitions in this current SymbolTable, from letter "fromStr" to letter "toStr", to type "defaultType". setIsGlobal ^^^^^^^^^^^ .. java:method:: public void setIsGlobal() :outertype: SymbolTable setIsTranslationUnit ^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void setIsTranslationUnit() :outertype: SymbolTable setLanguage ^^^^^^^^^^^ .. java:method:: public void setLanguage(int language) :outertype: SymbolTable Set the language of this SymbolTable. May be -1 for the root SymbolTable. setOrCumulRequiredDiffVars ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void setOrCumulRequiredDiffVars(ActivityPattern pattern, BoolVector diffVars) :outertype: SymbolTable setRank ^^^^^^^ .. java:method:: public void setRank(int rank) :outertype: SymbolTable setRootCallGraph ^^^^^^^^^^^^^^^^ .. java:method:: public void setRootCallGraph(CallGraph cg) :outertype: SymbolTable setShortName ^^^^^^^^^^^^ .. java:method:: public void setShortName(String shortName) :outertype: SymbolTable Set a short name to designate this SymbolTable. shortName ^^^^^^^^^ .. java:method:: public String shortName() :outertype: SymbolTable smartCopy ^^^^^^^^^ .. java:method:: public SymbolTable smartCopy(TapList> associationsST, Object targetUnitOrCG, CallGraph targetCG, UnitStorage associationsUnits, String copyPrefix) :outertype: SymbolTable :return: a copy of this SymbolTable. When the basis SymbolTable has also been copied, the basis of the copy is set to the copy of the basis. Similarly for copied CallGraph and Unit's. solveNewSymbolHolders ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public void solveNewSymbolHolders(boolean noCopySuffix) :outertype: SymbolTable Solves all the NewSymbolHolder's that are waiting for declaration in this SymbolTable. staticValue ^^^^^^^^^^^ .. java:method:: protected Object staticValue(Tree tree) :outertype: SymbolTable subTreeOfPointedZones ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList subTreeOfPointedZones(BoolVector destsRow, int[] elemMap, WrapperTypeSpec destinationType, Tree pathToSubTree) :outertype: SymbolTable Same as treeOfPointedZones(), but returns only the sub-tree of zones that concerns the access sub-path "pathToSubTree". Maybe we can rewrite more efficiently without constructing the complete pointerDestsTree? symbolDeclOf ^^^^^^^^^^^^ .. java:method:: protected SymbolDecl symbolDeclOf(Tree instrOrExpr) :outertype: SymbolTable :return: the (deep) SymbolDecl of reference expression "instrOrExpr". systemPredefinedZones ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public TapIntList systemPredefinedZones() :outertype: SymbolTable terminateFunctionDeclarationInstructions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void terminateFunctionDeclarationInstructions(Tree declTree) :outertype: SymbolTable Terminate Instructions that declare a function name, i.e. : (a) annotate function names with "isFunctionName" true. (b) replace "none" typeTree with the true final return type (without dimensions!). toString ^^^^^^^^ .. java:method:: @Override public String toString() :outertype: SymbolTable traceShowAssociationsST ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public static void traceShowAssociationsST(TapList> associationsST) :outertype: SymbolTable Show for trace the associations context from original SymbolTable's to (smart)copied SymbolTable's treeOfZonesOfValue ^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList treeOfZonesOfValue(Tree instrOrExpr, ToBool total, Instruction instruction, BoolMatrix pointerInfo) :outertype: SymbolTable :param instrOrExpr: The var-reference expression whose tree of zones is requested (in). :param total: Contains true upon exit iff the value is the complete contents of all these zones. May be null, in which case it is not used. :param instruction: The actual Instruction which contains "instrOrExpr". Used to find dynamic info, such as pointer destinations (in). May be null, in which case conservative assumptions are made. :param pointerInfo: The BoolMatrix of pointer destinations. Used to find dynamic info on pointer destinations (in). Needed only when the pointer info is not stored in the instruction, i.e. during pointer analysis itself. Can be null when pointer analysis is done. :return: the tree of the (structured) zones of the value of "instrOrExpr". Therefore returns a TapList-tree with TapIntList leaves. typeCheck ^^^^^^^^^ .. java:method:: protected WrapperTypeSpec typeCheck(Tree instrOrExpr, boolean expectResult, boolean noFunctionCall, boolean onType, Instruction instruction, ToBool isBeginning, Unit currentUnit) :outertype: SymbolTable Type-checks expression "instrOrExpr", which is an atomic instruction or an expression, in the context of this SymbolTable. @return the computed type for "instrOrExpr", or null when it has no meaningful type, or when type-checking returned an error. Caution: the returned type may also be (or contain) WrapperTypeSpec(null), which is completely different, and represents an unknown type, that may be infered by side-effect later. :param instrOrExpr: the expression that must be type-checked. :param expectResult: true when the expression is expected to return a value by its context. :param noFunctionCall: true means caller guarantees that the expression is in a place that cannot be a function call (e.g. left of assign, overwritten...) :param onType: true when the expression is a type. :param instruction: the Instruction that contains the given expression instrOrExpr. :param isBeginning: contains true when the place of the instruction is such that it may be the definition of a statement-function. :return: the type of the given instrOrExpr. typeOf ^^^^^^ .. java:method:: public WrapperTypeSpec typeOf(Tree instrOrExpr) :outertype: SymbolTable :return: the type of expression "instrOrExpr" or unKnownType if no type is found. typesOf ^^^^^^^ .. java:method:: public WrapperTypeSpec[] typesOf(Tree instrOrExpr) :outertype: SymbolTable :return: the types of expression "instrOrExpr". unfocusFromKind ^^^^^^^^^^^^^^^ .. java:method:: public BoolVector unfocusFromKind(BoolVector vectorKind, int kind) :outertype: SymbolTable Reciprocal of focusToKind(). Fills the other zones with false updateImportedFroms ^^^^^^^^^^^^^^^^^^^ .. java:method:: public void updateImportedFroms(TapList> associationsST) :outertype: SymbolTable At the end of copying for differentiation, update the "importedFrom" pointers from each imported SymbolDecl to the original SymbolDecl that it imports. varHasModifier ^^^^^^^^^^^^^^ .. java:method:: public boolean varHasModifier(Tree assignedVar, String modifier) :outertype: SymbolTable :param assignedVar: tree containing a Variable. :param modifier: String "allocatable", "target", ... :return: true if the corresponding Variable has a modifier equals to the modifier parameter. varIsIntentIn ^^^^^^^^^^^^^ .. java:method:: public boolean varIsIntentIn(Tree varTree) :outertype: SymbolTable :return: true when this "varTree" is a reference to a variable which is declared as "INTENT IN". zonesNb ^^^^^^^ .. java:method:: public final int zonesNb(int zoneKind) :outertype: SymbolTable :return: the number of zones of kind "zoneKind" at the scope of this SymbolTable. zonesOfDestination ^^^^^^^^^^^^^^^^^^ .. java:method:: public TapList zonesOfDestination(TapList treeOfZones, WrapperTypeSpec pointerType, Instruction instruction, BoolMatrix pointerInfo) :outertype: SymbolTable Utility identical to the op_pointerAccess case of treeOfZonesOfValue(). zonesUsedByExp ^^^^^^^^^^^^^^ .. java:method:: public BoolVector zonesUsedByExp(Tree instrOrExpr, Instruction instruction) :outertype: SymbolTable :return: a BoolVector of all the (private) (extended declared) (ALLKIND) zones that are used (i.e. actually read) during the evaluation of expression "instrOrExpr". Each zone is encoded as a single bit in the resulting BoolVector. The map of the zones in the resulting BoolVector is: {0 ; 0 ; nDZones}.