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;
 		}