summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-06-25 20:43:16 +0000
committerRich Hickey <richhickey@gmail.com>2007-06-25 20:43:16 +0000
commit2f727ab53baa48fded8f8735484c8b7cddf7b95b (patch)
treeac2088e6c9647bfb400edb7cf1254817747aa359 /src/jvm/clojure
parent51381b5ad21ea2a74708504e64077cdfeccc8e0d (diff)
interim checkin
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/Module.java2
-rw-r--r--src/jvm/clojure/lang/Symbol.java70
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;
-}
-*/
+ */
}