diff options
Diffstat (limited to 'src/python/m5/SimObject.py')
-rw-r--r-- | src/python/m5/SimObject.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/python/m5/SimObject.py b/src/python/m5/SimObject.py index c18d6900c..9729fd30f 100644 --- a/src/python/m5/SimObject.py +++ b/src/python/m5/SimObject.py @@ -746,6 +746,21 @@ class SimObject(object): found_obj = match_obj return found_obj, found_obj != None + def find_all(self, ptype): + all = {} + # search children + for child in self._children.itervalues(): + if isinstance(child, ptype) and not isproxy(child) and \ + not isNullPointer(child): + all[child] = True + # search param space + for pname,pdesc in self._params.iteritems(): + if issubclass(pdesc.ptype, ptype): + match_obj = self._values[pname] + if not isproxy(match_obj) and not isNullPointer(match_obj): + all[match_obj] = True + return all.keys(), True + def unproxy(self, base): return self |