Mercurial Hosting > luan
comparison src/luan/impl/LuanImpl.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 | 7ef40e1923b7 |
children | f41919741100 |
comparison
equal
deleted
inserted
replaced
1266:05934fbf635a | 1267:9fa8b8389578 |
---|---|
12 | 12 |
13 | 13 |
14 public final class LuanImpl { | 14 public final class LuanImpl { |
15 private LuanImpl() {} // never | 15 private LuanImpl() {} // never |
16 | 16 |
17 public static int len(LuanState luan,Object o) throws LuanException { | 17 public static int len(Object o) throws LuanException { |
18 if( o instanceof String ) { | 18 if( o instanceof String ) { |
19 String s = (String)o; | 19 String s = (String)o; |
20 return s.length(); | 20 return s.length(); |
21 } | 21 } |
22 if( o instanceof byte[] ) { | 22 if( o instanceof byte[] ) { |
23 byte[] a = (byte[])o; | 23 byte[] a = (byte[])o; |
24 return a.length; | 24 return a.length; |
25 } | 25 } |
26 if( o instanceof LuanTable ) { | 26 if( o instanceof LuanTable ) { |
27 LuanTable t = (LuanTable)o; | 27 LuanTable t = (LuanTable)o; |
28 return t.length(luan); | 28 return t.length(); |
29 } | 29 } |
30 throw new LuanException( "attempt to get length of a " + Luan.type(o) + " value" ); | 30 throw new LuanException( "attempt to get length of a " + Luan.type(o) + " value" ); |
31 } | 31 } |
32 | 32 |
33 public static Object unm(LuanState luan,Object o) throws LuanException { | 33 public static Object unm(LuanState luan,Object o) throws LuanException { |
157 public static void nop(Object o) {} | 157 public static void nop(Object o) {} |
158 | 158 |
159 public static void put(LuanState luan,Object t,Object key,Object value) throws LuanException { | 159 public static void put(LuanState luan,Object t,Object key,Object value) throws LuanException { |
160 if( t instanceof LuanTable ) { | 160 if( t instanceof LuanTable ) { |
161 LuanTable tbl = (LuanTable)t; | 161 LuanTable tbl = (LuanTable)t; |
162 tbl.put(luan,key,value); | 162 tbl.put(key,value); |
163 return; | 163 return; |
164 } | 164 } |
165 if( t != null && luan.javaOk.ok ) | 165 if( t != null && luan.javaOk.ok ) |
166 JavaLuan.__new_index(luan,t,key,value); | 166 JavaLuan.__new_index(luan,t,key,value); |
167 else | 167 else |
227 return rtn; | 227 return rtn; |
228 } | 228 } |
229 } | 229 } |
230 } | 230 } |
231 | 231 |
232 public static LuanTable table(Object[] a) { | 232 public static LuanTable table(LuanState luan,Object[] a) { |
233 LuanTable table = new LuanTable(); | 233 LuanTable table = new LuanTable(luan); |
234 int i = 0; | 234 int i = 0; |
235 for( Object fld : a ) { | 235 for( Object fld : a ) { |
236 if( fld instanceof TableField ) { | 236 if( fld instanceof TableField ) { |
237 TableField tblFld = (TableField)fld; | 237 TableField tblFld = (TableField)fld; |
238 Object key = tblFld.key; | 238 Object key = tblFld.key; |