KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > puppycrawl > tools > checkstyle > checks > usage > transmogrify > Scope


1
2 // Transmogrify License
3
//
4
// Copyright (c) 2001, ThoughtWorks, Inc.
5
// All rights reserved.
6
// Redistribution and use in source and binary forms, with or without
7
// modification, are permitted provided that the following conditions
8
// are met:
9
// - Redistributions of source code must retain the above copyright notice,
10
// this list of conditions and the following disclaimer.
11
// - Redistributions in binary form must reproduce the above copyright
12
// notice, this list of conditions and the following disclaimer in the
13
// documentation and/or other materials provided with the distribution.
14
// Neither the name of the ThoughtWorks, Inc. nor the names of its
15
// contributors may be used to endorse or promote products derived from this
16
// software without specific prior written permission.
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28

29 package com.puppycrawl.tools.checkstyle.checks.usage.transmogrify;
30
31
32
33 import java.util.Enumeration JavaDoc;
34 import java.util.Hashtable JavaDoc;
35 import java.util.Iterator JavaDoc;
36 import java.util.SortedSet JavaDoc;
37 import java.util.TreeSet JavaDoc;
38 import java.util.Vector JavaDoc;
39
40
41 /**
42  * Represents a scope of Java code.
43  *
44  * @author andrew mccormick, dave wood
45  * @version 1.0
46  * @since 1.0
47  * @see Definition
48  * @see Resolvable
49  */

50 public abstract class Scope extends Definition {
51
52   // rename to references?
53
protected SortedSet JavaDoc referencesInScope = new TreeSet JavaDoc();
54
55   protected Hashtable JavaDoc elements = new Hashtable JavaDoc();
56   protected Hashtable JavaDoc labels = new Hashtable JavaDoc();
57   protected Hashtable JavaDoc classes = new Hashtable JavaDoc();
58
59   public Scope( String JavaDoc name, Scope parentScope, SymTabAST node ) {
60     super( name, parentScope, node );
61   }
62
63   public void addDefinition(VariableDef def) {
64     elements.put(def.getName(), def);
65   }
66
67   public void addDefinition(BlockDef def) {
68     elements.put(def.getName(), def);
69   }
70
71   public void addDefinition(ClassDef def) {
72     classes.put(def.getName(), def);
73   }
74
75   public void addDefinition(LabelDef def) {
76     labels.put(def.getName(), def);
77   }
78
79   public abstract void addDefinition(IPackage def);
80
81   protected Enumeration JavaDoc getDefinitions() {
82     Vector JavaDoc allElements = new Vector JavaDoc();
83
84     allElements.addAll(elements.values());
85     allElements.addAll(labels.values());
86     allElements.addAll(classes.values());
87
88     return allElements.elements();
89   }
90
91   protected Iterator JavaDoc getClasses() {
92     return classes.values().iterator();
93   }
94
95   public abstract IMethod getMethodDefinition(String JavaDoc name, ISignature signature);
96   public abstract IVariable getVariableDefinition(String JavaDoc name);
97   public abstract LabelDef getLabelDefinition(String JavaDoc name);
98   public abstract IClass getClassDefinition(String JavaDoc name);
99
100   public Iterator JavaDoc getReferencesIn() {
101     return referencesInScope.iterator();
102   }
103
104   public Reference getSymbol(String JavaDoc name, Occurrence location) {
105     Reference result = null;
106
107     for (Iterator JavaDoc it = getReferencesIn(); it.hasNext(); ) {
108       Reference reference = (Reference)it.next();
109 // if (name.equals(reference.getName())) {
110
if (reference.getLine() == location.getLine() &&
111             reference.getColumn() == location.getColumn()) {
112           result = reference;
113           break;
114         }
115 // }
116
}
117     return result;
118   }
119
120   public void addReferenceInScope( Reference reference ) {
121     referencesInScope.add( reference );
122   }
123
124 }
125
Popular Tags