@Override public Object eval(Reader reader, ScriptContext context) throws ScriptException { try { // Get engine bindings and send them to Clojure Bindings engineBindings = context.getBindings(ScriptContext.ENGINE_SCOPE); engineBindings.entrySet().forEach((entry) -> Var.intern(Namespace.findOrCreate(NAMESPACE_SYMBOL), Symbol.create(entry.getKey().intern()), entry.getValue(), true)); Var.pushThreadBindings( RT.map(RT.CURRENT_NS, RT.CURRENT_NS.deref(), RT.IN, new LineNumberingPushbackReader(context.getReader()), RT.OUT, context.getWriter(), RT.ERR, context.getErrorWriter())); Object result = Compiler.load(reader); return result; } catch (Exception e) { throw new ScriptException(e); } finally { Namespace.remove(NAMESPACE_SYMBOL); } }
public Object eval() { Object[] ret = new Object[keyvals.count()]; for(int i = 0; i < keyvals.count(); i++) ret[i] = ((Expr) keyvals.nth(i)).eval(); return RT.map(ret); }
Namespace(Symbol name){ super(name.meta()); this.name = name; aliases.set(RT.map()); }
Namespace(Symbol name){ super(name.meta()); this.name = name; mappings.set(RT.DEFAULT_IMPORTS); aliases.set(RT.map()); }
public Object invoke(Object reader, Object leftparen, Object opts, Object pendingForms) { PushbackReader r = (PushbackReader) reader; Object[] a = readDelimitedList('}', r, true, opts, ensurePending(pendingForms)).toArray(); if((a.length & 1) == 1) throw Util.runtimeException("Map literal must contain an even number of forms"); return RT.map(a); }
public Object invoke(Object reader, Object leftparen, Object opts) { PushbackReader r = (PushbackReader) reader; Object[] a = readDelimitedList('}', r, true, opts).toArray(); if((a.length & 1) == 1) throw Util.runtimeException("Map literal must contain an even number of forms"); return RT.map(a); }
public Object invoke(Object reader, Object leftparen) { PushbackReader r = (PushbackReader) reader; Object[] a = readDelimitedList('}', r, true).toArray(); if((a.length & 1) == 1) throw Util.runtimeException("Map literal must contain an even number of forms"); return RT.map(a); }
public Object invoke(Object reader, Object leftparen, Object opts) { PushbackReader r = (PushbackReader) reader; Object[] a = readDelimitedList('}', r, true, opts).toArray(); if((a.length & 1) == 1) throw Util.runtimeException("Map literal must contain an even number of forms"); return RT.map(a); }
public Object invoke(Object reader, Object backquote) { PushbackReader r = (PushbackReader) reader; try { Var.pushThreadBindings( RT.map(GENSYM_ENV, PersistentHashMap.EMPTY)); Object form = read(r, true, null, true); return syntaxQuote(form); } finally { Var.popThreadBindings(); } }
static public Def createSlotMap(ISeq keys){ if(keys == null) throw new IllegalArgumentException("Must supply keys"); int c = RT.count(keys); Object[] v = new Object[2*c]; int i = 0; for(ISeq s = keys; s != null; s = s.next(), i++) { v[2*i] = s.first(); v[2*i+1] = i; } return new Def(keys, RT.map(v)); }
static public Def createSlotMap(ISeq keys){ if(keys == null) throw new IllegalArgumentException("Must supply keys"); int c = RT.count(keys); Object[] v = new Object[2*c]; int i = 0; for(ISeq s = keys; s != null; s = s.next(), i++) { v[2*i] = s.first(); v[2*i+1] = i; } return new Def(keys, RT.map(v)); }
public Object invoke(Object reader, Object backquote, Object opts, Object pendingForms) { PushbackReader r = (PushbackReader) reader; try { Var.pushThreadBindings( RT.map(GENSYM_ENV, PersistentHashMap.EMPTY)); Object form = read(r, true, null, true, opts, ensurePending(pendingForms)); return syntaxQuote(form); } finally { Var.popThreadBindings(); } }
private static final class DefaultComparator implements Comparator, Serializable { public int compare(Object o1, Object o2){ return Util.compare(o1, o2); } private Object readResolve() throws ObjectStreamException { // ensures that we aren't hanging onto a new default comparator for every // sorted set, etc., we deserialize return DEFAULT_COMPARATOR; } }
void emitConstants(GeneratorAdapter clinitgen){ try { Var.pushThreadBindings(RT.map(RT.PRINT_DUP, RT.T)); for(int i = 0; i < constants.count(); i++) { emitValue(constants.nth(i), clinitgen); clinitgen.checkCast(constantType(i)); clinitgen.putStatic(objtype, constantName(i), constantType(i)); } } finally { Var.popThreadBindings(); } }
public Object run(){ try{ Var.pushThreadBindings(RT.map(USE_CONTEXT_CLASSLOADER, RT.T)); // getRootClassLoader(); return new DynamicClassLoader(baseLoader()); } finally{ Var.popThreadBindings(); } } });
public Object eval() { Object[] ret = new Object[keyvals.count()]; for(int i = 0; i < keyvals.count(); i++) ret[i] = ((Expr) keyvals.nth(i)).eval(); return RT.map(ret); }
public static void pushNSandLoader(ClassLoader loader){ Var.pushThreadBindings(RT.map(Var.intern(Symbol.intern("clojure.core"), Symbol.intern("*ns*")).setDynamic(), null, RT.FN_LOADER_VAR, loader, RT.READEVAL, RT.T )); }
@Override public Object eval(Reader reader, ScriptContext context) throws ScriptException { try { // Get engine bindings and send them to Clojure Bindings engineBindings = context.getBindings(ScriptContext.ENGINE_SCOPE); engineBindings.entrySet().forEach((entry) -> Var.intern(Namespace.findOrCreate(NAMESPACE_SYMBOL), Symbol.create(entry.getKey().intern()), entry.getValue(), true)); Var.pushThreadBindings( RT.map(RT.CURRENT_NS, RT.CURRENT_NS.deref(), RT.IN, new LineNumberingPushbackReader(context.getReader()), RT.OUT, context.getWriter(), RT.ERR, context.getErrorWriter())); Object result = Compiler.load(reader); return result; } catch (Exception e) { throw new ScriptException(e); } finally { Namespace.remove(NAMESPACE_SYMBOL); } }
private void createNecessaryThreadBindings() { var("user", "input").bindRoot(ioCache.getInputLookupFn()); var("user", "output").bindRoot(ioCache.getOutputLookupFn()); Var.pushThreadBindings(map( var("clojure.core", "*out*"), writer, ns, ns.deref(), output1, null, output2, null, output3, null, lastError, null )); }
void emitConstants(GeneratorAdapter clinitgen){ try { Var.pushThreadBindings(RT.map(RT.PRINT_DUP, RT.T)); for(int i = 0; i < constants.count(); i++) { emitValue(constants.nth(i), clinitgen); clinitgen.checkCast(constantType(i)); clinitgen.putStatic(objtype, constantName(i), constantType(i)); } } finally { Var.popThreadBindings(); } }