comparison src/luan/Luan.java @ 1267:9fa8b8389578

add LuanTable.luan; support metatable __gc(); add luan.sql;
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 12 Nov 2018 02:10:41 -0700
parents 4b5b84853f6f
children f41919741100
comparison
equal deleted inserted replaced
1266:05934fbf635a 1267:9fa8b8389578
1 package luan; 1 package luan;
2 2
3 import java.lang.reflect.Array;
4 import java.util.List; 3 import java.util.List;
5 import java.util.ArrayList; 4 import java.util.ArrayList;
6 import java.util.Map; 5 import java.util.Map;
7 import java.util.LinkedHashMap; 6 import java.util.LinkedHashMap;
8 import java.util.Set; 7 import java.util.Set;
200 public static LuanTable table(LuanTable v) throws LuanException { 199 public static LuanTable table(LuanTable v) throws LuanException {
201 Utils.checkNotNull(v); 200 Utils.checkNotNull(v);
202 return v; 201 return v;
203 } 202 }
204 */ 203 */
205 public static LuanTable toTable(Object obj) {
206 if( obj == null )
207 return null;
208 if( obj instanceof LuanTable )
209 return (LuanTable)obj;
210 if( obj instanceof List ) {
211 return new LuanTable((List)obj);
212 }
213 if( obj instanceof Map ) {
214 return new LuanTable((Map)obj);
215 }
216 if( obj instanceof Set ) {
217 return new LuanTable((Set)obj);
218 }
219 Class cls = obj.getClass();
220 if( cls.isArray() ) {
221 if( cls.getComponentType().isPrimitive() ) {
222 int len = Array.getLength(obj);
223 List list = new ArrayList();
224 for( int i=0; i<len; i++ ) {
225 list.add(Array.get(obj,i));
226 }
227 return new LuanTable(list);
228 } else {
229 Object[] a = (Object[])obj;
230 return new LuanTable(Arrays.asList(a));
231 }
232 }
233 return null;
234 }
235 204
236 private Luan() {} // never 205 private Luan() {} // never
237 } 206 }