From f61e3beee4fd566a7f6bd2ab6421ef1ae25e9704 Mon Sep 17 00:00:00 2001 From: Michael Nolan Date: Wed, 24 Jun 2020 16:03:10 -0400 Subject: [PATCH] Modify RecordObject to prefix all signal names with the record name --- src/nmutil/iocontrol.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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): -- 2.30.2