annotate src/scheme/streams.scm @ 8:5e3cbbf173aa tip

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