imported patch sim_object_params.diff
authorNathan Binkert <nate@binkert.org>
Wed, 18 Jun 2008 19:07:15 +0000 (12:07 -0700)
committerNathan Binkert <nate@binkert.org>
Wed, 18 Jun 2008 19:07:15 +0000 (12:07 -0700)
src/python/generate.py
src/python/m5/SimObject.py
src/sim/sim_object_params.hh [new file with mode: 0644]

index e6c36ecd2581a4e7c0a92cdf60cf6712faa7627e..7b69ad8766c45d40456da5fa44d7201519ec2f39 100644 (file)
@@ -300,6 +300,7 @@ class Generate(object):
 
             print >>out, code
 
+        print >>out, '%%include "src/sim/sim_object_params.hh"' % obj
         for obj in ordered_objs:
             print >>out, '%%include "params/%s.hh"' % obj
 
index 41ed3df9e9e190a83a13f9c958caf7f2f527c55c..4cf0f7a3d563a4621a2528fec2d6c73552460c2e 100644 (file)
@@ -396,13 +396,21 @@ class MetaSimObject(type):
                 code += '#include "enums/%s.hh"\n' % ptype.__name__
                 code += "\n\n"
 
+        code += cls.cxx_struct(base, params)
+
+        # close #ifndef __PARAMS__* guard
+        code += "\n#endif\n"
+        return code
+
+    def cxx_struct(cls, base, params):
+        if cls == SimObject:
+            return '#include "sim/sim_object_params.hh"\n'
+
         # now generate the actual param struct
-        code += "struct %sParams" % cls
+        code = "struct %sParams" % cls
         if base:
             code += " : public %sParams" % base
         code += "\n{\n"
-        if cls == SimObject:
-            code += "    virtual ~%sParams() {}\n" % cls
         if not hasattr(cls, 'abstract') or not cls.abstract:
             if 'type' in cls.__dict__:
                 code += "    %s create();\n" % cls.cxx_type
@@ -411,8 +419,6 @@ class MetaSimObject(type):
         code += "".join(["    %s\n" % d for d in decls])
         code += "};\n"
 
-        # close #ifndef __PARAMS__* guard
-        code += "\n#endif\n"
         return code
 
     def cxx_type_decl(cls):
@@ -483,7 +489,6 @@ class SimObject(object):
     type = 'SimObject'
     abstract = True
 
-    name = Param.String("Object name")
     swig_objdecls = [ '%include "python/swig/sim_object.i"' ]
 
     # Initialize new instance.  For objects with SimObject-valued
@@ -762,7 +767,7 @@ class SimObject(object):
 
         cc_params_struct = getattr(m5.objects.params, '%sParams' % self.type)
         cc_params = cc_params_struct()
-        cc_params.object = self
+        cc_params.pyobj = self
         cc_params.name = str(self)
 
         param_names = self._params.keys()
diff --git a/src/sim/sim_object_params.hh b/src/sim/sim_object_params.hh
new file mode 100644 (file)
index 0000000..4179a37
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2001-2005 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Steve Reinhardt
+ *          Nathan Binkert
+ */
+
+#ifndef __SIM_SIM_OBJECT_PARAMS_HH__
+#define __SIM_SIM_OBJECT_PARAMS_HH__
+
+#ifndef PY_VERSION
+struct PyObject;
+#endif
+
+struct SimObjectParams
+{
+    virtual ~SimObjectParams() {}
+
+    std::string name;
+    PyObject *pyobj;
+};
+
+
+#endif // __SIM_SIM_OBJECT_PARAMS_HH__