Mercurial Hosting > luan
comparison src/luan/LuanJavaFunction.java @ 1259:e8020216dee7
add Luan.to_luan and fix multipart/form-data
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 23 Sep 2018 17:58:40 -0600 |
parents | aa8517d7c065 |
children | 9fa8b8389578 |
comparison
equal
deleted
inserted
replaced
1258:e4d7a3114fa8 | 1259:e8020216dee7 |
---|---|
223 if( !m.isLuan() && rtnType.isArray() && !rtnType.getComponentType().isPrimitive() ) { | 223 if( !m.isLuan() && rtnType.isArray() && !rtnType.getComponentType().isPrimitive() ) { |
224 return RTN_ARRAY; | 224 return RTN_ARRAY; |
225 } | 225 } |
226 return RTN_SAME; | 226 return RTN_SAME; |
227 } | 227 } |
228 /* | 228 |
229 private static boolean isNumber(Class rtnType) { | |
230 return rtnType == Short.TYPE | |
231 || rtnType == Integer.TYPE | |
232 || rtnType == Long.TYPE | |
233 || rtnType == Float.TYPE | |
234 || rtnType == Double.TYPE | |
235 ; | |
236 } | |
237 */ | |
238 private interface ArgConverter { | 229 private interface ArgConverter { |
239 public Object convert(LuanState luan,Object obj) throws LuanException; | 230 public Object convert(LuanState luan,Object obj) throws LuanException; |
240 } | 231 } |
241 | 232 |
242 private static final ArgConverter ARG_SAME = new ArgConverter() { | 233 private static final ArgConverter ARG_SAME = new ArgConverter() { |
346 } | 337 } |
347 }; | 338 }; |
348 | 339 |
349 private static final ArgConverter ARG_TABLE = new ArgConverter() { | 340 private static final ArgConverter ARG_TABLE = new ArgConverter() { |
350 public Object convert(LuanState luan,Object obj) { | 341 public Object convert(LuanState luan,Object obj) { |
351 if( obj == null ) | 342 LuanTable tbl = Luan.toTable(obj); |
352 return null; | 343 return tbl!=null ? tbl : obj; |
353 if( obj instanceof List ) { | |
354 return new LuanTable((List)obj); | |
355 } | |
356 if( obj instanceof Map ) { | |
357 return new LuanTable((Map)obj); | |
358 } | |
359 if( obj instanceof Set ) { | |
360 return new LuanTable((Set)obj); | |
361 } | |
362 Class cls = obj.getClass(); | |
363 if( cls.isArray() ) { | |
364 if( cls.getComponentType().isPrimitive() ) { | |
365 int len = Array.getLength(obj); | |
366 List list = new ArrayList(); | |
367 for( int i=0; i<len; i++ ) { | |
368 list.add(Array.get(obj,i)); | |
369 } | |
370 return new LuanTable(list); | |
371 } else { | |
372 Object[] a = (Object[])obj; | |
373 return new LuanTable(Arrays.asList(a)); | |
374 } | |
375 } | |
376 return obj; | |
377 } | 344 } |
378 @Override public String toString() { | 345 @Override public String toString() { |
379 return "ARG_TABLE"; | 346 return "ARG_TABLE"; |
380 } | 347 } |
381 }; | 348 }; |