Source Code Cross Referenced for JScheme.java in  » Scripting » jscheme » jscheme » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Scripting » jscheme » jscheme 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        package jscheme;
002:
003:        import java.io.PrintWriter;
004:
005:        import jsint.Evaluator;
006:        import jsint.InputPort;
007:        import jsint.Pair;
008:        import jsint.Scheme;
009:        import jsint.Symbol;
010:        import jsint.U;
011:
012:        /**
013:         JScheme - a simple interface to JScheme.
014:         <p> This class provides methods to perform common Scheme operations from
015:         java.  Each instance of <code>JScheme</code> is an isolated Scheme environment.
016:
017:         <p>For example, you can:
018:         <ul>
019:         <li> Create a new Scheme environment:
020:         <pre>
021:         JScheme js = new JScheme();
022:         </pre>
023:         <li> Initialize an application by loading Scheme expressions from a file:
024:         <pre>
025:         js.load(new java.io.File("app.init"));
026:         </pre>
027:         <li> Run the Scheme procedure
028:         <tt>(describe)</tt> to describe the current object like this:
029:         <pre>
030:         js.call("describe", this);
031:         </pre>
032:
033:         If you need to call a procedure with more than twenty arguments
034:         use apply().
035:
036:         <li>Evalute a string as an expression:
037:         <pre> String query = "(+ (expt (Math.sin 2.0) 2) (expt (Math.cos 2.0) 2))";
038:         System.out.println(query + " = " + js.eval(query));
039:         </pre> </ul>
040:        
041:         <p> Unit test:
042:         <pre>
043:         (import "jscheme.JScheme")
044:         (load "elf/util.scm")
045:         (define js (JScheme.forCurrentEvaluator))
046:         (assert (equal? (+ 2 3) (.eval js '(+ 2 3))))
047:         (assert (= (+ 2 3) (.eval js "(+ 2 3)")))
048:         (assert (= (+ 2 3) (.call js "+" 2 3)))
049:         (assert (= (+ 2 3) (.call js + 2 3)))
050:         (assert (= (+ 2 3) (.apply js "+" (JScheme.list 2 3))))
051:         (.load js "(define (f x) (+ x (g x))) (define (g x) (* x 3))")
052:         (assert (= (f 3) 12))
053:         </pre>
054:
055:         **/
056:        public class JScheme implements  java.io.Serializable {
057:
058:            private Evaluator evaluator;
059:
060:            /**
061:             * Creates a new, isolated Scheme environment.
062:             */
063:            public JScheme() {
064:                evaluator = new Evaluator();
065:            }
066:
067:            /**
068:             * Creates a Scheme environment that shares an evaluation enironment.
069:             * Top-level bindings will be shared.
070:             */
071:            public JScheme(Evaluator e) {
072:                evaluator = e;
073:            }
074:
075:            /**
076:             * Returns the Scheme environment that is currently executing Scheme.  Only
077:             * call this from Scheme (or from Java called from Scheme).
078:             */
079:            public static JScheme forCurrentEvaluator() {
080:                return new JScheme(Scheme.currentEvaluator());
081:            }
082:
083:            /**
084:             * Returns this Scheme environment's evaluator.
085:             */
086:            public Evaluator getEvaluator() {
087:                return evaluator;
088:            }
089:
090:            /**
091:             * Enters this instance's evaluator.
092:             */
093:            private void enter() {
094:                Scheme.pushEvaluator((Evaluator) evaluator);
095:            }
096:
097:            /**
098:             * Exits an evaluator.  This must be called for every call to
099:             * <code>enter</code>.
100:             */
101:            private void exit() {
102:                Scheme.popEvaluator();
103:            }
104:
105:            /** Does the Symbol named s have a global value? **/
106:            public boolean isDefined(String s) {
107:                enter();
108:                try {
109:                    return Symbol.intern(s).isDefined();
110:                } finally {
111:                    exit();
112:                }
113:            }
114:
115:            /** Get the value of the global variable named s. **/
116:            public Object getGlobalValue(String s) {
117:                enter();
118:                try {
119:                    return Symbol.intern(s).getGlobalValue();
120:                } finally {
121:                    exit();
122:                }
123:            }
124:
125:            /** Set the value of the global variable named s to v.  **/
126:            public void setGlobalValue(String s, Object v) {
127:                enter();
128:                try {
129:                    Symbol.intern(s).setGlobalValue(v);
130:                } finally {
131:                    exit();
132:                }
133:            }
134:
135:            /** Returns the global procedure named s. **/
136:            public SchemeProcedure getGlobalSchemeProcedure(String s) {
137:                enter();
138:                try {
139:                    return U.toProc(getGlobalValue(s));
140:                } finally {
141:                    exit();
142:                }
143:            }
144:
145:            /** Load Scheme expressions from a  Reader, or String. **/
146:            public Object load(java.io.Reader in) {
147:                enter();
148:                try {
149:                    return Scheme.load(new InputPort(in));
150:                } finally {
151:                    exit();
152:                }
153:            }
154:
155:            public Object load(String in) {
156:                return load(new java.io.StringReader(in));
157:            }
158:
159:            /** Eval or load a string.
160:                This is useful for handling command line arguments.
161:                If it starts with "(", it is evaled.
162:                If it doesn't start with "-", it is loaded.
163:             **/
164:            public void evalOrLoad(String it) {
165:                if (it.startsWith("("))
166:                    load(new java.io.StringReader(it));
167:                else if (!it.startsWith("-")) {
168:                    enter();
169:                    try {
170:                        Scheme.load(it);
171:                    } finally {
172:                        exit();
173:                    }
174:                }
175:            }
176:
177:            /** Call a procedure with 0 to 20 arguments **/
178:            public Object call(SchemeProcedure p) {
179:                enter();
180:                try {
181:                    return p.apply(list());
182:                } finally {
183:                    exit();
184:                }
185:            }
186:
187:            public Object call(SchemeProcedure p, Object a1) {
188:                enter();
189:                try {
190:                    return p.apply(list(a1));
191:                } finally {
192:                    exit();
193:                }
194:            }
195:
196:            public Object call(SchemeProcedure p, Object a1, Object a2) {
197:                enter();
198:                try {
199:                    return p.apply(list(a1, a2));
200:                } finally {
201:                    exit();
202:                }
203:            }
204:
205:            public Object call(SchemeProcedure p, Object a1, Object a2,
206:                    Object a3) {
207:                enter();
208:                try {
209:                    return p.apply(list(a1, a2, a3));
210:                } finally {
211:                    exit();
212:                }
213:            }
214:
215:            public Object call(SchemeProcedure p, Object a1, Object a2,
216:                    Object a3, Object a4) {
217:                enter();
218:                try {
219:                    return p.apply(list(a1, a2, a3, a4));
220:                } finally {
221:                    exit();
222:                }
223:            }
224:
225:            public Object call(SchemeProcedure p, Object a1, Object a2,
226:                    Object a3, Object a4, Object a5) {
227:                enter();
228:                try {
229:                    return p.apply(list(a1, a2, a3, a4, a5));
230:                } finally {
231:                    exit();
232:                }
233:            }
234:
235:            public Object call(SchemeProcedure p, Object a1, Object a2,
236:                    Object a3, Object a4, Object a5, Object a6) {
237:                enter();
238:                try {
239:                    return p.apply(list(a1, a2, a3, a4, a5, a6));
240:                } finally {
241:                    exit();
242:                }
243:            }
244:
245:            public Object call(SchemeProcedure p, Object a1, Object a2,
246:                    Object a3, Object a4, Object a5, Object a6, Object a7) {
247:                enter();
248:                try {
249:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7));
250:                } finally {
251:                    exit();
252:                }
253:            }
254:
255:            public Object call(SchemeProcedure p, Object a1, Object a2,
256:                    Object a3, Object a4, Object a5, Object a6, Object a7,
257:                    Object a8) {
258:                enter();
259:                try {
260:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8));
261:                } finally {
262:                    exit();
263:                }
264:            }
265:
266:            public Object call(SchemeProcedure p, Object a1, Object a2,
267:                    Object a3, Object a4, Object a5, Object a6, Object a7,
268:                    Object a8, Object a9) {
269:                enter();
270:                try {
271:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9));
272:                } finally {
273:                    exit();
274:                }
275:            }
276:
277:            public Object call(SchemeProcedure p, Object a1, Object a2,
278:                    Object a3, Object a4, Object a5, Object a6, Object a7,
279:                    Object a8, Object a9, Object a10) {
280:                enter();
281:                try {
282:                    return p
283:                            .apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));
284:                } finally {
285:                    exit();
286:                }
287:            }
288:
289:            public Object call(SchemeProcedure p, Object a1, Object a2,
290:                    Object a3, Object a4, Object a5, Object a6, Object a7,
291:                    Object a8, Object a9, Object a10, Object a11) {
292:                enter();
293:                try {
294:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
295:                            a10, a11));
296:                } finally {
297:                    exit();
298:                }
299:            }
300:
301:            public Object call(SchemeProcedure p, Object a1, Object a2,
302:                    Object a3, Object a4, Object a5, Object a6, Object a7,
303:                    Object a8, Object a9, Object a10, Object a11, Object a12) {
304:                enter();
305:                try {
306:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
307:                            a10, a11, a12));
308:                } finally {
309:                    exit();
310:                }
311:            }
312:
313:            public Object call(SchemeProcedure p, Object a1, Object a2,
314:                    Object a3, Object a4, Object a5, Object a6, Object a7,
315:                    Object a8, Object a9, Object a10, Object a11, Object a12,
316:                    Object a13) {
317:                enter();
318:                try {
319:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
320:                            a10, a11, a12, a13));
321:                } finally {
322:                    exit();
323:                }
324:            }
325:
326:            public Object call(SchemeProcedure p, Object a1, Object a2,
327:                    Object a3, Object a4, Object a5, Object a6, Object a7,
328:                    Object a8, Object a9, Object a10, Object a11, Object a12,
329:                    Object a13, Object a14) {
330:                enter();
331:                try {
332:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
333:                            a10, a11, a12, a13, a14));
334:                } finally {
335:                    exit();
336:                }
337:            }
338:
339:            public Object call(SchemeProcedure p, Object a1, Object a2,
340:                    Object a3, Object a4, Object a5, Object a6, Object a7,
341:                    Object a8, Object a9, Object a10, Object a11, Object a12,
342:                    Object a13, Object a14, Object a15) {
343:                enter();
344:                try {
345:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
346:                            a10, a11, a12, a13, a14, a15));
347:                } finally {
348:                    exit();
349:                }
350:            }
351:
352:            public Object call(SchemeProcedure p, Object a1, Object a2,
353:                    Object a3, Object a4, Object a5, Object a6, Object a7,
354:                    Object a8, Object a9, Object a10, Object a11, Object a12,
355:                    Object a13, Object a14, Object a15, Object a16) {
356:                enter();
357:                try {
358:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
359:                            a10, a11, a12, a13, a14, a15, a16));
360:                } finally {
361:                    exit();
362:                }
363:            }
364:
365:            public Object call(SchemeProcedure p, Object a1, Object a2,
366:                    Object a3, Object a4, Object a5, Object a6, Object a7,
367:                    Object a8, Object a9, Object a10, Object a11, Object a12,
368:                    Object a13, Object a14, Object a15, Object a16, Object a17) {
369:                enter();
370:                try {
371:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
372:                            a10, a11, a12, a13, a14, a15, a16, a17));
373:                } finally {
374:                    exit();
375:                }
376:            }
377:
378:            public Object call(SchemeProcedure p, Object a1, Object a2,
379:                    Object a3, Object a4, Object a5, Object a6, Object a7,
380:                    Object a8, Object a9, Object a10, Object a11, Object a12,
381:                    Object a13, Object a14, Object a15, Object a16, Object a17,
382:                    Object a18) {
383:                enter();
384:                try {
385:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
386:                            a10, a11, a12, a13, a14, a15, a16, a17, a18));
387:                } finally {
388:                    exit();
389:                }
390:            }
391:
392:            public Object call(SchemeProcedure p, Object a1, Object a2,
393:                    Object a3, Object a4, Object a5, Object a6, Object a7,
394:                    Object a8, Object a9, Object a10, Object a11, Object a12,
395:                    Object a13, Object a14, Object a15, Object a16, Object a17,
396:                    Object a18, Object a19) {
397:                enter();
398:                try {
399:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
400:                            a10, a11, a12, a13, a14, a15, a16, a17, a18, a19));
401:                } finally {
402:                    exit();
403:                }
404:            }
405:
406:            public Object call(SchemeProcedure p, Object a1, Object a2,
407:                    Object a3, Object a4, Object a5, Object a6, Object a7,
408:                    Object a8, Object a9, Object a10, Object a11, Object a12,
409:                    Object a13, Object a14, Object a15, Object a16, Object a17,
410:                    Object a18, Object a19, Object a20) {
411:                enter();
412:                try {
413:                    return p.apply(list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
414:                            a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
415:                            a20));
416:                } finally {
417:                    exit();
418:                }
419:            }
420:
421:            /** Apply a procedure to a list of arguments. **/
422:            public Object apply(SchemeProcedure p, SchemePair as) {
423:                enter();
424:                try {
425:                    return p.apply(as);
426:                } finally {
427:                    exit();
428:                }
429:            }
430:
431:            public Object apply(SchemeProcedure p, Object[] args) {
432:                enter();
433:                try {
434:                    return p.apply(args);
435:                } finally {
436:                    exit();
437:                }
438:            }
439:
440:            /** Call a procedure named p with from 0 to 20 arguments. **/
441:            public Object call(String p) {
442:                enter();
443:                try {
444:                    return getGlobalSchemeProcedure(p).apply(list());
445:                } finally {
446:                    exit();
447:                }
448:            }
449:
450:            public Object call(String p, Object a1) {
451:                enter();
452:                try {
453:                    return getGlobalSchemeProcedure(p).apply(list(a1));
454:                } finally {
455:                    exit();
456:                }
457:            }
458:
459:            public Object call(String p, Object a1, Object a2) {
460:                enter();
461:                try {
462:                    return getGlobalSchemeProcedure(p).apply(list(a1, a2));
463:                } finally {
464:                    exit();
465:                }
466:            }
467:
468:            public Object call(String p, Object a1, Object a2, Object a3) {
469:                enter();
470:                try {
471:                    return getGlobalSchemeProcedure(p).apply(list(a1, a2, a3));
472:                } finally {
473:                    exit();
474:                }
475:            }
476:
477:            public Object call(String p, Object a1, Object a2, Object a3,
478:                    Object a4) {
479:                enter();
480:                try {
481:                    return getGlobalSchemeProcedure(p).apply(
482:                            list(a1, a2, a3, a4));
483:                } finally {
484:                    exit();
485:                }
486:            }
487:
488:            public Object call(String p, Object a1, Object a2, Object a3,
489:                    Object a4, Object a5) {
490:                enter();
491:                try {
492:                    return getGlobalSchemeProcedure(p).apply(
493:                            list(a1, a2, a3, a4, a5));
494:                } finally {
495:                    exit();
496:                }
497:            }
498:
499:            public Object call(String p, Object a1, Object a2, Object a3,
500:                    Object a4, Object a5, Object a6) {
501:                enter();
502:                try {
503:                    return getGlobalSchemeProcedure(p).apply(
504:                            list(a1, a2, a3, a4, a5, a6));
505:                } finally {
506:                    exit();
507:                }
508:            }
509:
510:            public Object call(String p, Object a1, Object a2, Object a3,
511:                    Object a4, Object a5, Object a6, Object a7) {
512:                enter();
513:                try {
514:                    return getGlobalSchemeProcedure(p).apply(
515:                            list(a1, a2, a3, a4, a5, a6, a7));
516:                } finally {
517:                    exit();
518:                }
519:            }
520:
521:            public Object call(String p, Object a1, Object a2, Object a3,
522:                    Object a4, Object a5, Object a6, Object a7, Object a8) {
523:                enter();
524:                try {
525:                    return getGlobalSchemeProcedure(p).apply(
526:                            list(a1, a2, a3, a4, a5, a6, a7, a8));
527:                } finally {
528:                    exit();
529:                }
530:            }
531:
532:            public Object call(String p, Object a1, Object a2, Object a3,
533:                    Object a4, Object a5, Object a6, Object a7, Object a8,
534:                    Object a9) {
535:                enter();
536:                try {
537:                    return getGlobalSchemeProcedure(p).apply(
538:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9));
539:                } finally {
540:                    exit();
541:                }
542:            }
543:
544:            public Object call(String p, Object a1, Object a2, Object a3,
545:                    Object a4, Object a5, Object a6, Object a7, Object a8,
546:                    Object a9, Object a10) {
547:                enter();
548:                try {
549:                    return getGlobalSchemeProcedure(p).apply(
550:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));
551:                } finally {
552:                    exit();
553:                }
554:            }
555:
556:            public Object call(String p, Object a1, Object a2, Object a3,
557:                    Object a4, Object a5, Object a6, Object a7, Object a8,
558:                    Object a9, Object a10, Object a11) {
559:                enter();
560:                try {
561:                    return getGlobalSchemeProcedure(p).apply(
562:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));
563:                } finally {
564:                    exit();
565:                }
566:            }
567:
568:            public Object call(String p, Object a1, Object a2, Object a3,
569:                    Object a4, Object a5, Object a6, Object a7, Object a8,
570:                    Object a9, Object a10, Object a11, Object a12) {
571:                enter();
572:                try {
573:                    return getGlobalSchemeProcedure(p).apply(
574:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
575:                                    a12));
576:                } finally {
577:                    exit();
578:                }
579:            }
580:
581:            public Object call(String p, Object a1, Object a2, Object a3,
582:                    Object a4, Object a5, Object a6, Object a7, Object a8,
583:                    Object a9, Object a10, Object a11, Object a12, Object a13) {
584:                enter();
585:                try {
586:                    return getGlobalSchemeProcedure(p).apply(
587:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
588:                                    a12, a13));
589:                } finally {
590:                    exit();
591:                }
592:            }
593:
594:            public Object call(String p, Object a1, Object a2, Object a3,
595:                    Object a4, Object a5, Object a6, Object a7, Object a8,
596:                    Object a9, Object a10, Object a11, Object a12, Object a13,
597:                    Object a14) {
598:                enter();
599:                try {
600:                    return getGlobalSchemeProcedure(p).apply(
601:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
602:                                    a12, a13, a14));
603:                } finally {
604:                    exit();
605:                }
606:            }
607:
608:            public Object call(String p, Object a1, Object a2, Object a3,
609:                    Object a4, Object a5, Object a6, Object a7, Object a8,
610:                    Object a9, Object a10, Object a11, Object a12, Object a13,
611:                    Object a14, Object a15) {
612:                enter();
613:                try {
614:                    return getGlobalSchemeProcedure(p).apply(
615:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
616:                                    a12, a13, a14, a15));
617:                } finally {
618:                    exit();
619:                }
620:            }
621:
622:            public Object call(String p, Object a1, Object a2, Object a3,
623:                    Object a4, Object a5, Object a6, Object a7, Object a8,
624:                    Object a9, Object a10, Object a11, Object a12, Object a13,
625:                    Object a14, Object a15, Object a16) {
626:                enter();
627:                try {
628:                    return getGlobalSchemeProcedure(p).apply(
629:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
630:                                    a12, a13, a14, a15, a16));
631:                } finally {
632:                    exit();
633:                }
634:            }
635:
636:            public Object call(String p, Object a1, Object a2, Object a3,
637:                    Object a4, Object a5, Object a6, Object a7, Object a8,
638:                    Object a9, Object a10, Object a11, Object a12, Object a13,
639:                    Object a14, Object a15, Object a16, Object a17) {
640:                enter();
641:                try {
642:                    return getGlobalSchemeProcedure(p).apply(
643:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
644:                                    a12, a13, a14, a15, a16, a17));
645:                } finally {
646:                    exit();
647:                }
648:            }
649:
650:            public Object call(String p, Object a1, Object a2, Object a3,
651:                    Object a4, Object a5, Object a6, Object a7, Object a8,
652:                    Object a9, Object a10, Object a11, Object a12, Object a13,
653:                    Object a14, Object a15, Object a16, Object a17, Object a18) {
654:                enter();
655:                try {
656:                    return getGlobalSchemeProcedure(p).apply(
657:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
658:                                    a12, a13, a14, a15, a16, a17, a18));
659:                } finally {
660:                    exit();
661:                }
662:            }
663:
664:            public Object call(String p, Object a1, Object a2, Object a3,
665:                    Object a4, Object a5, Object a6, Object a7, Object a8,
666:                    Object a9, Object a10, Object a11, Object a12, Object a13,
667:                    Object a14, Object a15, Object a16, Object a17, Object a18,
668:                    Object a19) {
669:                enter();
670:                try {
671:                    return getGlobalSchemeProcedure(p).apply(
672:                            list(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
673:                                    a12, a13, a14, a15, a16, a17, a18, a19));
674:                } finally {
675:                    exit();
676:                }
677:            }
678:
679:            public Object call(String p, Object a1, Object a2, Object a3,
680:                    Object a4, Object a5, Object a6, Object a7, Object a8,
681:                    Object a9, Object a10, Object a11, Object a12, Object a13,
682:                    Object a14, Object a15, Object a16, Object a17, Object a18,
683:                    Object a19, Object a20) {
684:                enter();
685:                try {
686:                    return getGlobalSchemeProcedure(p)
687:                            .apply(
688:                                    list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
689:                                            a10, a11, a12, a13, a14, a15, a16,
690:                                            a17, a18, a19, a20));
691:                } finally {
692:                    exit();
693:                }
694:            }
695:
696:            /** Apply a procedure named p to a list of arguments. **/
697:            public Object apply(String p, SchemePair as) {
698:                enter();
699:                try {
700:                    return getGlobalSchemeProcedure(p).apply(as);
701:                } finally {
702:                    exit();
703:                }
704:            }
705:
706:            /** Evaluate the contents of a string as a Scheme expression.  **/
707:            public Object eval(String s) {
708:                Object it = read(s);
709:                return it == InputPort.EOF ? it : eval(it);
710:            }
711:
712:            /** Evaluate an expression Object **/
713:            public Object eval(Object it) {
714:                enter();
715:                try {
716:                    return Scheme.evalToplevel(it, jsint.Scheme
717:                            .getInteractionEnvironment());
718:                } finally {
719:                    exit();
720:                }
721:            }
722:
723:            /** Read an expression from a String. **/
724:            public Object read(String s) {
725:                enter();
726:                try {
727:                    return (new InputPort(new java.io.StringReader(s))).read();
728:                } finally {
729:                    exit();
730:                }
731:            }
732:
733:            /** Lists of length 0 to 20. **/
734:            public static SchemePair list() {
735:                return Pair.EMPTY;
736:            }
737:
738:            public static SchemePair list(Object a0) {
739:                return new Pair(a0, list());
740:            }
741:
742:            public static SchemePair list(Object a0, Object a1) {
743:                return new Pair(a0, list(a1));
744:            }
745:
746:            public static SchemePair list(Object a0, Object a1, Object a2) {
747:                return new Pair(a0, list(a1, a2));
748:            }
749:
750:            public static SchemePair list(Object a0, Object a1, Object a2,
751:                    Object a3) {
752:                return new Pair(a0, list(a1, a2, a3));
753:            }
754:
755:            public static SchemePair list(Object a0, Object a1, Object a2,
756:                    Object a3, Object a4) {
757:                return new Pair(a0, list(a1, a2, a3, a4));
758:            }
759:
760:            public static SchemePair list(Object a0, Object a1, Object a2,
761:                    Object a3, Object a4, Object a5) {
762:                return new Pair(a0, list(a1, a2, a3, a4, a5));
763:            }
764:
765:            public static SchemePair list(Object a0, Object a1, Object a2,
766:                    Object a3, Object a4, Object a5, Object a6) {
767:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6));
768:            }
769:
770:            public static SchemePair list(Object a0, Object a1, Object a2,
771:                    Object a3, Object a4, Object a5, Object a6, Object a7) {
772:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7));
773:            }
774:
775:            public static SchemePair list(Object a0, Object a1, Object a2,
776:                    Object a3, Object a4, Object a5, Object a6, Object a7,
777:                    Object a8) {
778:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8));
779:            }
780:
781:            public static SchemePair list(Object a0, Object a1, Object a2,
782:                    Object a3, Object a4, Object a5, Object a6, Object a7,
783:                    Object a8, Object a9) {
784:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9));
785:            }
786:
787:            public static SchemePair list(Object a0, Object a1, Object a2,
788:                    Object a3, Object a4, Object a5, Object a6, Object a7,
789:                    Object a8, Object a9, Object a10) {
790:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
791:                        a10));
792:            }
793:
794:            public static SchemePair list(Object a0, Object a1, Object a2,
795:                    Object a3, Object a4, Object a5, Object a6, Object a7,
796:                    Object a8, Object a9, Object a10, Object a11) {
797:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
798:                        a10, a11));
799:            }
800:
801:            public static SchemePair list(Object a0, Object a1, Object a2,
802:                    Object a3, Object a4, Object a5, Object a6, Object a7,
803:                    Object a8, Object a9, Object a10, Object a11, Object a12) {
804:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
805:                        a10, a11, a12));
806:            }
807:
808:            public static SchemePair list(Object a0, Object a1, Object a2,
809:                    Object a3, Object a4, Object a5, Object a6, Object a7,
810:                    Object a8, Object a9, Object a10, Object a11, Object a12,
811:                    Object a13) {
812:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
813:                        a10, a11, a12, a13));
814:            }
815:
816:            public static SchemePair list(Object a0, Object a1, Object a2,
817:                    Object a3, Object a4, Object a5, Object a6, Object a7,
818:                    Object a8, Object a9, Object a10, Object a11, Object a12,
819:                    Object a13, Object a14) {
820:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
821:                        a10, a11, a12, a13, a14));
822:            }
823:
824:            public static SchemePair list(Object a0, Object a1, Object a2,
825:                    Object a3, Object a4, Object a5, Object a6, Object a7,
826:                    Object a8, Object a9, Object a10, Object a11, Object a12,
827:                    Object a13, Object a14, Object a15) {
828:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
829:                        a10, a11, a12, a13, a14, a15));
830:            }
831:
832:            public static SchemePair list(Object a0, Object a1, Object a2,
833:                    Object a3, Object a4, Object a5, Object a6, Object a7,
834:                    Object a8, Object a9, Object a10, Object a11, Object a12,
835:                    Object a13, Object a14, Object a15, Object a16) {
836:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
837:                        a10, a11, a12, a13, a14, a15, a16));
838:            }
839:
840:            public static SchemePair list(Object a0, Object a1, Object a2,
841:                    Object a3, Object a4, Object a5, Object a6, Object a7,
842:                    Object a8, Object a9, Object a10, Object a11, Object a12,
843:                    Object a13, Object a14, Object a15, Object a16, Object a17) {
844:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
845:                        a10, a11, a12, a13, a14, a15, a16, a17));
846:            }
847:
848:            public static SchemePair list(Object a0, Object a1, Object a2,
849:                    Object a3, Object a4, Object a5, Object a6, Object a7,
850:                    Object a8, Object a9, Object a10, Object a11, Object a12,
851:                    Object a13, Object a14, Object a15, Object a16, Object a17,
852:                    Object a18) {
853:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
854:                        a10, a11, a12, a13, a14, a15, a16, a17, a18));
855:            }
856:
857:            public static SchemePair list(Object a0, Object a1, Object a2,
858:                    Object a3, Object a4, Object a5, Object a6, Object a7,
859:                    Object a8, Object a9, Object a10, Object a11, Object a12,
860:                    Object a13, Object a14, Object a15, Object a16, Object a17,
861:                    Object a18, Object a19) {
862:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
863:                        a10, a11, a12, a13, a14, a15, a16, a17, a18, a19));
864:            }
865:
866:            public static SchemePair list(Object a0, Object a1, Object a2,
867:                    Object a3, Object a4, Object a5, Object a6, Object a7,
868:                    Object a8, Object a9, Object a10, Object a11, Object a12,
869:                    Object a13, Object a14, Object a15, Object a16, Object a17,
870:                    Object a18, Object a19, Object a20) {
871:                return new Pair(a0, list(a1, a2, a3, a4, a5, a6, a7, a8, a9,
872:                        a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20));
873:            }
874:
875:            public void write(Object x, PrintWriter port, boolean quoted) {
876:                enter();
877:                try {
878:                    U.write(x, port, quoted);
879:                } finally {
880:                    exit();
881:                }
882:            }
883:
884:            public void write(Object x, PrintWriter port) {
885:                enter();
886:                try {
887:                    U.write(x, port, true);
888:                } finally {
889:                    exit();
890:                }
891:            }
892:
893:            public void display(Object x, PrintWriter port) {
894:                enter();
895:                try {
896:                    U.write(x, port, false);
897:                } finally {
898:                    exit();
899:                }
900:            }
901:
902:            public void readEvalPrintLoop() {
903:                enter();
904:                try {
905:                    Scheme.readEvalWriteLoop(">");
906:                } finally {
907:                    exit();
908:                }
909:            }
910:
911:            /** Convert from an Object to a primitive type. **/
912:            public static boolean booleanValue(Object o) {
913:                return o != Boolean.FALSE;
914:            }
915:
916:            public static byte byteValue(Object o) {
917:                return ((Number) o).byteValue();
918:            }
919:
920:            public static char charValue(Object o) {
921:                return (o instanceof  Number) ? ((char) ((Number) o)
922:                        .shortValue()) : ((Character) o).charValue();
923:            }
924:
925:            public static short shortValue(Object o) {
926:                return ((Number) o).shortValue();
927:            }
928:
929:            public static int intValue(Object o) {
930:                return ((Number) o).intValue();
931:            }
932:
933:            public static long longValue(Object o) {
934:                return ((Number) o).longValue();
935:            }
936:
937:            public static float floatValue(Object o) {
938:                return ((Number) o).floatValue();
939:            }
940:
941:            public static double doubleValue(Object o) {
942:                return ((Number) o).doubleValue();
943:            }
944:
945:            /** Convert from primitive type to Object. **/
946:            public static Boolean toObject(boolean x) {
947:                return x ? Boolean.TRUE : Boolean.FALSE;
948:            }
949:
950:            public static Object toObject(byte x) {
951:                return new Byte(x);
952:            }
953:
954:            public static Object toObject(char x) {
955:                return new Character(x);
956:            }
957:
958:            public static Object toObject(short x) {
959:                return new Short(x);
960:            }
961:
962:            public static Object toObject(int x) {
963:                return U.toNum(x);
964:            }
965:
966:            public static Object toObject(long x) {
967:                return new Long(x);
968:            }
969:
970:            public static Object toObject(float x) {
971:                return new Float(x);
972:            }
973:
974:            public static Object toObject(double x) {
975:                return new Double(x);
976:            }
977:
978:            public static Object toObject(Object x) {
979:                return x;
980:            } // Completeness.
981:
982:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.