Mercurial Hosting > luan
diff src/luan/LuanJavaFunction.java @ 1267:9fa8b8389578
add LuanTable.luan;
support metatable __gc();
add luan.sql;
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 12 Nov 2018 02:10:41 -0700 |
parents | e8020216dee7 |
children | 25746915a241 |
line wrap: on
line diff
--- a/src/luan/LuanJavaFunction.java Sun Sep 30 19:10:48 2018 -0600 +++ b/src/luan/LuanJavaFunction.java Mon Nov 12 02:10:41 2018 -0700 @@ -58,7 +58,7 @@ @Override public Object call(LuanState luan,Object[] args) throws LuanException { try { args = fixArgs(luan,args); - return doCall(args); + return doCall(luan,args); } catch(IllegalArgumentException e) { checkArgs(args); throw e; @@ -67,10 +67,10 @@ public Object rawCall(LuanState luan,Object[] args) throws LuanException { args = fixArgs(luan,args); - return doCall(args); + return doCall(luan,args); } - private Object doCall(Object[] args) throws LuanException { + private Object doCall(LuanState luan,Object[] args) throws LuanException { Object rtn; try { rtn = method.invoke(obj,args); @@ -86,7 +86,7 @@ } catch(InstantiationException e) { throw new RuntimeException(e); } - return rtnConverter.convert(rtn); + return rtnConverter.convert(luan,rtn); } private static final Map primitiveMap = new HashMap(); @@ -189,30 +189,30 @@ private interface RtnConverter { - public Object convert(Object obj); + public Object convert(LuanState luan,Object obj); } private static final RtnConverter RTN_NOTHING = new RtnConverter() { - @Override public Object[] convert(Object obj) { + @Override public Object[] convert(LuanState luan,Object obj) { return NOTHING; } }; private static final RtnConverter RTN_SAME = new RtnConverter() { - @Override public Object convert(Object obj) { + @Override public Object convert(LuanState luan,Object obj) { return obj; } }; private static final RtnConverter RTN_ARRAY = new RtnConverter() { - @Override public Object convert(Object obj) { + @Override public Object convert(LuanState luan,Object obj) { if( obj == null ) return null; Object[] a = new Object[Array.getLength(obj)]; for( int i=0; i<a.length; i++ ) { a[i] = Array.get(obj,i); } - return new LuanTable(new ArrayList<Object>(Arrays.asList(a))); + return new LuanTable(luan,new ArrayList<Object>(Arrays.asList(a))); } }; @@ -339,7 +339,7 @@ private static final ArgConverter ARG_TABLE = new ArgConverter() { public Object convert(LuanState luan,Object obj) { - LuanTable tbl = Luan.toTable(obj); + LuanTable tbl = luan.toTable(obj); return tbl!=null ? tbl : obj; } @Override public String toString() { @@ -351,7 +351,7 @@ public Object convert(LuanState luan,Object obj) throws LuanException { if( obj instanceof LuanTable ) { LuanTable t = (LuanTable)obj; - return t.asMap(luan); + return t.asMap(); } return obj; } @@ -378,8 +378,8 @@ public Object convert(LuanState luan,Object obj) throws LuanException { if( obj instanceof LuanTable ) { LuanTable t = (LuanTable)obj; - if( t.isSet(luan) ) - return t.asSet(luan); + if( t.isSet() ) + return t.asSet(); } return obj; } @@ -394,8 +394,8 @@ LuanTable t = (LuanTable)obj; if( t.isList() ) return t.asList(); - if( t.isSet(luan) ) - return t.asSet(luan); + if( t.isSet() ) + return t.asSet(); } return obj; }