comparison core/src/luan/LuanTable.java @ 433:c6bcb8859b93

make LuanState.registry a Map; remove generics from DeepCloneable; add Map support to DeepCloner;
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 03 May 2015 15:45:39 -0600
parents d9df6d6cb927
children 472fc70853cd
comparison
equal deleted inserted replaced
432:d9df6d6cb927 433:c6bcb8859b93
13 import java.util.HashSet; 13 import java.util.HashSet;
14 import java.util.IdentityHashMap; 14 import java.util.IdentityHashMap;
15 import java.util.regex.Pattern; 15 import java.util.regex.Pattern;
16 16
17 17
18 public final class LuanTable implements DeepCloneable<LuanTable> { 18 public final class LuanTable implements DeepCloneable {
19 private Map<Object,Object> map = null; 19 private Map<Object,Object> map = null;
20 private List<Object> list = null; 20 private List<Object> list = null;
21 private LuanTable metatable = null; 21 private LuanTable metatable = null;
22 private boolean hasJava = false; 22 private boolean hasJava = false;
23 23
58 58
59 @Override public LuanTable shallowClone() { 59 @Override public LuanTable shallowClone() {
60 return new LuanTable(); 60 return new LuanTable();
61 } 61 }
62 62
63 @Override public void deepenClone(LuanTable clone,DeepCloner cloner) { 63 @Override public void deepenClone(DeepCloneable dc,DeepCloner cloner) {
64 LuanTable clone = (LuanTable)dc;
64 if( map != null ) { 65 if( map != null ) {
65 clone.map = newMap(); 66 clone.map = newMap();
66 for( Map.Entry<Object,Object> entry : map.entrySet() ) { 67 for( Map.Entry<Object,Object> entry : map.entrySet() ) {
67 clone.map.put( cloner.get(entry.getKey()), cloner.get(entry.getValue()) ); 68 clone.map.put( cloner.get(entry.getKey()), cloner.get(entry.getValue()) );
68 } 69 }
72 for( Object obj : list ) { 73 for( Object obj : list ) {
73 clone.list.add( cloner.get(obj) ); 74 clone.list.add( cloner.get(obj) );
74 } 75 }
75 } 76 }
76 if( metatable != null ) 77 if( metatable != null )
77 clone.metatable = cloner.get(metatable); 78 clone.metatable = (LuanTable)cloner.get(metatable);
78 clone.hasJava = hasJava; 79 clone.hasJava = hasJava;
79 } 80 }
80 81
81 public boolean isList() { 82 public boolean isList() {
82 return map==null || map.isEmpty(); 83 return map==null || map.isEmpty();