Mercurial Hosting > luan
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 } |