1channel TestChannel {
2   message {
3      uint8 dummy_byte; // so structure is not aligned
4      uint32 data_size;
5      uint64 *data[data_size] @marshall;
6   } ShortDataSubMarshall;
7
8   message {
9      int8 name[] @end;
10   } ArrayMessage;
11
12    message {
13        uint8 res1 @zero;
14        uint16 n;
15        uint32 res2 @zero;
16    } Zeroes;
17
18    message {
19        uint32 num_of_channels;
20        uint16 channels[num_of_channels] @end;
21    } @ctype(SpiceMsgChannels) channels_list;
22
23    message {
24        uint32 dummy[2];
25        uint8 data[] @end;
26    } LenMessage;
27
28    message {
29        uint8 txt1[4] @zero_terminated;
30        uint8 sep1;
31        uint32 txt2_len;
32        uint8 *txt2[txt2_len] @zero_terminated;
33        uint8 txt3[txt2_len] @to_ptr @zero_terminated;
34        uint32 n;
35        uint16 txt4_len;
36        uint8 txt4[txt4_len] @end @zero_terminated;
37    } @declare ZeroLen1;
38};
39
40protocol Spice {
41    TestChannel main = 1;
42};
43