From: Michael Nolan Date: Wed, 24 Jun 2020 20:03:10 +0000 (-0400) Subject: Modify RecordObject to prefix all signal names with the record name X-Git-Tag: 24jan2021_ls180~51 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f61e3beee4fd566a7f6bd2ab6421ef1ae25e9704;p=nmutil.git Modify RecordObject to prefix all signal names with the record name --- diff --git a/src/nmutil/iocontrol.py b/src/nmutil/iocontrol.py index 853a1d0..2bd7896 100644 --- a/src/nmutil/iocontrol.py +++ b/src/nmutil/iocontrol.py @@ -73,15 +73,33 @@ class Object: return list(self) +def add_prefix_to_record_signals(prefix, record): + for key, val in record.fields.items(): + if isinstance(val, Signal): + val.name = prefix + val.name + elif isinstance(val, Record): + add_prefix_to_record_signals(prefix, val) + class RecordObject(Record): def __init__(self, layout=None, name=None): Record.__init__(self, layout=layout or [], name=name) def __setattr__(self, k, v): + print(f"RecordObject setattr({k}, {v})") #print (dir(Record)) if (k.startswith('_') or k in ["fields", "name", "src_loc"] or k in dir(Record) or "fields" not in self.__dict__): return object.__setattr__(self, k, v) + + # Prefix the signal name with the name of the recordobject + if isinstance(v, Signal): + v.name = self.name + "_" + v.name + elif isinstance(v, Record): + add_prefix_to_record_signals(self.name + "_", v) + print(f"Record: {v}") + print(v) + + self.fields[k] = v #print ("RecordObject setattr", k, v) if isinstance(v, Record):