diff src/luan/LuaTable.java @ 46:a443637829c1

remove LuaNumber git-svn-id: https://luan-java.googlecode.com/svn/trunk@47 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Thu, 27 Dec 2012 01:48:36 +0000
parents 57054fa43189
children 659c7139e903
line wrap: on
line diff
--- a/src/luan/LuaTable.java	Thu Dec 27 00:44:58 2012 +0000
+++ b/src/luan/LuaTable.java	Thu Dec 27 01:48:36 2012 +0000
@@ -26,11 +26,10 @@
 	}
 
 	public Object get(Object key) {
-		if( list != null && key instanceof LuaNumber ) {
-			LuaNumber ln = (LuaNumber)key;
-			int i = (int)ln.n;
-			if( i == ln.n ) {
-				i--;
+		if( list != null ) {
+			Integer iT = Lua.asInteger(key);
+			if( iT != null ) {
+				int i = iT - 1;
 				if( i>=0 && i<list.size() )
 					return list.get(i);
 			}
@@ -41,43 +40,44 @@
 	}
 
 	public Object put(Object key,Object val) {
-		if( key instanceof LuaNumber ) {
-			LuaNumber ln = (LuaNumber)key;
-			int i = (int)ln.n;
-			if( i == ln.n ) {
-				i--;
-				if( list == null && i == 0 )
-					list = new ArrayList<Object>();
-				if( list != null ) {
-					if( i == list.size() ) {
-						if( val != null ) {
-							list.add(val);
-							if( map != null ) {
-								while(true) {
-									Object v = map.remove(LuaNumber.of(list.size()+1));
-									if( v == null )
-										break;
-									list.add(v);
-								}
+		Integer iT = Lua.asInteger(key);
+		if( iT != null ) {
+			int i = iT - 1;
+			if( list == null && i == 0 )
+				list = new ArrayList<Object>();
+			if( list != null ) {
+				if( i == list.size() ) {
+					if( val != null ) {
+						list.add(val);
+						if( map != null ) {
+							while(true) {
+								Object v = map.remove(Double.valueOf(list.size()+1));
+								if( v == null )
+									break;
+								list.add(v);
 							}
 						}
-						return null;
-					} else if( i>=0 && i<list.size() ) {
-						Object old = list.get(i);
-						list.set(i,val);
-						if( val == null && i == list.size()-1 ) {
-							while( i>=0 && list.get(i)==null ) {
-								list.remove(i--);
-							}
+					}
+					return null;
+				} else if( i>=0 && i<list.size() ) {
+					Object old = list.get(i);
+					list.set(i,val);
+					if( val == null && i == list.size()-1 ) {
+						while( i>=0 && list.get(i)==null ) {
+							list.remove(i--);
 						}
-						return old;
 					}
+					return old;
 				}
 			}
 		}
 		if( map==null ) {
 			map = new HashMap<Object,Object>();
 		}
+		if( key instanceof Number && !(key instanceof Double) ) {
+			Number n = (Number)key;
+			key = Double.valueOf(n.doubleValue());
+		}
 		if( val == null ) {
 			return map.remove(key);
 		} else {
@@ -144,7 +144,7 @@
 				return iter.hasNext();
 			}
 			public Map.Entry<Object,Object> next() {
-				LuaNumber key = LuaNumber.of(iter.nextIndex()+1);
+				Double key = Double.valueOf(iter.nextIndex()+1);
 				return new MapEntry(key,iter.next());
 			}
 			public void remove() {