| 17 | |
| 18 | |
| 19 | public class Symbol extends AFn implements IObj, Comparable, Named, Serializable, IHashEq{ |
| 20 | |
| 21 | private static final long serialVersionUID = 1191039485148212259L; |
| 22 | |
| 23 | final String ns; |
| 24 | final String name; |
| 25 | private int _hasheq; |
| 26 | final IPersistentMap _meta; |
| 27 | transient String _str; |
| 28 | |
| 29 | public String toString(){ |
| 30 | if(_str == null){ |
| 31 | if(ns != null) |
| 32 | _str = (ns + "/" + name); |
| 33 | else |
| 34 | _str = name; |
| 35 | } |
| 36 | return _str; |
| 37 | } |
| 38 | |
| 39 | public String getNamespace(){ |
| 40 | return ns; |
| 41 | } |
| 42 | |
| 43 | public String getName(){ |
| 44 | return name; |
| 45 | } |
| 46 | |
| 47 | // the create thunks preserve binary compatibility with code compiled |
| 48 | // against earlier version of Clojure and can be removed (at some point). |
| 49 | static public Symbol create(String ns, String name) { |
| 50 | return Symbol.intern(ns, name); |
| 51 | } |
| 52 | |
| 53 | static public Symbol create(String nsname) { |
| 54 | return Symbol.intern(nsname); |
| 55 | } |
| 56 | |
| 57 | static public Symbol intern(String ns, String name){ |
| 58 | return new Symbol(ns, name); |
| 59 | } |
| 60 | |
| 61 | static public Symbol intern(String nsname){ |
| 62 | int i = nsname.indexOf('/'); |
| 63 | if(i == -1 || nsname.equals("/")) |
| 64 | return new Symbol(null, nsname); |
| 65 | else |
| 66 | return new Symbol(nsname.substring(0, i), nsname.substring(i + 1)); |
| 67 | } |
| 68 | |
| 69 | private Symbol(String ns_interned, String name_interned){ |
| 70 | this.name = name_interned; |
| 71 | this.ns = ns_interned; |
| 72 | this._meta = null; |
| 73 | } |
| 74 | |
| 75 | public boolean equals(Object o){ |
| 76 | if(this == o) |
nothing calls this directly
no outgoing calls
no test coverage detected