comparison core/src/luan/modules/TableLuan.java @ 572:f1601a4ce1aa

fix stack when calling meta-methods
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 12 Jul 2015 21:34:23 -0600
parents 22bfd8a2eaee
children 6cc2f047019b
comparison
equal deleted inserted replaced
571:cd944b010f25 572:f1601a4ce1aa
16 16
17 public final class TableLuan { 17 public final class TableLuan {
18 18
19 public static String concat(LuanState luan,LuanTable list,String sep,Integer i,Integer j) throws LuanException { 19 public static String concat(LuanState luan,LuanTable list,String sep,Integer i,Integer j) throws LuanException {
20 int first = i==null ? 1 : i; 20 int first = i==null ? 1 : i;
21 int last = j==null ? list.length(luan) : j; 21 int last = j==null ? list.length(luan.JAVA) : j;
22 StringBuilder buf = new StringBuilder(); 22 StringBuilder buf = new StringBuilder();
23 for( int k=first; k<=last; k++ ) { 23 for( int k=first; k<=last; k++ ) {
24 Object val = list.get(luan,k); 24 Object val = list.get(luan.JAVA,k);
25 if( val==null ) 25 if( val==null )
26 break; 26 break;
27 if( sep!=null && k > first ) 27 if( sep!=null && k > first )
28 buf.append(sep); 28 buf.append(sep);
29 String s = luan.toString(val); 29 String s = luan.JAVA.toString(val);
30 buf.append(s); 30 buf.append(s);
31 } 31 }
32 return buf.toString(); 32 return buf.toString();
33 } 33 }
34 34
90 return tbl; 90 return tbl;
91 } 91 }
92 92
93 @LuanMethod public static Object[] unpack(LuanState luan,LuanTable tbl,Integer iFrom,Integer iTo) throws LuanException { 93 @LuanMethod public static Object[] unpack(LuanState luan,LuanTable tbl,Integer iFrom,Integer iTo) throws LuanException {
94 int from = iFrom!=null ? iFrom : 1; 94 int from = iFrom!=null ? iFrom : 1;
95 int to = iTo!=null ? iTo : tbl.length(luan); 95 int to = iTo!=null ? iTo : tbl.length(luan.JAVA);
96 List<Object> list = new ArrayList<Object>(); 96 List<Object> list = new ArrayList<Object>();
97 for( int i=from; i<=to; i++ ) { 97 for( int i=from; i<=to; i++ ) {
98 list.add( tbl.get(luan,i) ); 98 list.add( tbl.get(luan.JAVA,i) );
99 } 99 }
100 return list.toArray(); 100 return list.toArray();
101 } 101 }
102 102
103 public static LuanTable copy(LuanTable list,Integer from,Integer to) { 103 public static LuanTable copy(LuanTable list,Integer from,Integer to) {