samer@0
|
1 //
|
samer@0
|
2 // VecToStream.java
|
samer@0
|
3 //
|
samer@0
|
4 //
|
samer@0
|
5 // Created by Samer Abdallah on Mon Jun 10 2002.
|
samer@0
|
6 // Copyright (c) 2002 __MyCompanyName__. All rights reserved.
|
samer@0
|
7 //
|
samer@0
|
8
|
samer@0
|
9 package samer.units;
|
samer@0
|
10
|
samer@0
|
11 import samer.core.*;
|
samer@0
|
12 import samer.tools.*;
|
samer@0
|
13 import samer.maths.*;
|
samer@0
|
14 import java.io.*;
|
samer@0
|
15
|
samer@0
|
16 /** Write sequence of vectors to stream in binary format. */
|
samer@0
|
17
|
samer@0
|
18 public class VecToStream extends AnonymousTask {
|
samer@0
|
19 Vec x; // the vector itself
|
samer@0
|
20 OutputStream out; // stream to write to
|
samer@0
|
21 DataOutputStream objout;
|
samer@0
|
22 Task task;
|
samer@0
|
23
|
samer@0
|
24 public VecToStream(Vec x, OutputStream out) throws Exception
|
samer@0
|
25 {
|
samer@0
|
26 this.x=x;
|
samer@0
|
27 this.out=out;
|
samer@0
|
28 objout=new DataOutputStream(out);
|
samer@0
|
29
|
samer@0
|
30 double [] a=x.array();
|
samer@0
|
31 //if (a!=null) task=new ArrayObjectWriter(a);
|
samer@0
|
32 //else
|
samer@0
|
33 task=new IteratorFloatWriter();
|
samer@0
|
34 }
|
samer@0
|
35
|
samer@0
|
36 public void dispose() {
|
samer@0
|
37 try {
|
samer@0
|
38 objout.flush();
|
samer@0
|
39 objout.close();
|
samer@0
|
40 } catch (Exception ex) {}
|
samer@0
|
41
|
samer@0
|
42 // close out?
|
samer@0
|
43 }
|
samer@0
|
44
|
samer@0
|
45 public Task getTask() { return task; }
|
samer@0
|
46
|
samer@0
|
47 public void run() throws Exception { task.run(); /* autoflush? */ }
|
samer@0
|
48 public void stopping() {
|
samer@0
|
49 try { objout.flush(); }
|
samer@0
|
50 catch (Exception ex) {}
|
samer@0
|
51 }
|
samer@0
|
52
|
samer@0
|
53 class ArrayObjectWriter extends AnonymousTask {
|
samer@0
|
54 double [] array;
|
samer@0
|
55 public ArrayObjectWriter(double [] a) { array=a; }
|
samer@0
|
56 public void run() throws Exception {
|
samer@0
|
57 // objout.writeObject(array);
|
samer@0
|
58 }
|
samer@0
|
59 }
|
samer@0
|
60
|
samer@0
|
61 class IteratorFloatWriter extends AnonymousTask {
|
samer@0
|
62 public void run() throws Exception {
|
samer@0
|
63 Vec.Iterator i=x.iterator();
|
samer@0
|
64 while (i.more()) {
|
samer@0
|
65 objout.writeFloat((float)i.next());
|
samer@0
|
66 }
|
samer@0
|
67 }
|
samer@0
|
68 }
|
samer@0
|
69 }
|