public IMapEntry entryAt(Object k) { if (k instanceof Keyword) return entryAt(((Keyword) k).getName()); return getMap().entryAt(k); }
public IMapEntry entryAt(Object k) { if(k instanceof Keyword) return entryAt(((Keyword) k).getName()); return getMap().entryAt(k); }
Entry entryAt(Object k){ return mapAt(binFor(k)).entryAt(k); }
Entry entryAt(Object k){ return mapAt(binFor(k)).entryAt(k); }
public boolean replace(K k, V oldv, V newv){ Ref r = bins[binFor(k)]; IPersistentMap map = (IPersistentMap) r.deref(); Entry e = map.entryAt(k); if(e != null && e.getValue().equals(oldv)) { r.set(map.assoc(k, newv)); return true; } return false; }
public boolean remove(Object k, Object v){ Ref r = bins[binFor(k)]; IPersistentMap map = (IPersistentMap) r.deref(); Entry e = map.entryAt(k); if(e != null && e.getValue().equals(v)) { r.set(map.without(k)); return true; } return false; }
@SuppressWarnings("unchecked") @Override public EvalResult interpret(Environment e, IPersistentMap bindings) { Entry<Symbol, ?> lb=(Entry<Symbol, ?>)bindings.entryAt(sym); if (lb!=null) return e.withResult(lb.getValue()); Entry<Symbol, ?> o=(Entry<Symbol, ?>)e.entryAt(sym); if (o!=null) return e.withResult(o.getValue()); throw new KissException("Cannot lookup symbol "+sym+" in environment"); }
public boolean replace(K k, V oldv, V newv){ Ref r = bins[binFor(k)]; IPersistentMap map = (IPersistentMap) r.deref(); Entry e = map.entryAt(k); if(e != null && e.getValue().equals(oldv)) { r.set(map.assoc(k, newv)); return true; } return false; }
public IPersistentMap without(Object key) { Map.Entry e = def.keyslots.entryAt(key); if(e != null) throw Util.runtimeException("Can't remove struct key"); IPersistentMap newExt = ext.without(key); if(newExt == ext) return this; return makeNew(_meta, def, vals, newExt); }
public V putIfAbsent(K k, V v){ Ref r = bins[binFor(k)]; IPersistentMap map = (IPersistentMap) r.deref(); Entry e = map.entryAt(k); if(e == null) { r.set(map.assoc(k, v)); return null; } else return (V) e.getValue(); }
public IMapEntry entryAt(Object k) { if (k instanceof Keyword) return entryAt(((Keyword) k).getName()); return getMap().entryAt(k); }
public V replace(K k, V v){ Ref r = bins[binFor(k)]; IPersistentMap map = (IPersistentMap) r.deref(); Entry e = map.entryAt(k); if(e != null) { r.set(map.assoc(k, v)); return (V) e.getValue(); } return null; }
public IPersistentMap without(Object key) { Map.Entry e = def.keyslots.entryAt(key); if(e != null) throw Util.runtimeException("Can't remove struct key"); IPersistentMap newExt = ext.without(key); if(newExt == ext) return this; return makeNew(_meta, def, vals, newExt); }
public IPersistentMap assoc(Object key, Object val){ Map.Entry e = def.keyslots.entryAt(key); if(e != null) { int i = (Integer) e.getValue(); Object[] newVals = vals.clone(); newVals[i] = val; return makeNew(_meta, def, newVals, ext); } return makeNew(_meta, def, vals, ext.assoc(key, val)); }
public IMapEntry entryAt(Object k) { if(k instanceof Keyword) return entryAt(((Keyword) k).getName()); return getMap().entryAt(k); }
public V putIfAbsent(K k, V v){ Ref r = bins[binFor(k)]; IPersistentMap map = (IPersistentMap) r.deref(); Entry e = map.entryAt(k); if(e == null) { r.set(map.assoc(k, v)); return null; } else return (V) e.getValue(); }
public IPersistentMap assoc(Object key, Object val){ Map.Entry e = def.keyslots.entryAt(key); if(e != null) { int i = (Integer) e.getValue(); Object[] newVals = vals.clone(); newVals[i] = val; return makeNew(_meta, def, newVals, ext); } return makeNew(_meta, def, vals, ext.assoc(key, val)); }
public IMapEntry entryAt(Object k) { if(k instanceof Keyword) return entryAt(((Keyword) k).getName()); return getMap().entryAt(k); }