Mercurial Hosting > luan
view core/src/luan/LuanPropertyTable.java @ 258:4dfa86dbca45
rename "java:" to "classpath:"
git-svn-id: https://luan-java.googlecode.com/svn/trunk@259 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 28 Oct 2014 20:38:04 +0000 |
parents | 392105b660d7 |
children | 1bce334a816b |
line wrap: on
line source
package luan; import java.util.Set; import java.util.Map; import java.util.AbstractMap; import java.util.Iterator; class LuanPropertyTable extends LuanTableImpl { @Override public LuanTableImpl shallowClone() { return new LuanPropertyTable(); } private Object fixValue(Object obj) { return obj instanceof LuanProperty ? ((LuanProperty)obj).get() : obj; } @Override String repr(Set<LuanTableImpl> set,Object obj) { return super.repr(set,fixValue(obj)); } @Override public Object get(Object key) { return fixValue(super.get(key)); } @Override public void put(Object key,Object val) { Object v = super.get(key); if( v instanceof LuanProperty ) { LuanProperty lp = (LuanProperty)v; if( lp.set(val) ) return; } super.put(key,val); } @Override public Iterator<Map.Entry<Object,Object>> iterator() { final Iterator<Map.Entry<Object,Object>> i = super.iterator(); return new Iterator<Map.Entry<Object,Object>>() { public boolean hasNext() { return i.hasNext(); } public Map.Entry<Object,Object> next() { Map.Entry<Object,Object> entry = i.next(); Object v = entry.getValue(); if( v instanceof LuanProperty ) { LuanProperty lp = (LuanProperty)v; return new AbstractMap.SimpleEntry<Object,Object>(entry.getKey(),lp.get()); } return entry; } public void remove() { i.remove(); } }; } }