|
1 | 1 | /* LNjScheme -*- mode: java; c-basic-offset: 2; -*- */ |
2 | 2 |
|
3 | | -LNjSchemeSession = new LNjScheme.Scheme |
4 | | - (new String[0]) |
5 | | - { |
| 3 | +if(LNjSchemeSession==null) { |
6 | 4 |
|
7 | | - public void ln_log(String msg) { |
8 | | - String m = ln_log_date_formatter.format(new java.util.Date()) + msg; |
9 | | - System.err.println(TAG + ": " + m); |
10 | | - Log.d(TAG, m); |
11 | | - } |
12 | | - }; |
| 5 | + LNjSchemeSession = new LNjScheme.Scheme |
| 6 | + (new String[0]) |
| 7 | + { |
13 | 8 |
|
14 | | -LNjSchemeEvaluateNoSync |
15 | | - (LNjScheme.Scheme.cons |
16 | | - (LNjScheme.Scheme.sym("define"), |
17 | | - LNjScheme.Scheme.list |
18 | | - (LNjScheme.Scheme.sym("ln-this"), |
19 | | - this |
20 | | - ))); |
| 9 | + public void ln_log(String msg) { |
| 10 | + String m = ln_log_date_formatter.format(new java.util.Date()) + msg; |
| 11 | + System.err.println(TAG + ": " + m); |
| 12 | + Log.d(TAG, m); |
| 13 | + } |
| 14 | + }; |
21 | 15 |
|
22 | | -LNjSchemeEvaluateNoSync |
23 | | - (LNjScheme.Scheme.cons |
24 | | - (LNjScheme.Scheme.sym("define"), |
25 | | - LNjScheme.Scheme.list |
26 | | - (LNjScheme.Scheme.sym("ln-mglview"), |
27 | | - mGLView |
28 | | - ))); |
| 16 | + LNjSchemeEvaluateNoSync |
| 17 | + (LNjScheme.Scheme.cons |
| 18 | + (LNjScheme.Scheme.sym("define"), |
| 19 | + LNjScheme.Scheme.list |
| 20 | + (LNjScheme.Scheme.sym("log-message"), |
| 21 | + new LNMethod("log-message") { |
| 22 | + public Object apply(LNjScheme.Scheme interpreter, Object args) { |
| 23 | + String str = null; |
| 24 | + if(args instanceof LNjScheme.Pair) { |
| 25 | + Object a1 = null; |
| 26 | + a1 = LNjScheme.Scheme.first(args); |
| 27 | + if(a1 instanceof String) { str = (String)a1; } |
| 28 | + else if(a1 instanceof char[]) { str = new String((char[])a1); } |
| 29 | + else { str = "log-message: message not convertible"; } |
| 30 | + } else { |
| 31 | + str = "log-message: args not a list"; |
| 32 | + } |
| 33 | + ln_log(str); |
| 34 | + return null; |
| 35 | + }} |
| 36 | + ))); |
29 | 37 |
|
30 | | -LNjSchemeEvaluateNoSync |
31 | | - (LNjScheme.Scheme.cons |
32 | | - (LNjScheme.Scheme.sym("define"), |
33 | | - LNjScheme.Scheme.list |
34 | | - (LNjScheme.Scheme.sym("log-message"), |
35 | | - new LNMethod("log-message") { |
36 | | - public Object apply(LNjScheme.Scheme interpreter, Object args) { |
37 | | - String str = null; |
38 | | - if(args instanceof LNjScheme.Pair) { |
39 | | - Object a1 = null; |
40 | | - a1 = LNjScheme.Scheme.first(args); |
41 | | - if(a1 instanceof String) { str = (String)a1; } |
42 | | - else if(a1 instanceof char[]) { str = new String((char[])a1); } |
43 | | - else { str = "log-message: message not convertible"; } |
44 | | - } else { |
45 | | - str = "log-message: args not a list"; |
46 | | - } |
47 | | - ln_log(str); |
48 | | - return null; |
49 | | - }} |
50 | | - ))); |
| 38 | + LNjSchemeEvaluateNoSync |
| 39 | + (LNjScheme.Scheme.cons |
| 40 | + (LNjScheme.Scheme.sym("define"), |
| 41 | + LNjScheme.Scheme.list |
| 42 | + (LNjScheme.Scheme.sym("bound?"), |
| 43 | + new LNMethod("bound?") { |
| 44 | + public Object apply(LNjScheme.Scheme interpreter, Object args) { |
| 45 | + if(args instanceof LNjScheme.Pair) { |
| 46 | + Object a1 = null; |
| 47 | + a1 = LNjScheme.Scheme.first(args); |
| 48 | + if(a1 instanceof String) { |
| 49 | + String sym = (String)a1; |
| 50 | + try { |
| 51 | + Object val = interpreter.eval(sym); |
| 52 | + return true; |
| 53 | + } catch (RuntimeException e) { return false; } |
| 54 | + } else { |
| 55 | + return LNjScheme.Scheme.error("bound? : not a symbol " + a1); |
| 56 | + } |
| 57 | + } else { |
| 58 | + return LNjScheme.Scheme.error("bound? : missing argument"); |
| 59 | + } |
| 60 | + }} |
| 61 | + ))); |
51 | 62 |
|
52 | | -LNjSchemeEvaluateNoSync |
53 | | - (LNjScheme.Scheme.cons |
54 | | - (LNjScheme.Scheme.sym("define"), |
55 | | - LNjScheme.Scheme.list |
56 | | - (LNjScheme.Scheme.sym("bound?"), |
57 | | - new LNMethod("bound?") { |
58 | | - public Object apply(LNjScheme.Scheme interpreter, Object args) { |
59 | | - if(args instanceof LNjScheme.Pair) { |
60 | | - Object a1 = null; |
61 | | - a1 = LNjScheme.Scheme.first(args); |
62 | | - if(a1 instanceof String) { |
63 | | - String sym = (String)a1; |
64 | | - try { |
65 | | - Object val = interpreter.eval(sym); |
66 | | - return true; |
67 | | - } catch (RuntimeException e) { return false; } |
| 63 | + LNjSchemeEvaluateNoSync |
| 64 | + (LNjScheme.Scheme.cons |
| 65 | + (LNjScheme.Scheme.sym("define"), |
| 66 | + LNjScheme.Scheme.list |
| 67 | + (LNjScheme.Scheme.sym("send-event!"), |
| 68 | + new LNMethod("send-event!") { |
| 69 | + public Object apply(LNjScheme.Scheme interpreter, Object args) { |
| 70 | + String str = null; |
| 71 | + if(args instanceof LNjScheme.Pair) { |
| 72 | + Object a1 = null, a2 = null, a3 = null;; |
| 73 | + a1 = LNjScheme.Scheme.first(args); |
| 74 | + a2 = LNjScheme.Scheme.rest(args); |
| 75 | + a3 = LNjScheme.Scheme.rest(a2); |
| 76 | + a2 = LNjScheme.Scheme.first(a2); |
| 77 | + a3 = LNjScheme.Scheme.first(a3); |
| 78 | + // Maybe we should accept symbolic event names too? |
| 79 | + int ia1 = (a1 instanceof Number) ? (int)LNjScheme.Scheme.num(a1) : 21; |
| 80 | + int ia2 = (a2 instanceof Number) ? (int)LNjScheme.Scheme.num(a2) : 0; |
| 81 | + int ia3 = (a3 instanceof Number) ? (int)LNjScheme.Scheme.num(a3) : 0; |
| 82 | + nativeEvent(ia1, ia2, ia3); |
| 83 | + return LNjScheme.Scheme.TRUE; |
68 | 84 | } else { |
69 | | - return LNjScheme.Scheme.error("bound? : not a symbol " + a1); |
| 85 | + nativeEvent(64, 0, 0); // debug |
| 86 | + return LNjScheme.Scheme.TRUE; |
70 | 87 | } |
71 | | - } else { |
72 | | - return LNjScheme.Scheme.error("bound? : missing argument"); |
73 | | - } |
74 | | - }} |
75 | | - ))); |
| 88 | + }} |
| 89 | + ))); |
| 90 | + |
| 91 | + LNjSchemeEvaluateNoSync |
| 92 | + (LNjScheme.Scheme.cons |
| 93 | + (LNjScheme.Scheme.sym("define"), |
| 94 | + LNjScheme.Scheme.list |
| 95 | + (LNjScheme.Scheme.sym("on-back-pressed"), |
| 96 | + new LNMethod("on-back-pressed") { |
| 97 | + public Object apply(LNjScheme.Scheme interpreter, Object args) { |
| 98 | + String str = null; |
| 99 | + if(args instanceof LNjScheme.Pair) { |
| 100 | + Object a1 = null; |
| 101 | + a1 = LNjScheme.Scheme.first(args); |
| 102 | + if(a1 instanceof LNjScheme.Procedure) { onBackPressedHandler = (LNjScheme.Procedure)a1; } |
| 103 | + else if(!LNjScheme.Scheme.truth(a1)) { onBackPressedHandler = null; } |
| 104 | + else { LNjScheme.Scheme.error("on-back-pressed: argument not a procedure or #f"); } |
| 105 | + return LNjScheme.Scheme.TRUE; |
| 106 | + } else { |
| 107 | + if(onBackPressedHandler==null) { return LNjScheme.Scheme.FALSE; } |
| 108 | + else { return onBackPressedHandler; } |
| 109 | + } |
| 110 | + }} |
| 111 | + ))); |
| 112 | + |
| 113 | +} |
76 | 114 |
|
77 | 115 | LNjSchemeEvaluateNoSync |
78 | 116 | (LNjScheme.Scheme.cons |
79 | 117 | (LNjScheme.Scheme.sym("define"), |
80 | 118 | LNjScheme.Scheme.list |
81 | | - (LNjScheme.Scheme.sym("send-event!"), |
82 | | - new LNMethod("send-event!") { |
83 | | - public Object apply(LNjScheme.Scheme interpreter, Object args) { |
84 | | - String str = null; |
85 | | - if(args instanceof LNjScheme.Pair) { |
86 | | - Object a1 = null, a2 = null, a3 = null;; |
87 | | - a1 = LNjScheme.Scheme.first(args); |
88 | | - a2 = LNjScheme.Scheme.rest(args); |
89 | | - a3 = LNjScheme.Scheme.rest(a2); |
90 | | - a2 = LNjScheme.Scheme.first(a2); |
91 | | - a3 = LNjScheme.Scheme.first(a3); |
92 | | - // Maybe we should accept symbolic event names too? |
93 | | - int ia1 = (a1 instanceof Number) ? (int)LNjScheme.Scheme.num(a1) : 21; |
94 | | - int ia2 = (a2 instanceof Number) ? (int)LNjScheme.Scheme.num(a2) : 0; |
95 | | - int ia3 = (a3 instanceof Number) ? (int)LNjScheme.Scheme.num(a3) : 0; |
96 | | - nativeEvent(ia1, ia2, ia3); |
97 | | - return LNjScheme.Scheme.TRUE; |
98 | | - } else { |
99 | | - nativeEvent(64, 0, 0); // debug |
100 | | - return LNjScheme.Scheme.TRUE; |
101 | | - } |
102 | | - }} |
| 119 | + (LNjScheme.Scheme.sym("ln-this"), |
| 120 | + this |
103 | 121 | ))); |
104 | 122 |
|
105 | 123 | LNjSchemeEvaluateNoSync |
106 | 124 | (LNjScheme.Scheme.cons |
107 | 125 | (LNjScheme.Scheme.sym("define"), |
108 | 126 | LNjScheme.Scheme.list |
109 | | - (LNjScheme.Scheme.sym("on-back-pressed"), |
110 | | - new LNMethod("on-back-pressed") { |
111 | | - public Object apply(LNjScheme.Scheme interpreter, Object args) { |
112 | | - String str = null; |
113 | | - if(args instanceof LNjScheme.Pair) { |
114 | | - Object a1 = null; |
115 | | - a1 = LNjScheme.Scheme.first(args); |
116 | | - if(a1 instanceof LNjScheme.Procedure) { onBackPressedHandler = (LNjScheme.Procedure)a1; } |
117 | | - else if(!LNjScheme.Scheme.truth(a1)) { onBackPressedHandler = null; } |
118 | | - else { LNjScheme.Scheme.error("on-back-pressed: argument not a procedure or #f"); } |
119 | | - return LNjScheme.Scheme.TRUE; |
120 | | - } else { |
121 | | - if(onBackPressedHandler==null) { return LNjScheme.Scheme.FALSE; } |
122 | | - else { return onBackPressedHandler; } |
123 | | - } |
124 | | - }} |
| 127 | + (LNjScheme.Scheme.sym("ln-mglview"), |
| 128 | + mGLView |
125 | 129 | ))); |
126 | 130 |
|
127 | 131 | // eof: LNjScheme |
0 commit comments