Mercurial > hg > jslab
comparison src/scheme/streams.scm @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children | 5df24c91468d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:bf79fb79ee13 |
---|---|
1 (define (ifstream fn) (java.io.FileInputStream. fn)) | |
2 (define (ofstream fn) (java.io.FileOutputStream. fn)) | |
3 (define (fwriter fn) (java.io.FileWriter. fn)) | |
4 (define (freader fn) (java.io.FileReader. fn)) | |
5 | |
6 (define-method (buffer (in java.io.InputStream)) (java.io.BufferedInputStream. in)) | |
7 (define-method (buffer (out java.io.OutputStream)) (java.io.BufferedOutputStream. out)) | |
8 (define-method (buffer (in java.io.Reader)) (java.io.BufferedReader. in)) | |
9 (define-method (buffer (out java.io.Writer)) (java.io.BufferedWriter. out)) | |
10 | |
11 (define (make-pipe) | |
12 (define writer (java.io.PipedOutputStream.)) | |
13 (define reader (java.io.PipedInputStream. writer)) | |
14 (list writer reader) | |
15 ) | |
16 | |
17 (define-method (send (pipe Pair) (x Vec)) (VecToStream. x (first pipe))) | |
18 (define-method (recv (pipe Pair) (x Vec)) (StreamToVec. x (second pipe))) | |
19 (define-method (send (pipe Pair) (x DoubleModel)) (SignalToStream. x (first pipe))) | |
20 (define-method (recv (pipe Pair) (x DoubleModel)) (StreamToDouble. x (second pipe))) | |
21 | |
22 (define (with-infile fname proc) | |
23 (let* ( (f (ifstream fname)) | |
24 (rc (proc f))) | |
25 (.close f) rc)) | |
26 | |
27 (define (with-outfile fname proc) | |
28 (let* ( (f (ofstream fname)) | |
29 (rc (proc f))) | |
30 (.close f) rc)) | |
31 | |
32 (define (with thing proc) | |
33 (let ((rc (proc thing))) | |
34 (.close thing) rc)) | |
35 | |
36 (define (oostream s) (java.io.ObjectOutputStream. s)) | |
37 (define (iostream s) (java.io.ObjectInputStream. s)) | |
38 | |
39 | |
40 ;; convert saveable from binary to text | |
41 (define (totext thing file txtfile) | |
42 (with (ifstream file) (lambda (f) (.load thing f))) | |
43 (with (fwriter txtfile) (lambda (f) (.write thing f)))) |