Mercurial Hosting > luan
comparison src/luan/lib/BasicLib.java @ 109:219e05867366
remove NumericForStmt;
add BasicLib.range();
git-svn-id: https://luan-java.googlecode.com/svn/trunk@110 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 23 May 2014 04:30:29 +0000 |
parents | 3c404a296995 |
children | 2428ecfed375 |
comparison
equal
deleted
inserted
replaced
108:3c404a296995 | 109:219e05867366 |
---|---|
38 add( global, "ipairs", LuanState.class, LuanTable.class ); | 38 add( global, "ipairs", LuanState.class, LuanTable.class ); |
39 add( global, "load", LuanState.class, String.class, String.class, Boolean.class ); | 39 add( global, "load", LuanState.class, String.class, String.class, Boolean.class ); |
40 add( global, "load_file", LuanState.class, String.class ); | 40 add( global, "load_file", LuanState.class, String.class ); |
41 add( global, "pairs", LuanState.class, LuanTable.class ); | 41 add( global, "pairs", LuanState.class, LuanTable.class ); |
42 add( global, "print", LuanState.class, new Object[0].getClass() ); | 42 add( global, "print", LuanState.class, new Object[0].getClass() ); |
43 add( global, "range", LuanState.class, Double.TYPE, Double.TYPE, Double.class ); | |
43 add( global, "raw_equal", Object.class, Object.class ); | 44 add( global, "raw_equal", Object.class, Object.class ); |
44 add( global, "raw_get", LuanTable.class, Object.class ); | 45 add( global, "raw_get", LuanTable.class, Object.class ); |
45 add( global, "raw_len", LuanState.class, Object.class ); | 46 add( global, "raw_len", LuanState.class, Object.class ); |
46 add( global, "raw_set", LuanTable.class, Object.class, Object.class ); | 47 add( global, "raw_set", LuanTable.class, Object.class, Object.class ); |
47 add( global, "repr", LuanState.class, Object.class ); | 48 add( global, "repr", LuanState.class, Object.class ); |
96 return luan.JAVA.call(fn,null); | 97 return luan.JAVA.call(fn,null); |
97 } | 98 } |
98 | 99 |
99 private static LuanFunction pairs(final Iterator<Map.Entry<Object,Object>> iter) { | 100 private static LuanFunction pairs(final Iterator<Map.Entry<Object,Object>> iter) { |
100 return new LuanFunction() { | 101 return new LuanFunction() { |
101 public Object[] call(LuanState luan,Object[] args) { | 102 @Override public Object[] call(LuanState luan,Object[] args) { |
102 if( !iter.hasNext() ) | 103 if( !iter.hasNext() ) |
103 return LuanFunction.EMPTY; | 104 return LuanFunction.EMPTY; |
104 Map.Entry<Object,Object> entry = iter.next(); | 105 Map.Entry<Object,Object> entry = iter.next(); |
105 return new Object[]{entry.getKey(),entry.getValue()}; | 106 return new Object[]{entry.getKey(),entry.getValue()}; |
106 } | 107 } |
198 | 199 |
199 public static String repr(LuanState luan,Object v) throws LuanException { | 200 public static String repr(LuanState luan,Object v) throws LuanException { |
200 return luan.JAVA.repr(v); | 201 return luan.JAVA.repr(v); |
201 } | 202 } |
202 | 203 |
204 public static LuanFunction range(LuanState luan,final double from,final double to,Double stepV) throws LuanException { | |
205 final double step = stepV==null ? 1.0 : stepV; | |
206 if( step == 0.0 ) | |
207 throw luan.JAVA.exception("bad argument #3 (step may not be zero)"); | |
208 return new LuanFunction() { | |
209 double v = from; | |
210 | |
211 @Override public Object[] call(LuanState luan,Object[] args) { | |
212 if( step > 0.0 && v > to || step < 0.0 && v < to ) | |
213 return LuanFunction.EMPTY; | |
214 double rtn = v; | |
215 v += step; | |
216 return new Object[]{rtn}; | |
217 } | |
218 }; | |
219 } | |
220 | |
203 } | 221 } |