KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > polyglot > ext > jl > types > Package_c


1 package polyglot.ext.jl.types;
2
3 import polyglot.types.*;
4 import polyglot.types.Package;
5
6 /**
7  * An <code>PackageType</code> represents a package type. It may or may
8  * not be fully qualified. Package types are never canonical and never
9  * primitive.
10  */

11 public class Package_c extends TypeObject_c implements Package JavaDoc
12 {
13     protected Package JavaDoc prefix;
14     protected String JavaDoc name;
15     /**
16      * The full name is computed lazily from the prefix and name.
17      */

18     protected String JavaDoc fullname = null;
19
20     /** Used for deserializing types. */
21     protected Package_c() { }
22     
23     public Package_c(TypeSystem ts) {
24         this(ts, null, null);
25     }
26
27     public Package_c(TypeSystem ts, String JavaDoc name) {
28         this(ts, null, name);
29     }
30
31     public Package_c(TypeSystem ts, Package JavaDoc prefix, String JavaDoc name) {
32         super(ts);
33     this.prefix = prefix;
34     this.name = name;
35     }
36
37     public boolean isType() { return false; }
38     public boolean isPackage() { return true; }
39     public Type toType() { return null; }
40     public Package JavaDoc toPackage() { return this; }
41
42     public Package JavaDoc prefix() {
43     return prefix;
44     }
45
46     public String JavaDoc name() {
47     return name;
48     }
49
50     public String JavaDoc translate(Resolver c) {
51         if (prefix() == null) {
52           return name();
53         }
54
55         return prefix().translate(c) + "." + name();
56     }
57
58     public String JavaDoc fullName() {
59         if (fullname == null) {
60             fullname = prefix() == null ? name : prefix().fullName() + "." + name;
61         }
62         return fullname;
63     }
64
65     public String JavaDoc toString() {
66     return prefix() == null ? name : prefix().toString() + "." + name;
67     }
68
69     public int hashCode() {
70         return name.hashCode();
71     }
72
73     public boolean equalsImpl(TypeObject o) {
74         if (o instanceof Package JavaDoc) {
75             Package JavaDoc p = (Package JavaDoc) o;
76             if (p == null) {
77                 return false;
78             }
79
80             if (prefix() == null) {
81                 return p.prefix() == null && name().equals(p.name());
82             }
83             else {
84                 return prefix().equals(p.prefix()) && name().equals(p.name());
85             }
86         }
87
88         return false;
89     }
90
91     public boolean isCanonical() {
92     return true;
93     }
94 }
95
Popular Tags