annotate src/scheme/streams.scm @ 0:bf79fb79ee13

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