SimObject.py (7525:722f2ad014a7) SimObject.py (7526:4bb5f5207617)
1# Copyright (c) 2004-2006 The Regents of The University of Michigan
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met: redistributions of source code must retain the above copyright
7# notice, this list of conditions and the following disclaimer;
8# redistributions in binary form must reproduce the above copyright

--- 747 unchanged lines hidden (view full) ---

756 self._ccParams = cc_params
757 return self._ccParams
758
759 # Get C++ object corresponding to this object, calling C++ if
760 # necessary to construct it. Does *not* recursively create
761 # children.
762 def getCCObject(self):
763 if not self._ccObject:
1# Copyright (c) 2004-2006 The Regents of The University of Michigan
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met: redistributions of source code must retain the above copyright
7# notice, this list of conditions and the following disclaimer;
8# redistributions in binary form must reproduce the above copyright

--- 747 unchanged lines hidden (view full) ---

756 self._ccParams = cc_params
757 return self._ccParams
758
759 # Get C++ object corresponding to this object, calling C++ if
760 # necessary to construct it. Does *not* recursively create
761 # children.
762 def getCCObject(self):
763 if not self._ccObject:
764 # Cycles in the configuration heirarchy are not supported. This
764 # Make sure this object is in the configuration hierarchy
765 if not self._parent and not isRoot(self):
766 raise RuntimeError, "Attempt to instantiate orphan node"
767 # Cycles in the configuration hierarchy are not supported. This
765 # will catch the resulting recursion and stop.
766 self._ccObject = -1
767 params = self.getCCParams()
768 self._ccObject = params.create()
769 elif self._ccObject == -1:
768 # will catch the resulting recursion and stop.
769 self._ccObject = -1
770 params = self.getCCParams()
771 self._ccObject = params.create()
772 elif self._ccObject == -1:
770 raise RuntimeError, "%s: Cycle found in configuration heirarchy." \
773 raise RuntimeError, "%s: Cycle found in configuration hierarchy." \
771 % self.path()
772 return self._ccObject
773
774 # Call C++ to create C++ object corresponding to this object and
775 # (recursively) all its children
776 def createCCObject(self):
777 self.getCCParams()
778 self.getCCObject() # force creation

--- 106 unchanged lines hidden (view full) ---

885 if not isNullPointer(val) and not isSimObject(val):
886 return False
887
888 return True
889
890def isSimObjectOrSequence(value):
891 return isSimObject(value) or isSimObjectSequence(value)
892
774 % self.path()
775 return self._ccObject
776
777 # Call C++ to create C++ object corresponding to this object and
778 # (recursively) all its children
779 def createCCObject(self):
780 self.getCCParams()
781 self.getCCObject() # force creation

--- 106 unchanged lines hidden (view full) ---

888 if not isNullPointer(val) and not isSimObject(val):
889 return False
890
891 return True
892
893def isSimObjectOrSequence(value):
894 return isSimObject(value) or isSimObjectSequence(value)
895
896def isRoot(obj):
897 from m5.objects import Root
898 return obj and obj is Root.getInstance()
899
893baseClasses = allClasses.copy()
894baseInstances = instanceDict.copy()
895
896def clear():
897 global allClasses, instanceDict
898
899 allClasses = baseClasses.copy()
900 instanceDict = baseInstances.copy()
901
902# __all__ defines the list of symbols that get exported when
903# 'from config import *' is invoked. Try to keep this reasonably
904# short to avoid polluting other namespaces.
905__all__ = [ 'SimObject' ]
900baseClasses = allClasses.copy()
901baseInstances = instanceDict.copy()
902
903def clear():
904 global allClasses, instanceDict
905
906 allClasses = baseClasses.copy()
907 instanceDict = baseInstances.copy()
908
909# __all__ defines the list of symbols that get exported when
910# 'from config import *' is invoked. Try to keep this reasonably
911# short to avoid polluting other namespaces.
912__all__ = [ 'SimObject' ]