comparison core/src/luan/LuanTable.java @ 425:0a2fb80907f9

minor LuanTable cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 01 May 2015 17:18:23 -0600
parents 1eafb11a150d
children 23a93c118042
comparison
equal deleted inserted replaced
424:750a68eceb1d 425:0a2fb80907f9
50 if( obj != null ) 50 if( obj != null )
51 map.put(obj,Boolean.TRUE); 51 map.put(obj,Boolean.TRUE);
52 } 52 }
53 } 53 }
54 54
55 public LuanTable(LuanTable tbl) {
56 if( tbl.map != null && !tbl.map.isEmpty() )
57 this.map = new LinkedHashMap<Object,Object>(tbl.map);
58 if( tbl.length() > 0 )
59 this.list = new ArrayList<Object>(tbl.list);
60 this.metatable = tbl.metatable;
61 }
62
55 @Override public LuanTable shallowClone() { 63 @Override public LuanTable shallowClone() {
56 return new LuanTable(); 64 return new LuanTable();
57 } 65 }
58 66
59 @Override public void deepenClone(LuanTable clone,DeepCloner cloner) { 67 @Override public void deepenClone(LuanTable clone,DeepCloner cloner) {
79 } 87 }
80 88
81 public List<Object> asList() { 89 public List<Object> asList() {
82 return list!=null ? list : Collections.emptyList(); 90 return list!=null ? list : Collections.emptyList();
83 } 91 }
84
85 private Map<Object,Object> map() {
86 return map!=null ? map : Collections.emptyMap();
87 }
88 /*
89 @Override public boolean isSet() {
90 if( list != null ) {
91 for( Object obj : list ) {
92 if( obj!=null && !obj.equals(Boolean.TRUE) )
93 return false;
94 }
95 }
96 if( map != null ) {
97 for( Object obj : map.values() ) {
98 if( !obj.equals(Boolean.TRUE) )
99 return false;
100 }
101 }
102 return true;
103 }
104
105 @Override public Set<Object> asSet() {
106 if( list == null || list.isEmpty() )
107 return map!=null ? map.keySet() : Collections.emptySet();
108 Set<Object> rtn = map!=null ? new HashSet<Object>(map.keySet()) : new HashSet<Object>();
109 for( int i=1; i<=list.size(); i++ ) {
110 rtn.add(i);
111 }
112 return rtn;
113 }
114 */
115 92
116 public Object get(Object key) { 93 public Object get(Object key) {
117 if( list != null ) { 94 if( list != null ) {
118 Integer iT = Luan.asInteger(key); 95 Integer iT = Luan.asInteger(key);
119 if( iT != null ) { 96 if( iT != null ) {
327 map.put(entry.getKey(),entry.getValue()); 304 map.put(entry.getKey(),entry.getValue());
328 } 305 }
329 return map; 306 return map;
330 } 307 }
331 308
332 public LuanTable cloneTable() {
333 return isList() ? new LuanTable(new ArrayList<Object>(asList())) : new LuanTable(asMap());
334 }
335
336 @Override public final String toString() { 309 @Override public final String toString() {
337 return "table: " + Integer.toHexString(hashCode()); 310 return "table: " + Integer.toHexString(hashCode());
338 } 311 }
339 312
340 } 313 }