Mercurial Hosting > luan
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) { |