Mercurial Hosting > luan
diff src/luan/lib/BasicLib.java @ 44:57054fa43189
implement table lib
git-svn-id: https://luan-java.googlecode.com/svn/trunk@45 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 26 Dec 2012 23:53:25 +0000 |
parents | 80b67b1a653c |
children | a443637829c1 |
line wrap: on
line diff
--- a/src/luan/lib/BasicLib.java Tue Dec 25 03:42:42 2012 +0000 +++ b/src/luan/lib/BasicLib.java Wed Dec 26 23:53:25 2012 +0000 @@ -121,8 +121,7 @@ return lua.call(fn,LuaElement.JAVA,null); } - public static LuaFunction pairs(LuaTable t) { - final Iterator<Map.Entry<Object,Object>> iter = t.iterator(); + private static LuaFunction pairs(final Iterator<Map.Entry<Object,Object>> iter) { return new LuaFunction() { public Object[] call(LuaState lua,Object[] args) { if( !iter.hasNext() ) @@ -133,15 +132,12 @@ }; } - public static LuaFunction ipairs(final LuaTable t) { - return new LuaFunction() { - private double i = 0.0; - public Object[] call(LuaState lua,Object[] args) { - LuaNumber n = new LuaNumber(++i); - Object val = t.get(n); - return val==null ? LuaFunction.EMPTY_RTN : new Object[]{n,val}; - } - }; + public static LuaFunction pairs(LuaTable t) { + return pairs( t.iterator() ); + } + + public static LuaFunction ipairs(LuaTable t) { + return pairs( t.listIterator() ); } public static LuaTable get_metatable(LuaState lua,Object obj) {