1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package eu.simuline.octave.io.impl;
17
18 import java.io.IOException;
19 import java.io.Writer;
20 import java.util.Map;
21
22 import eu.simuline.octave.io.OctaveIO;
23 import eu.simuline.octave.io.spi.OctaveDataWriter;
24 import eu.simuline.octave.type.OctaveObject;
25 import eu.simuline.octave.type.OctaveStruct;
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 public final class StructWriter extends OctaveDataWriter<OctaveStruct> {
42 static final String LENGTH = "# length: ";
43 static final String NAME = "# name: ";
44
45 static final String TYPE_CELL = "# type: cell";
46
47 @Override
48 public Class<OctaveStruct> javaType() {
49 return OctaveStruct.class;
50 }
51
52 @Override
53 public void write(final Writer writer,
54 final OctaveStruct octaveStruct) throws IOException {
55 writer.write("# type: struct\n");
56 final Map<String, OctaveObject> data = octaveStruct.getData();
57 writer.write(LENGTH + data.size() + "\n");
58 for (final Map.Entry<String, OctaveObject> entry : data.entrySet()) {
59 final String subname = entry.getKey();
60 final OctaveObject value = entry.getValue();
61 writer.write(NAME + subname + "\n");
62
63
64 writer.write(TYPE_CELL + "\n");
65
66 writer.write("# rows: " + 1 + "\n");
67 writer.write("# columns: " + 1 + "\n");
68 OctaveIO.write(writer, "<cell-element>", value);
69 writer.write("\n");
70 }
71 }
72
73 }