1 package polyglot.ext.jl.types; 2 3 import polyglot.types.*; 4 import polyglot.types.Package; 5 6 11 public class Package_c extends TypeObject_c implements Package 12 { 13 protected Package prefix; 14 protected String name; 15 18 protected String fullname = null; 19 20 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 name) { 28 this(ts, null, name); 29 } 30 31 public Package_c(TypeSystem ts, Package prefix, String 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 toPackage() { return this; } 41 42 public Package prefix() { 43 return prefix; 44 } 45 46 public String name() { 47 return name; 48 } 49 50 public String translate(Resolver c) { 51 if (prefix() == null) { 52 return name(); 53 } 54 55 return prefix().translate(c) + "." + name(); 56 } 57 58 public String fullName() { 59 if (fullname == null) { 60 fullname = prefix() == null ? name : prefix().fullName() + "." + name; 61 } 62 return fullname; 63 } 64 65 public String 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 ) { 75 Package p = (Package ) 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 |