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