comparison src/luan/LuanState.java @ 782:655280eab1e2

start limited cloning
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 30 Aug 2016 01:29:33 -0600
parents fbbdd369a13a
children 6a7c6879158d
comparison
equal deleted inserted replaced
781:fbbdd369a13a 782:655280eab1e2
12 import luan.modules.BasicLuan; 12 import luan.modules.BasicLuan;
13 import luan.modules.JavaLuan; 13 import luan.modules.JavaLuan;
14 14
15 15
16 public final class LuanState implements LuanCloneable { 16 public final class LuanState implements LuanCloneable {
17
18 public LuanJava java; 17 public LuanJava java;
19 private Map registry; 18 private Map registry;
20 private final List<Reference<Closeable>> onClose = new ArrayList<Reference<Closeable>>(); 19 private final List<Reference<Closeable>> onClose = new ArrayList<Reference<Closeable>>();
21 20
22 public LuanState() { 21 public LuanState() {
24 registry = new HashMap(); 23 registry = new HashMap();
25 } 24 }
26 25
27 private LuanState(LuanState luan) {} 26 private LuanState(LuanState luan) {}
28 27
29 @Override public LuanState shallowClone() { 28 @Override public LuanState shallowClone(LuanCloner cloner) {
30 return new LuanState(this); 29 return new LuanState(this);
31 } 30 }
32 31
33 @Override public void deepenClone(LuanCloneable dc,LuanCloner cloner) { 32 @Override public void deepenClone(LuanCloneable dc,LuanCloner cloner) {
34 LuanState clone = (LuanState)dc; 33 LuanState clone = (LuanState)dc;
35 clone.registry = cloner.deepClone(registry); 34 clone.registry = cloner.clone(registry);
36 clone.java = (LuanJava)cloner.deepClone(java); 35 clone.java = (LuanJava)cloner.clone(java);
37 } 36 }
38 37
39 public final Map registry() { 38 public final Map registry() {
40 return registry; 39 return registry;
41 } 40 }