From a46f835cfc5e7aef61aed5eeaf2d8eb1da7ddcee Mon Sep 17 00:00:00 2001 From: Simone Morettini Date: Wed, 14 Feb 2024 22:03:53 +0100 Subject: [PATCH] Add support to GDS for struct member array (#161) * Add support to GDS for struct member array * Fix name to support multiple array per struct --- src/fprime_gds/common/loaders/xml_loader.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/fprime_gds/common/loaders/xml_loader.py b/src/fprime_gds/common/loaders/xml_loader.py index 609f4dad..397c48e4 100644 --- a/src/fprime_gds/common/loaders/xml_loader.py +++ b/src/fprime_gds/common/loaders/xml_loader.py @@ -61,6 +61,7 @@ class XmlLoader(dict_loader.DictLoader): SER_MEMB_FMT_STR_TAG = "format_specifier" SER_MEMB_DESC_TAG = "description" SER_MEMB_TYPE_TAG = "type" + SER_MEMB_SIZE_TAG = "size" # Xml section names and tags for array types ARR_SECT = "arrays" @@ -256,7 +257,15 @@ def get_serializable_type(self, type_name, xml_obj): fmt_str = memb.get(self.SER_MEMB_FMT_STR_TAG) desc = memb.get(self.SER_MEMB_DESC_TAG) memb_type_name = memb.get(self.SER_MEMB_TYPE_TAG) + memb_size = memb.get(self.SER_MEMB_SIZE_TAG) type_obj = self.parse_type(memb_type_name, memb, xml_obj) + # memb_size is not None for member array + if(memb_size is not None): + type_obj = ArrayType.construct_type( + f"Array_{type_obj.__name__}_{memb_size}", + type_obj, + int(memb_size), + fmt_str) members.append((name, type_obj, fmt_str, desc))