summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-07-02 20:11:41 +0000
committerRich Hickey <richhickey@gmail.com>2007-07-02 20:11:41 +0000
commitcbb04272ba5bf377cb2f24071915597e7ad7e437 (patch)
treed595194e5c5376de04145022af6b82470f1417cd
parent97795e1e3c44870ea715d602fa39ea61163bc3a4 (diff)
interim checkin
-rw-r--r--src/jvm/clojure/lang/Module.java4
-rw-r--r--src/jvm/clojure/lang/RT.java21
-rw-r--r--src/jvm/clojure/lang/Symbol.java8
3 files changed, 12 insertions, 21 deletions
diff --git a/src/jvm/clojure/lang/Module.java b/src/jvm/clojure/lang/Module.java
index 85d7a1cd..c99f9c25 100644
--- a/src/jvm/clojure/lang/Module.java
+++ b/src/jvm/clojure/lang/Module.java
@@ -31,11 +31,11 @@ Module(String name){
this.name = name;
}
-static public Module findModule(String name) throws Exception{
+static public Module findModule(String name){
return table.get(name);
}
-static public Module findOrCreateModule(String name) throws Exception{
+static public Module findOrCreateModule(String name){
Module module = findModule(name);
if(module == null)
module = table.putIfAbsent(name, new Module(name));
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index 36e0fa06..55a6fbba 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -18,10 +18,10 @@ import java.io.*;
public class RT{
-static public Symbol T = new Symbol("t", null);
-static public Var OUT;
+static public Symbol T = new Symbol("t");
+final static public TRef OUT = new TRef(new OutputStreamWriter(System.out));
-static public Var _CT_MODULE;
+final static public TRef CURRENT_MODULE = new TRef(Module.findOrCreateModule("clojure/user"));
static public final Object[] EMPTY_ARRAY = new Object[]{};
static public final Character[] chars;
@@ -32,19 +32,6 @@ static
chars = new Character[256];
for(int i = 0; i < chars.length; i++)
chars[i] = new Character((char) i);
- try
- {
- OUT = Module.intern("clojure", "^out");
- _CT_MODULE = Module.intern("clojure", "^module");
-
-
- OUT.bind(new OutputStreamWriter(System.out));
- _CT_MODULE.bind((Module.findOrCreate("clj-user")));
- }
- catch(Exception e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
}
static public int nextID(){
@@ -596,7 +583,7 @@ static public Object format(Object o, String s, Object... args) throws Exception
if(o == null)
w = new StringWriter();
else if(equal(o, T))
- w = (Writer) OUT.getValue();
+ w = (Writer) OUT.currentVal();
else
w = (Writer) o;
doFormat(w, s, ArraySeq.create(args));
diff --git a/src/jvm/clojure/lang/Symbol.java b/src/jvm/clojure/lang/Symbol.java
index cae743c2..0b1e1f5b 100644
--- a/src/jvm/clojure/lang/Symbol.java
+++ b/src/jvm/clojure/lang/Symbol.java
@@ -24,7 +24,7 @@ public String toString(){
return name;
}
-public Symbol(String name,String ns){
+public Symbol(String name, String ns){
this.name = name.intern();
if(ns != null)
this.ns = ns.intern();
@@ -32,6 +32,10 @@ public Symbol(String name,String ns){
this.ns = null;
}
+public Symbol(String name){
+ this(name, null);
+}
+
public boolean equals(Object o){
if(this == o)
return true;
@@ -45,7 +49,7 @@ public boolean equals(Object o){
}
public int hashCode(){
- return RT.hashCombine(name.hashCode(),RT.hash(ns));
+ return RT.hashCombine(name.hashCode(), RT.hash(ns));
}
}