Mercurial Hosting > luan
diff core/src/luan/LuanJavaFunction.java @ 297:899253043270
remove PackageLuan.load_lib()
git-svn-id: https://luan-java.googlecode.com/svn/trunk@298 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 16 Dec 2014 03:26:43 +0000 |
parents | 9737ebb9aaa0 |
children | ba8b0aae6453 |
line wrap: on
line diff
--- a/core/src/luan/LuanJavaFunction.java Mon Dec 15 08:03:32 2014 +0000 +++ b/core/src/luan/LuanJavaFunction.java Tue Dec 16 03:26:43 2014 +0000 @@ -21,21 +21,17 @@ private final Class<?> varArgCls; public LuanJavaFunction(Method method,Object obj) { - this(method,obj,false); - } - - public LuanJavaFunction(Method method,Object obj,boolean convertArray) { - this( JavaMethod.of(method), obj, convertArray ); + this( JavaMethod.of(method), obj ); } public LuanJavaFunction(Constructor constr,Object obj) { - this( JavaMethod.of(constr), obj, false ); + this( JavaMethod.of(constr), obj ); } - private LuanJavaFunction(JavaMethod method,Object obj,boolean convertArray) { + private LuanJavaFunction(JavaMethod method,Object obj) { this.method = method; this.obj = obj; - this.rtnConverter = getRtnConverter(method,convertArray); + this.rtnConverter = getRtnConverter(method); this.takesLuaState = takesLuaState(method); this.argConverters = getArgConverters(takesLuaState,method); if( method.isVarArgs() ) { @@ -208,12 +204,14 @@ } }; - private static RtnConverter getRtnConverter(JavaMethod m,boolean convertArray) { + private static RtnConverter getRtnConverter(JavaMethod m) { Class<?> rtnType = m.getReturnType(); if( rtnType == Void.TYPE ) return RTN_NOTHING; - if( convertArray && rtnType.isArray() && !rtnType.getComponentType().isPrimitive() ) + if( !m.isLuan() && rtnType.isArray() && !rtnType.getComponentType().isPrimitive() ) { +//System.out.println("qqqqqq "+m); return RTN_ARRAY; + } return RTN_SAME; } @@ -544,6 +542,7 @@ abstract Object invoke(Object obj,Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException; abstract Class<?> getReturnType(); + abstract boolean isLuan(); static JavaMethod of(final Method m) { return new JavaMethod() { @@ -561,6 +560,9 @@ @Override Class<?> getReturnType() { return m.getReturnType(); } + @Override boolean isLuan() { + return m.getAnnotation(LuanMethod.class) != null; + } @Override public String toString() { return m.toString(); } @@ -583,6 +585,9 @@ @Override Class<?> getReturnType() { return c.getDeclaringClass(); } + @Override boolean isLuan() { + return false; + } @Override public String toString() { return c.toString(); }