File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed
Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -162,13 +162,21 @@ typedef struct {{
162162 encode_lines = []
163163 decode_lines = []
164164 for f in self .fields :
165- if f .type == 'uint8_t' and f .array :
165+ if f .type == 'uint8_t' and f .array and f . size <= 0 :
166166 encode_lines .append (f' node["{ f .name } "] = to_uint16_vector(rhs.{ f .name } );' )
167167 decode_lines .append (f' rhs.{ f .name } = from_uint16_vector(node["{ f .name } "].as<std::vector<uint16_t>>();' )
168168 need_lambdas = True
169169 else :
170- encode_lines .append (f' node["{ f .name } "] = static_cast<{ decode_datatype (f , yaml_use = True )} >(rhs.{ f .name } );' )
171- decode_lines .append (f' rhs.{ f .name } = node["{ f .name } "].as<{ decode_datatype (f )} >();' )
170+ if f .array and f .size > 0 :
171+ encode_lines .append (f' std::array<{ f .type } , { f .size } > arr;' );
172+ encode_lines .append (f' memcpy(&arr[0], &rhs.{ f .name } [0], { f .size } * sizeof({ f .type } ));' )
173+ encode_lines .append (f' node["values"] = arr;' )
174+
175+ decode_lines .append (f' std::array<{ f .type } , { f .size } > arr = node["{ f .name } "].as<std::array<{ f .type } , { f .size } >>();' )
176+ decode_lines .append (f' memcpy(&rhs.{ f .name } [0], &arr[0], { f .size } * sizeof({ f .type } ));' )
177+ else :
178+ encode_lines .append (f' node["{ f .name } "] = static_cast<const { decode_datatype (f , yaml_use = True )} >(rhs.{ f .name } );' )
179+ decode_lines .append (f' rhs.{ f .name } = node["{ f .name } "].as<{ decode_datatype (f )} >();' )
172180
173181 encode = "\n " .join (encode_lines )
174182 decode = "\n " .join (decode_lines )
You can’t perform that action at this time.
0 commit comments