Mercurial Hosting > luan
comparison core/src/luan/LuanTable.java @ 195:24ede40ee0aa
make MetatableGetter DeepCloneable, scoped, and secure
git-svn-id: https://luan-java.googlecode.com/svn/trunk@196 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 03 Jul 2014 08:19:48 +0000 |
parents | 3dcb0f9bee82 |
children | be0275bda373 |
comparison
equal
deleted
inserted
replaced
194:08df375e2e5f | 195:24ede40ee0aa |
---|---|
16 | 16 |
17 public final class LuanTable implements DeepCloneable<LuanTable>, Iterable<Map.Entry<Object,Object>>, LuanRepr { | 17 public final class LuanTable implements DeepCloneable<LuanTable>, Iterable<Map.Entry<Object,Object>>, LuanRepr { |
18 private Map<Object,Object> map = null; | 18 private Map<Object,Object> map = null; |
19 private List<Object> list = null; | 19 private List<Object> list = null; |
20 private LuanTable metatable = null; | 20 private LuanTable metatable = null; |
21 public MetatableGetter metatableGetter = null; // used for modules | |
21 | 22 |
22 public LuanTable() {} | 23 public LuanTable() {} |
23 | 24 |
24 public LuanTable(LuanTable tbl) { | 25 public LuanTable(LuanTable tbl) { |
25 if( tbl.map != null ) | 26 if( tbl.map != null ) |
60 @Override public LuanTable shallowClone() { | 61 @Override public LuanTable shallowClone() { |
61 return new LuanTable(); | 62 return new LuanTable(); |
62 } | 63 } |
63 | 64 |
64 @Override public void deepenClone(LuanTable clone,DeepCloner cloner) { | 65 @Override public void deepenClone(LuanTable clone,DeepCloner cloner) { |
66 clone.metatableGetter = this.metatableGetter; | |
65 if( map != null ) { | 67 if( map != null ) { |
66 clone.map = new HashMap<Object,Object>(); | 68 clone.map = new HashMap<Object,Object>(); |
67 for( Map.Entry<Object,Object> entry : map.entrySet() ) { | 69 for( Map.Entry<Object,Object> entry : map.entrySet() ) { |
68 clone.map.put( cloner.get(entry.getKey()), cloner.get(entry.getValue()) ); | 70 clone.map.put( cloner.get(entry.getKey()), cloner.get(entry.getValue()) ); |
69 } | 71 } |