diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-09-29 00:56:17 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-09-29 00:56:17 +0000 |
commit | 7708963ed3926abfbf84d765f748d2e246e13ace (patch) | |
tree | 5d28ad54167b489d749f77f5c59ca590e28ce133 /src/jvm/clojure | |
parent | 3697b6fdf89bc5502657c5936121e8ce151098c1 (diff) |
interim checkin
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 09776225..2d277fc3 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -27,28 +27,13 @@ final static Keyword TAG_KEY = Keyword.intern("clojure", "tag"); // Module.findOrCreateModule("clojure/user")); final static Symbol LOAD_FILE = Symbol.create("clojure", "load-file"); +final static Symbol IN_NAMESPACE = Symbol.create("clojure", "in-namespace"); +final static Symbol EXPORTS = Symbol.create("clojure", "*exports*"); +final static Var EXPORTS_VAR = Var.intern(EXPORTS,PersistentHashMap.EMPTY); final static Symbol EQL_REF = Symbol.create("clojure", "eql-ref?"); //string final static Var CURRENT_NS = Var.intern(Symbol.create("clojure", "*current-namespace*"), "clojure"); -//simple-symbol->var -final static Var REFERS = - Var.intern(Symbol.create("clojure", "*refers*"), - map( - LOAD_FILE, Var.intern(LOAD_FILE, - new AFn(){ - public Object invoke(Object arg1) throws Exception{ - return Compiler.loadFile((String) arg1); - } - }), - EQL_REF, Var.intern(EQL_REF, - new AFn(){ - public Object invoke(Object arg1, Object arg2) - throws Exception{ - return arg1 == arg2 ? RT.T : null; - } - }) - )); //simple-symbol->fully-qualified-class-name-string final static Var IMPORTS = Var.intern(Symbol.create("clojure", "*imports*"), map(Symbol.create("RT"), "clojure.lang.RT", @@ -122,6 +107,35 @@ final static Var IMPORTS = Var.intern(Symbol.create("clojure", "*imports*"), Symbol.create("SortedSet"), "java.util.SortedSet" )); +//simple-symbol->var +final static Var REFERS = + Var.intern(Symbol.create("clojure", "*refers*"), + map( + IN_NAMESPACE, Var.intern(IN_NAMESPACE, + new AFn(){ + public Object invoke(Object arg1) throws Exception{ + String ns = (String) arg1; + CURRENT_NS.set(ns); + Var.intern(Symbol.intern(ns, "*refers*"), EXPORTS_VAR.get()); + Var.intern(Symbol.intern(ns, "*imports*"), IMPORTS.get()); + return RT.T; + } + }), + LOAD_FILE, Var.intern(LOAD_FILE, + new AFn(){ + public Object invoke(Object arg1) throws Exception{ + return Compiler.loadFile((String) arg1); + } + }), + EQL_REF, Var.intern(EQL_REF, + new AFn(){ + public Object invoke(Object arg1, Object arg2) + throws Exception{ + return arg1 == arg2 ? RT.T : null; + } + }) + )); + static public final Object[] EMPTY_ARRAY = new Object[]{}; //static public final Character[] chars; static AtomicInteger id = new AtomicInteger(1); |