forked from cldellow/manu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathformat.dot
59 lines (51 loc) · 1.42 KB
/
format.dot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
digraph structs {
node [shape=record];
rankdir=LR;
composite [ label ="<preamble> preamble |
<record1> record 1 |
<record2> record 2 |
... |
<recordq> record q |
<rowlist1>2: row-list 1 length|
row-list 1\ndelta-encoded |
<recordqp1> record q+1 |
... |
<recordmqp1> record Mq+1 |
... |
<rowlistm> row-list M |
<rowlistpos> 4: row-list 1 position |
... |
<rowlistposm> 4: row-list M position
" ];
preamble [ label="<start>
4: 'MANU' magic number |
2: file version |
2: records per row list |
4: null value marker |
8: ms since epoch |
4: num datapoints |
1: interval\n(minute, ..., year) |
4: starting record\ne.g. 0 |
4: # of records\ne.g. 100000 |
1: # of fields |
1: type of field 1\n(int, fixed1, fixed2) |
... |
1: type of field K |
1: length of field 1 name |
variable: field 1 name\nUTF-8 encoding |
... |
<rowlistpos> 4: row-list position
" ];
record [ label = "<decoder>1: decoder\n*high bits = # of bytes for length |
0/1/2/4: length\n(omitted for last field) |
content
" ];
composite:preamble -> preamble:start [arrowhead=dot];
preamble:rowlistpos -> composite:rowlistpos;
composite:rowlistpos -> composite:rowlist1;
composite:rowlistposm -> composite:rowlistm;
composite:record1 -> record:decoder [arrowhead=dot];
composite:rowlist1 -> composite:record1;
composite:rowlist1 -> composite:record2;
composite:rowlistm -> composite:recordmqp1;
}