Mercurial Hosting > luan
diff src/luan/LuaJavaFunction.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/LuaJavaFunction.java Thu Dec 27 00:44:58 2012 +0000 +++ b/src/luan/LuaJavaFunction.java Thu Dec 27 01:48:36 2012 +0000 @@ -125,56 +125,16 @@ private static final Object[] NULL_RTN = new Object[1]; - private static final RtnConverter RTN_NUMBER = new RtnConverter() { - public Object[] convert(Object obj) { - if( obj == null ) - return NULL_RTN; - Number n = (Number)obj; - LuaNumber ln = LuaNumber.of(n); - return new Object[]{ln}; - } - }; - - private static final RtnConverter RTN_NUMBER_ARRAY = new RtnConverter() { - public Object[] convert(Object obj) { - if( obj == null ) - return NULL_RTN; - Object[] rtn = new Object[Array.getLength(obj)]; - for( int i=0; i<rtn.length; i++ ) { - Number n = (Number)Array.get(obj,i); - if( n != null ) - rtn[i] = LuaNumber.of(n.doubleValue()); - } - return rtn; - } - }; - private static RtnConverter getRtnConverter(JavaMethod m) { Class<?> rtnType = m.getReturnType(); if( rtnType == Void.TYPE ) return RTN_EMPTY; - if( isNumber(rtnType) ) - return RTN_NUMBER; if( rtnType.isArray() ) { - rtnType = rtnType.getComponentType(); - if( isNumber(rtnType) ) - return RTN_NUMBER_ARRAY; return RTN_ARRAY; } return RTN_ONE; } - private static boolean isNumber(Class<?> rtnType) { - return Number.class.isAssignableFrom(rtnType) - || rtnType == Byte.TYPE - || rtnType == Short.TYPE - || rtnType == Integer.TYPE - || rtnType == Long.TYPE - || rtnType == Float.TYPE - || rtnType == Double.TYPE - ; - } - private interface ArgConverter { public Object convert(Object obj); @@ -186,110 +146,6 @@ } }; - private static final ArgConverter ARG_DOUBLE = new ArgConverter() { - public Object convert(Object obj) { - if( obj instanceof LuaNumber ) { - LuaNumber ln = (LuaNumber)obj; - return Double.valueOf(ln.n); - } - if( obj instanceof String ) { - String s = (String)obj; - try { - return Double.valueOf(s); - } catch(NumberFormatException e) {} - } - return obj; - } - }; - - private static final ArgConverter ARG_FLOAT = new ArgConverter() { - public Object convert(Object obj) { - if( obj instanceof LuaNumber ) { - LuaNumber ln = (LuaNumber)obj; - return Float.valueOf((float)ln.n); - } - if( obj instanceof String ) { - String s = (String)obj; - try { - return Float.valueOf(s); - } catch(NumberFormatException e) {} - } - return obj; - } - }; - - private static final ArgConverter ARG_LONG = new ArgConverter() { - public Object convert(Object obj) { - if( obj instanceof LuaNumber ) { - LuaNumber ln = (LuaNumber)obj; - long i = (long)ln.n; - if( i == ln.n ) - return Long.valueOf(i); - } - else if( obj instanceof String ) { - String s = (String)obj; - try { - return Long.valueOf(s); - } catch(NumberFormatException e) {} - } - return obj; - } - }; - - private static final ArgConverter ARG_INTEGER = new ArgConverter() { - public Object convert(Object obj) { - if( obj instanceof LuaNumber ) { - LuaNumber ln = (LuaNumber)obj; - int i = (int)ln.n; - if( i == ln.n ) - return Integer.valueOf(i); - } - else if( obj instanceof String ) { - String s = (String)obj; - try { - return Integer.valueOf(s); - } catch(NumberFormatException e) {} - } - return obj; - } - }; - - private static final ArgConverter ARG_SHORT = new ArgConverter() { - public Object convert(Object obj) { - if( obj instanceof LuaNumber ) { - LuaNumber ln = (LuaNumber)obj; - short i = (short)ln.n; - if( i == ln.n ) - return Short.valueOf(i); - } - else if( obj instanceof String ) { - String s = (String)obj; - try { - return Short.valueOf(s); - } catch(NumberFormatException e) {} - } - return obj; - } - }; - - private static final ArgConverter ARG_BYTE = new ArgConverter() { - public Object convert(Object obj) { - if( obj instanceof LuaNumber ) { - LuaNumber ln = (LuaNumber)obj; - byte i = (byte)ln.n; - if( i == ln.n ) - return Byte.valueOf(i); - } - else if( obj instanceof String ) { - String s = (String)obj; - try { - return Byte.valueOf(s); - } catch(NumberFormatException e) {} - } - return obj; - } - }; - private static boolean takesLuaState(JavaMethod m) { Class<?>[] paramTypes = m.getParameterTypes(); return paramTypes.length > 0 && paramTypes[0].equals(LuaState.class); @@ -314,18 +170,6 @@ } private static ArgConverter getArgConverter(Class<?> cls) { - if( cls == Double.TYPE || cls.equals(Double.class) ) - return ARG_DOUBLE; - if( cls == Float.TYPE || cls.equals(Float.class) ) - return ARG_FLOAT; - if( cls == Long.TYPE || cls.equals(Long.class) ) - return ARG_LONG; - if( cls == Integer.TYPE || cls.equals(Integer.class) ) - return ARG_INTEGER; - if( cls == Short.TYPE || cls.equals(Short.class) ) - return ARG_SHORT; - if( cls == Byte.TYPE || cls.equals(Byte.class) ) - return ARG_BYTE; return ARG_SAME; }