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))))