Mercurial Hosting > luan
comparison src/luan/LuanState.java @ 73:f86e4f77ef32
add package module
git-svn-id: https://luan-java.googlecode.com/svn/trunk@74 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 12 Feb 2013 09:46:45 +0000 |
parents | f7e17cfb35f9 |
children | f003338d503b |
comparison
equal
deleted
inserted
replaced
72:cd9dbd7477ca | 73:f86e4f77ef32 |
---|---|
4 import java.io.PrintStream; | 4 import java.io.PrintStream; |
5 import java.util.List; | 5 import java.util.List; |
6 import java.util.ArrayList; | 6 import java.util.ArrayList; |
7 import luan.interp.LuanCompiler; | 7 import luan.interp.LuanCompiler; |
8 import luan.lib.BasicLib; | 8 import luan.lib.BasicLib; |
9 import luan.lib.PackageLib; | |
9 import luan.lib.JavaLib; | 10 import luan.lib.JavaLib; |
10 import luan.lib.MathLib; | 11 import luan.lib.MathLib; |
11 import luan.lib.StringLib; | 12 import luan.lib.StringLib; |
12 import luan.lib.TableLib; | 13 import luan.lib.TableLib; |
13 import luan.lib.HtmlLib; | 14 import luan.lib.HtmlLib; |
14 | 15 |
15 | 16 |
16 public abstract class LuanState { | 17 public abstract class LuanState { |
17 | 18 |
19 public final LuanTable global = new LuanTable(); | |
20 public final LuanTable loaded = new LuanTable(); | |
21 public final LuanTable preload = new LuanTable(); | |
22 | |
23 public InputStream in = System.in; | |
24 public PrintStream out = System.out; | |
25 public PrintStream err = System.err; | |
26 | |
27 private final List<MetatableGetter> mtGetters = new ArrayList<MetatableGetter>(); | |
28 final List<StackTraceElement> stackTrace = new ArrayList<StackTraceElement>(); | |
29 | |
30 | |
31 public Object load(LuanFunction loader,String modName) throws LuanException { | |
32 return load(loader,modName,null); | |
33 } | |
34 | |
35 public Object load(LuanFunction loader,String modName,Object extra) throws LuanException { | |
36 Object mod = Luan.first(call(loader,LuanElement.JAVA,"loader",modName,extra)); | |
37 if( mod == null ) | |
38 mod = true; | |
39 loaded.put(modName,mod); | |
40 return mod; | |
41 } | |
42 | |
18 public static LuanState newStandard() { | 43 public static LuanState newStandard() { |
19 LuanState luan = LuanCompiler.newLuanState(); | 44 try { |
20 BasicLib.register(luan); | 45 LuanState luan = LuanCompiler.newLuanState(); |
21 JavaLib.register(luan); | 46 luan.load(BasicLib.LOADER,BasicLib.NAME); |
22 MathLib.register(luan); | 47 luan.load(PackageLib.LOADER,PackageLib.NAME); |
23 StringLib.register(luan); | 48 luan.load(JavaLib.LOADER,JavaLib.NAME); |
24 TableLib.register(luan); | 49 luan.load(MathLib.LOADER,MathLib.NAME); |
25 HtmlLib.register(luan); | 50 luan.load(StringLib.LOADER,StringLib.NAME); |
26 return luan; | 51 luan.load(TableLib.LOADER,TableLib.NAME); |
52 luan.load(HtmlLib.LOADER,HtmlLib.NAME); | |
53 return luan; | |
54 } catch(LuanException e) { | |
55 throw new RuntimeException(e); | |
56 } | |
27 } | 57 } |
28 | 58 |
29 public Object[] eval(String cmd,String sourceName) throws LuanException { | 59 public Object[] eval(String cmd,String sourceName) throws LuanException { |
30 LuanFunction fn = BasicLib.load(this,cmd,sourceName); | 60 LuanFunction fn = BasicLib.load(this,cmd,sourceName); |
31 return call(fn,null,null); | 61 return call(fn,null,null); |
32 } | 62 } |
33 | 63 |
34 | |
35 | |
36 private final LuanTable global = new LuanTable(); | |
37 private final List<MetatableGetter> mtGetters = new ArrayList<MetatableGetter>(); | |
38 final List<StackTraceElement> stackTrace = new ArrayList<StackTraceElement>(); | |
39 | |
40 public InputStream in = System.in; | |
41 public PrintStream out = System.out; | |
42 public PrintStream err = System.err; | |
43 | |
44 public final LuanTable global() { | |
45 return global; | |
46 } | |
47 | 64 |
48 public final LuanTable getMetatable(Object obj) { | 65 public final LuanTable getMetatable(Object obj) { |
49 if( obj instanceof LuanTable ) { | 66 if( obj instanceof LuanTable ) { |
50 LuanTable table = (LuanTable)obj; | 67 LuanTable table = (LuanTable)obj; |
51 return table.getMetatable(); | 68 return table.getMetatable(); |