samer@1: (import "samer.maths.Vec") samer@1: (import "samer.core.types.DoubleModel") samer@1: samer@0: (define (ifstream fn) (java.io.FileInputStream. fn)) samer@0: (define (ofstream fn) (java.io.FileOutputStream. fn)) samer@0: (define (fwriter fn) (java.io.FileWriter. fn)) samer@0: (define (freader fn) (java.io.FileReader. fn)) samer@0: samer@0: (define-method (buffer (in java.io.InputStream)) (java.io.BufferedInputStream. in)) samer@0: (define-method (buffer (out java.io.OutputStream)) (java.io.BufferedOutputStream. out)) samer@0: (define-method (buffer (in java.io.Reader)) (java.io.BufferedReader. in)) samer@0: (define-method (buffer (out java.io.Writer)) (java.io.BufferedWriter. out)) samer@0: samer@0: (define (make-pipe) samer@0: (define writer (java.io.PipedOutputStream.)) samer@0: (define reader (java.io.PipedInputStream. writer)) samer@0: (list writer reader) samer@0: ) samer@0: samer@0: (define-method (send (pipe Pair) (x Vec)) (VecToStream. x (first pipe))) samer@0: (define-method (recv (pipe Pair) (x Vec)) (StreamToVec. x (second pipe))) samer@0: (define-method (send (pipe Pair) (x DoubleModel)) (SignalToStream. x (first pipe))) samer@0: (define-method (recv (pipe Pair) (x DoubleModel)) (StreamToDouble. x (second pipe))) samer@0: samer@0: (define (with-infile fname proc) samer@0: (let* ( (f (ifstream fname)) samer@0: (rc (proc f))) samer@0: (.close f) rc)) samer@0: samer@0: (define (with-outfile fname proc) samer@0: (let* ( (f (ofstream fname)) samer@0: (rc (proc f))) samer@0: (.close f) rc)) samer@0: samer@0: (define (with thing proc) samer@0: (let ((rc (proc thing))) samer@0: (.close thing) rc)) samer@0: samer@0: (define (oostream s) (java.io.ObjectOutputStream. s)) samer@0: (define (iostream s) (java.io.ObjectInputStream. s)) samer@0: samer@0: samer@0: ;; convert saveable from binary to text samer@0: (define (totext thing file txtfile) samer@0: (with (ifstream file) (lambda (f) (.load thing f))) samer@0: (with (fwriter txtfile) (lambda (f) (.write thing f))))