comparison src/luan/LuanMutable.java @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents
children
comparison
equal deleted inserted replaced
1577:60e5c324adf9 1578:c922446f53aa
1 package luan;
2
3 import java.util.Map;
4 import java.util.Collection;
5
6
7 public interface LuanMutable {
8 public boolean isImmutable();
9 public void makeImmutable();
10
11 public static void makeImmutable(LuanMutable obj) {
12 if( obj==null )
13 return;
14 obj.makeImmutable();
15 }
16
17 public static void makeImmutable(Object[] a) {
18 if( a==null )
19 return;
20 for( Object obj : a ) {
21 makeImmutable(obj);
22 }
23 }
24
25 public static void makeImmutable(Map map) {
26 if( map==null )
27 return;
28 for( Object stupid : map.entrySet() ) {
29 Map.Entry entry = (Map.Entry)stupid;
30 makeImmutable(entry.getKey());
31 makeImmutable(entry.getValue());
32 }
33 }
34
35 public static void makeImmutable(Collection col) {
36 if( col==null )
37 return;
38 for( Object obj : col ) {
39 makeImmutable(obj);
40 }
41 }
42
43 public static void makeImmutable(Object obj) {
44 if( obj instanceof LuanMutable )
45 makeImmutable((LuanMutable)obj);
46 else if( obj instanceof Object[] )
47 makeImmutable((Object[])obj);
48 else if( obj instanceof Map )
49 makeImmutable((Map)obj);
50 else if( obj instanceof Collection )
51 makeImmutable((Collection)obj);
52 }
53 }