changeset c8571e8ce7b6 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=c8571e8ce7b6
summary: imported patch sim_object_params.diff

diffstat:

2 files changed, 31 insertions(+)
src/python/m5/SimObject.py   |    7 +++++++
src/sim/sim_object_params.hh |   24 ++++++++++++++++++++++++

diffs (117 lines):

diff -r f0ac4112e128 -r c8571e8ce7b6 src/python/generate.py
--- a/src/python/generate.py    Wed Jun 18 10:15:21 2008 -0700
+++ b/src/python/generate.py    Wed Jun 18 12:07:15 2008 -0700
@@ -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
 
diff -r f0ac4112e128 -r c8571e8ce7b6 src/python/m5/SimObject.py
--- a/src/python/m5/SimObject.py        Wed Jun 18 10:15:21 2008 -0700
+++ b/src/python/m5/SimObject.py        Wed Jun 18 12:07:15 2008 -0700
@@ -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 -r f0ac4112e128 -r c8571e8ce7b6 src/sim/sim_object_params.hh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sim/sim_object_params.hh      Wed Jun 18 12:07:15 2008 -0700
@@ -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__
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to