## Message with recursive types ## VALID_HEADER includes a LENGTH Header and LENGTH Body VALID_HEADER FIELD_NAME name TYPE STRING STRING 'org.freedesktop.Foo' END_LENGTH Header START_LENGTH Body # Everything is inside a dict TYPE DICT LENGTH Dict1 START_LENGTH Dict1 # first dict entry is an array of array of uint32 STRING 'mega-uint-array' TYPE ARRAY TYPE ARRAY TYPE ARRAY TYPE UINT32 LENGTH Array1 START_LENGTH Array1 LENGTH Array1_1 START_LENGTH Array1_1 UINT32_ARRAY { 1, 2, 3, 4, 5} UINT32_ARRAY { 2, 3, 4, 5, 1} UINT32_ARRAY { 3, 4, 5, 1, 2} END_LENGTH Array1_1 LENGTH Array1_2 START_LENGTH Array1_2 UINT32_ARRAY { 4, 5, 6, 7, 8} UINT32_ARRAY { 5, 6, 7, 8, 4} END_LENGTH Array1_2 END_LENGTH Array1 # second dict entry is an array of strings STRING 'string-array' TYPE ARRAY TYPE STRING STRING_ARRAY { 'a', 'string', 'array'} # third dict entry is another dict STRING 'nested-dict' TYPE DICT LENGTH Dict2 START_LENGTH Dict2 STRING 'string' TYPE STRING STRING 'a deeply nested string' STRING 'super-nested-dict' TYPE DICT LENGTH Dict3 START_LENGTH Dict3 STRING 'double-array' TYPE ARRAY TYPE DOUBLE DOUBLE_ARRAY {1.0, 2.0, 3.0} STRING 'dict-array' TYPE ARRAY TYPE DICT LENGTH Array2 START_LENGTH Array2 LENGTH Dict4 START_LENGTH Dict4 STRING 'key4' TYPE BYTE BYTE '4' END_LENGTH Dict4 LENGTH Dict5 START_LENGTH Dict5 STRING 'key5' TYPE BYTE BYTE '5' END_LENGTH Dict5 END_LENGTH Array2 STRING 'boolean' TYPE BOOLEAN BOOLEAN false END_LENGTH Dict3 END_LENGTH Dict2 END_LENGTH Dict1 END_LENGTH Body