digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__apple_single_double {
label="AppleSingleDouble";
graph[style=dotted];
apple_single_double__seq [label=<
pos | size | type | id |
0 | 4 | u4be→FileType | magic |
4 | 4 | u4be | version |
8 | 16 | | reserved |
24 | 2 | u2be | num_entries |
26 | 12 | Entry | entries |
repeat num_entries times |
>];
subgraph cluster__entry {
label="AppleSingleDouble::Entry";
graph[style=dotted];
entry__seq [label=<
pos | size | type | id |
0 | 4 | u4be→Types | type |
4 | 4 | u4be | ofs_body |
8 | 4 | u4be | len_body |
>];
entry__inst__body [label=<
pos | size | type | id |
ofs_body | ... | switch (type) | body |
>];
entry__inst__body_body_switch [label=<
case | type |
:types_finder_info | FinderInfo |
>];
}
subgraph cluster__finder_info {
label="AppleSingleDouble::FinderInfo";
graph[style=dotted];
finder_info__seq [label=<
pos | size | type | id |
0 | 4 | | file_type |
4 | 4 | | file_creator |
8 | 2 | u2be | flags |
10 | 4 | Point | location |
14 | 2 | u2be | folder_id |
>];
}
subgraph cluster__point {
label="AppleSingleDouble::Point";
graph[style=dotted];
point__seq [label=<
pos | size | type | id |
0 | 2 | u2be | x |
2 | 2 | u2be | y |
>];
}
}
apple_single_double__seq:entries_type -> entry__seq [style=bold];
apple_single_double__seq:num_entries_type -> apple_single_double__seq:entries__repeat [color="#404040"];
entry__seq:ofs_body_type -> entry__inst__body:body_pos [color="#404040"];
entry__inst__body:body_type -> entry__inst__body_body_switch [style=bold];
entry__inst__body_body_switch:case0 -> finder_info__seq [style=bold];
entry__seq:type_type -> entry__inst__body:body_type [color="#404040"];
finder_info__seq:location_type -> point__seq [style=bold];
}