diff core/src/luan/AbstractLuanTable.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
children 05eb2837ddbf
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/src/luan/AbstractLuanTable.java	Mon Jul 21 02:23:05 2014 +0000
@@ -0,0 +1,67 @@
+package luan;
+
+import java.util.Iterator;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.regex.Pattern;
+
+
+public abstract class AbstractLuanTable implements LuanTable {
+
+	@Override public List<Object> asList() {
+		return Collections.emptyList();
+	}
+
+	@Override public Map<Object,Object> asMap() {
+		return Collections.emptyMap();
+	}
+
+	protected abstract String type();
+
+	@Override public final String toString() {
+		return type() + ": " + Integer.toHexString(hashCode());
+	}
+
+	@Override public Object put(Object key,Object val) {
+		throw new UnsupportedOperationException("can't put into a "+type());
+	}
+
+	@Override public void insert(int pos,Object value) {
+		throw new UnsupportedOperationException("can't insert into a "+type());
+	}
+
+	@Override public void add(Object value) {
+		throw new UnsupportedOperationException("can't add to a "+type());
+	}
+
+	@Override public Object remove(int pos) {
+		throw new UnsupportedOperationException("can't remove from a "+type());
+	}
+
+	@Override public void sort(Comparator<Object> cmp) {
+	}
+
+	@Override public int length() {
+		return 0;
+	}
+
+	@Override public LuanTable subList(int from,int to) {
+		throw new UnsupportedOperationException("can't get a sub-list of a "+type());
+	}
+
+	@Override public LuanTable getMetatable() {
+		return null;
+	}
+
+	@Override public void setMetatable(LuanTable metatable) {
+		throw new UnsupportedOperationException("can't set a metatable on a "+type());
+	}
+}