Mercurial Hosting > luan
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(); |