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