Mercurial > hg > jslab
view src/scheme/streams.scm @ 5:b67a33c44de7
Remove some crap, etc
author | samer |
---|---|
date | Fri, 05 Apr 2019 21:34:25 +0100 |
parents | 5df24c91468d |
children |
line wrap: on
line source
(import "samer.maths.Vec") (import "samer.core.types.DoubleModel") (define (ifstream fn) (java.io.FileInputStream. fn)) (define (ofstream fn) (java.io.FileOutputStream. fn)) (define (fwriter fn) (java.io.FileWriter. fn)) (define (freader fn) (java.io.FileReader. fn)) (define-method (buffer (in java.io.InputStream)) (java.io.BufferedInputStream. in)) (define-method (buffer (out java.io.OutputStream)) (java.io.BufferedOutputStream. out)) (define-method (buffer (in java.io.Reader)) (java.io.BufferedReader. in)) (define-method (buffer (out java.io.Writer)) (java.io.BufferedWriter. out)) (define (make-pipe) (define writer (java.io.PipedOutputStream.)) (define reader (java.io.PipedInputStream. writer)) (list writer reader) ) (define-method (send (pipe Pair) (x Vec)) (VecToStream. x (first pipe))) (define-method (recv (pipe Pair) (x Vec)) (StreamToVec. x (second pipe))) (define-method (send (pipe Pair) (x DoubleModel)) (SignalToStream. x (first pipe))) (define-method (recv (pipe Pair) (x DoubleModel)) (StreamToDouble. x (second pipe))) (define (with-infile fname proc) (let* ( (f (ifstream fname)) (rc (proc f))) (.close f) rc)) (define (with-outfile fname proc) (let* ( (f (ofstream fname)) (rc (proc f))) (.close f) rc)) (define (with thing proc) (let ((rc (proc thing))) (.close thing) rc)) (define (oostream s) (java.io.ObjectOutputStream. s)) (define (iostream s) (java.io.ObjectInputStream. s)) ;; convert saveable from binary to text (define (totext thing file txtfile) (with (ifstream file) (lambda (f) (.load thing f))) (with (fwriter txtfile) (lambda (f) (.write thing f))))