Mercurial Hosting > luan
comparison core/src/luan/LuanPropertyTable.java @ 226:392105b660d7
add LuanProperty
git-svn-id: https://luan-java.googlecode.com/svn/trunk@227 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 22 Jul 2014 06:23:13 +0000 |
parents | |
children | 1bce334a816b |
comparison
equal
deleted
inserted
replaced
225:7c768f63bbb3 | 226:392105b660d7 |
---|---|
1 package luan; | |
2 | |
3 import java.util.Set; | |
4 import java.util.Map; | |
5 import java.util.AbstractMap; | |
6 import java.util.Iterator; | |
7 | |
8 | |
9 class LuanPropertyTable extends LuanTableImpl { | |
10 | |
11 @Override public LuanTableImpl shallowClone() { | |
12 return new LuanPropertyTable(); | |
13 } | |
14 | |
15 private Object fixValue(Object obj) { | |
16 return obj instanceof LuanProperty ? ((LuanProperty)obj).get() : obj; | |
17 } | |
18 | |
19 @Override String repr(Set<LuanTableImpl> set,Object obj) { | |
20 return super.repr(set,fixValue(obj)); | |
21 } | |
22 | |
23 @Override public Object get(Object key) { | |
24 return fixValue(super.get(key)); | |
25 } | |
26 | |
27 @Override public void put(Object key,Object val) { | |
28 Object v = super.get(key); | |
29 if( v instanceof LuanProperty ) { | |
30 LuanProperty lp = (LuanProperty)v; | |
31 if( lp.set(val) ) | |
32 return; | |
33 } | |
34 super.put(key,val); | |
35 } | |
36 | |
37 @Override public Iterator<Map.Entry<Object,Object>> iterator() { | |
38 final Iterator<Map.Entry<Object,Object>> i = super.iterator(); | |
39 return new Iterator<Map.Entry<Object,Object>>() { | |
40 public boolean hasNext() { | |
41 return i.hasNext(); | |
42 } | |
43 public Map.Entry<Object,Object> next() { | |
44 Map.Entry<Object,Object> entry = i.next(); | |
45 Object v = entry.getValue(); | |
46 if( v instanceof LuanProperty ) { | |
47 LuanProperty lp = (LuanProperty)v; | |
48 return new AbstractMap.SimpleEntry<Object,Object>(entry.getKey(),lp.get()); | |
49 } | |
50 return entry; | |
51 } | |
52 public void remove() { | |
53 i.remove(); | |
54 } | |
55 }; | |
56 } | |
57 | |
58 } |