diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-06-25 20:43:16 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-06-25 20:43:16 +0000 |
commit | 2f727ab53baa48fded8f8735484c8b7cddf7b95b (patch) | |
tree | ac2088e6c9647bfb400edb7cf1254817747aa359 /src/jvm/clojure | |
parent | 51381b5ad21ea2a74708504e64077cdfeccc8e0d (diff) |
interim checkin
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/Module.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Symbol.java | 70 |
2 files changed, 25 insertions, 47 deletions
diff --git a/src/jvm/clojure/lang/Module.java b/src/jvm/clojure/lang/Module.java index 3f839e8d..e93cd666 100644 --- a/src/jvm/clojure/lang/Module.java +++ b/src/jvm/clojure/lang/Module.java @@ -52,7 +52,7 @@ static public Module findOrCreate(String name) static public Var intern(String ns,String name) { - return findOrCreate(ns).intern(Symbol.intern(name)); + return findOrCreate(ns).intern(new Symbol(name)); } public Var find(Symbol sym){ diff --git a/src/jvm/clojure/lang/Symbol.java b/src/jvm/clojure/lang/Symbol.java index 49d87a10..918d3ec3 100644 --- a/src/jvm/clojure/lang/Symbol.java +++ b/src/jvm/clojure/lang/Symbol.java @@ -12,24 +12,39 @@ package clojure.lang; -import java.util.HashMap; public class Symbol - //extends Obj implements Comparable { - -final public static HashMap table = new HashMap(); -//final public static HashSet hashes = new HashSet(); -//final static Random rand = new Random(42); - +//this must be an interned string! public final String name; -//int hash = 0; public String toString() { return name; } +public Symbol(String name) + { + this.name = name.intern(); + } + +public boolean equals(Object o){ + if(this == o) + return true; + if(o == null || getClass() != o.getClass()) + return false; + + Symbol symbol = (Symbol) o; + + //identity compare ok, names are interned + return name == symbol.name; +} + +public int hashCode(){ + return name.hashCode(); +} + +/* public static Symbol intern(String name) { synchronized(table) @@ -59,43 +74,6 @@ public static Symbol intern(String name) } } -/** - * Used by intern() - * @param name - */ -Symbol(String name) - { - this.name = name; - } - /* - public int hashCode(){ - if(hash == 0) - { - synchronized (hashes) - { - while (hash == 0) - { - int h = rand.nextInt(); - if (h != 0 && !hashes.contains(h)) - { - hash = h; - hashes.add(h); - } - } - } - } - return hash; - } - - -public int compareTo(Object o) { - return hashCode() - ((Symbol)o).hashCode(); -} - -public Obj withMeta(IPersistentMap meta) { - this._meta = meta; - return this; -} -*/ + */ } |