Mercurial Hosting > luan
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() {