Mercurial Hosting > luan
diff core/src/luan/LuanTableImpl.java @ 222:b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
git-svn-id: https://luan-java.googlecode.com/svn/trunk@223 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Mon, 21 Jul 2014 02:23:05 +0000 |
parents | ec016471c6eb |
children | 05eb2837ddbf |
line wrap: on
line diff
--- a/core/src/luan/LuanTableImpl.java Thu Jul 17 07:49:26 2014 +0000 +++ b/core/src/luan/LuanTableImpl.java Mon Jul 21 02:23:05 2014 +0000 @@ -3,6 +3,7 @@ import java.util.Iterator; import java.util.ListIterator; import java.util.Map; +import java.util.AbstractMap; import java.util.HashMap; import java.util.List; import java.util.ArrayList; @@ -14,7 +15,7 @@ import java.util.regex.Pattern; -public final class LuanTableImpl implements LuanTable, DeepCloneable<LuanTableImpl>, LuanRepr { +final class LuanTableImpl extends AbstractLuanTable implements LuanTable, DeepCloneable<LuanTableImpl>, LuanRepr { private Map<Object,Object> map = null; private List<Object> list = null; private LuanTable metatable = null; @@ -123,8 +124,8 @@ return rtn; } - @Override public String toString() { - return "table: " + Integer.toHexString(hashCode()); + @Override protected String type() { + return "table"; } @Override public String repr() { @@ -277,14 +278,14 @@ @Override public void insert(int pos,Object value) { if( value==null ) - throw new UnsupportedOperationException(); + throw new IllegalArgumentException("can't insert a nil value"); list().add(pos-1,value); mapToList(); } @Override public void add(Object value) { if( value==null ) - throw new UnsupportedOperationException(); + throw new IllegalArgumentException("can't add a nil value"); list().add(value); mapToList(); } @@ -340,7 +341,7 @@ } public Map.Entry<Object,Object> next() { Double key = Double.valueOf(iter.nextIndex()+1); - return new MapEntry(key,iter.next()); + return new AbstractMap.SimpleEntry<Object,Object>(key,iter.next()); } public void remove() { throw new UnsupportedOperationException(); @@ -362,28 +363,6 @@ this.metatable = metatable; } - private static final class MapEntry implements Map.Entry<Object,Object> { - private final Object key; - private final Object value; - - MapEntry(Object key,Object value) { - this.key = key; - this.value = value; - } - - @Override public Object getKey() { - return key; - } - - @Override public Object getValue() { - return value; - } - - @Override public Object setValue(Object value) { - throw new UnsupportedOperationException(); - } - } - public boolean isEmpty() { return (list==null || list.isEmpty()) && (map==null || map.isEmpty()); }