EclipseJDT Source Viewer

Home|eclipse_jdt/src/org/eclipse/jdt/core/dom/scope/ASTScope.java
1package org.eclipse.jdt.core.dom.scope;
2
3import java.util.HashMap;
4import java.util.Map;
5
6public class ASTScope {
7
8    public enum CompisiteScopeType {
9        CompisiteScopeNon,
10        CompisiteScopeFuncDecl,
11        CompisiteScopeTypeDecl,
12        CompisiteScopeTypeRecv,
13        CompisiteScopeStructAssign
14    }
15
16    public static final String ScopePathSep = ":";
17    public static final String ScopeDefineSep = ":";
18    public static final String ScopeQualNameSep = ".";
19    public static final String ScopePackageName = "pkg";
20
21    public static String ScopeBlockStmt = "BlockStmt";
22    public static String ScopeElts = "Elts";
23
24    public String identName = "";
25    public String fullPath = "";
26    public Map<StringASTScopechildScopeMap = new HashMap<StringASTScope>();
27    public ASTScope parentScope = null;
28    public ASTScope topScope = null;
29
30    public Map<StringASTDefineNodedefineNodeMap = new HashMap<StringASTDefineNode>();
31    /*
32     * type name for the node use, key: nodename_line_column,
33     * nodeName:{path:xxx:xxxx:xxxx.nodeName}
34     */
35    public Map<StringStringnodeUseSelectorPathMap = new HashMap<StringString>();
36
37    public ASTScope(String identASTScope parent) {
38        this.identName = ident;
39        this.parentScope = parent;
40        if (parent != null) {
41            this.fullPath = parent.fullPath + ScopePathSep + ident;
42            this.topScope = parent.topScope;
43        } else {
44            this.fullPath = ident;
45            this.topScope = this;
46        }
47    }
48
49    public ASTScope createChild(String ident) {
50
51        ASTScope child = childScopeMap.get(ident);
52        if (child != null) {
53            return child;
54        }
55        child = new ASTScope(ident, this);
56        childScopeMap.put(identchild);
57        return child;
58    }
59
60    public ASTScope getChildScope(String scopeName) {
61        return childScopeMap.get(scopeName);
62    }
63
64    public void dump() {
65        System.out.println("scope: " + this.fullPath);
66        for (Map.Entry<StringASTDefineNodeentry : defineNodeMap.entrySet()) {
67            ASTDefineNode astDefNode = entry.getValue();
68            System.out.println(
69                    "\t" + entry.getKey() + "  " + astDefNode.identName + "  (" + astDefNode.astPosistion.line + ","
70                            + astDefNode.astPosistion.column + ")");
71        }
72
73        for (Map.Entry<StringASTScopeentry : childScopeMap.entrySet()) {
74            ASTScope astScope = entry.getValue();
75            astScope.dump();
76        }
77    }
78
79    public ASTDefineNode addDefineNode(String nodeNameString nodeTypeNameASTDefineNode.DefineType defineType,
80            ASTPosition astPos) {
81        ASTDefineNode defineNode = new ASTDefineNode(nodeNamenodeTypeNamedefineType, this, astPos);
82        defineNodeMap.put(nodeNamedefineNode);
83        return defineNode;
84    }
85
86    public void setNodeUseSelectorPath(String nodeNameString nodeUsePath) {
87        this.nodeUseSelectorPathMap.put(nodeNamenodeUsePath);
88    }
89
90    public String getNodeUseSelectorPath(String nodeName) {
91        return this.nodeUseSelectorPathMap.get(nodeName);
92    }
93
94    public ASTDefineNode getDefineNode(String nodeName) {
95        ASTScope iterScope = this;
96
97        while (iterScope != null) {
98            ASTDefineNode astDefNode = iterScope.defineNodeMap.get(nodeName);
99            if (astDefNode != null) {
100                return astDefNode;
101            }
102            iterScope = iterScope.parentScope;
103        }
104        return null;
105    }
106
107}
108
MembersX
ASTScope:addDefineNode:Block:defineNode
ASTScope:topScope
ASTScope:identName
ASTScope:ScopePackageName
ASTScope:fullPath
ASTScope:getDefineNode
ASTScope:getDefineNode:Block:Block:astDefNode
ASTScope:createChild:Block:child
ASTScope:setNodeUseSelectorPath
ASTScope:parentScope
ASTScope:CompisiteScopeType:CompisiteScopeFuncDecl
ASTScope:ScopeQualNameSep
ASTScope:defineNodeMap
ASTScope:nodeUseSelectorPathMap
ASTScope:ScopePathSep
ASTScope:dump:Block:Block:astScope
ASTScope:CompisiteScopeType:CompisiteScopeStructAssign
ASTScope:getNodeUseSelectorPath
ASTScope:dump
ASTScope:ScopeDefineSep
ASTScope:getChildScope
ASTScope:ASTScope
ASTScope:addDefineNode
ASTScope:childScopeMap
ASTScope:CompisiteScopeType:CompisiteScopeTypeRecv
ASTScope:ScopeBlockStmt
ASTScope:CompisiteScopeType:CompisiteScopeNon
ASTScope:ScopeElts
ASTScope:createChild
ASTScope:getDefineNode:Block:iterScope
ASTScope:dump:Block:Block:astDefNode
ASTScope:CompisiteScopeType:CompisiteScopeTypeDecl
Members
X