diff src/luan/LuanTable.java @ 1420:225808b90cee

options handling
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 26 Oct 2019 22:21:09 -0600
parents 2024d23ddd64
children 851b9a48cc44
line wrap: on
line diff
--- a/src/luan/LuanTable.java	Fri Oct 25 22:12:06 2019 -0600
+++ b/src/luan/LuanTable.java	Sat Oct 26 22:21:09 2019 -0600
@@ -224,15 +224,16 @@
 				}
 			}
 		}
-		if( map==null )
-			map = newMap();
 		if( key instanceof Number && !(key instanceof Double) ) {
 			Number n = (Number)key;
 			key = Double.valueOf(n.doubleValue());
 		}
 		if( val == null ) {
-			map.remove(key);
+			if( map!=null )
+				map.remove(key);
 		} else {
+			if( map==null )
+				map = newMap();
 			map.put(key,val);
 		}
 	}
@@ -278,7 +279,7 @@
 		mapToList();
 	}
 
-	public Object rawRemove(int pos) {
+	public Object removeFromList(int pos) {
 		check();
 		return list().remove(pos-1);
 	}
@@ -506,7 +507,7 @@
 		return n;
 	}
 
-	public boolean rawIsEmpty() {
+	public boolean isEmpty() {
 		return (map==null || map.isEmpty()) && (list==null || list.isEmpty());
 	}
 
@@ -519,6 +520,12 @@
 		return n;
 	}
 
+	public Object remove(Object key) {
+		Object old = rawGet(key);
+		rawPut2(key,null);
+		return old;
+	}
+
 	protected void finalize() throws Throwable {
 		Object h = getHandler("__gc");
 		if( h != null ) {