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;