1 ## Message with recursive types 2 3 ## VALID_HEADER includes a LENGTH Header and LENGTH Body 4 VALID_HEADER method_call 5 6 REQUIRED_FIELDS 7 8 ALIGN 8 9 END_LENGTH Header 10 START_LENGTH Body 11 12 # Everything is inside a dict 13 TYPE DICT 14 LENGTH Dict1 15 START_LENGTH Dict1 16 17 # first dict entry is an array of array of uint32 18 STRING 'mega-uint-array' 19 TYPE ARRAY 20 TYPE ARRAY 21 TYPE ARRAY 22 TYPE UINT32 23 LENGTH Array1 24 START_LENGTH Array1 25 26 LENGTH Array1_1 27 START_LENGTH Array1_1 28 UINT32_ARRAY { 1, 2, 3, 4, 5} 29 UINT32_ARRAY { 2, 3, 4, 5, 1} 30 UINT32_ARRAY { 3, 4, 5, 1, 2} 31 END_LENGTH Array1_1 32 33 LENGTH Array1_2 34 START_LENGTH Array1_2 35 UINT32_ARRAY { 4, 5, 6, 7, 8} 36 UINT32_ARRAY { 5, 6, 7, 8, 4} 37 END_LENGTH Array1_2 38 39 END_LENGTH Array1 40 41 # second dict entry is an array of strings 42 STRING 'string-array' 43 TYPE ARRAY 44 TYPE STRING 45 STRING_ARRAY { 'a', 'string', 'array'} 46 47 # third dict entry is another dict 48 STRING 'nested-dict' 49 TYPE DICT 50 LENGTH Dict2 51 START_LENGTH Dict2 52 53 STRING 'string' 54 TYPE STRING 55 STRING 'a deeply nested string' 56 57 STRING 'super-nested-dict' 58 TYPE DICT 59 LENGTH Dict3 60 START_LENGTH Dict3 61 62 STRING 'double-array' 63 TYPE ARRAY 64 TYPE DOUBLE 65 DOUBLE_ARRAY {1.0, 2.0, 3.0} 66 67 STRING 'dict-array' 68 TYPE ARRAY 69 TYPE DICT 70 LENGTH Array2 71 START_LENGTH Array2 72 73 LENGTH Dict4 74 START_LENGTH Dict4 75 STRING 'key4' 76 TYPE BYTE 77 BYTE '4' 78 END_LENGTH Dict4 79 80 LENGTH Dict5 81 START_LENGTH Dict5 82 STRING 'key5' 83 TYPE BYTE 84 BYTE '5' 85 END_LENGTH Dict5 86 87 END_LENGTH Array2 88 89 STRING 'boolean' 90 TYPE BOOLEAN 91 BOOLEAN false 92 93 END_LENGTH Dict3 94 95 END_LENGTH Dict2 96 97 END_LENGTH Dict1 98 99 END_LENGTH Body 100