changeset 9c39ca645966 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=9c39ca645966
description:
        sim: Replace fromInt/fromSimObject with decltype

diffstat:

 src/sim/serialize.hh |  34 +++++++++++-----------------------
 1 files changed, 11 insertions(+), 23 deletions(-)

diffs (58 lines):

diff -r 5379f099e488 -r 9c39ca645966 src/sim/serialize.hh
--- a/src/sim/serialize.hh      Tue Sep 01 13:40:05 2015 +0100
+++ b/src/sim/serialize.hh      Tue Sep 01 13:40:25 2015 +0100
@@ -136,18 +136,6 @@
 void
 objParamIn(CheckpointIn &cp, const std::string &name, SimObject * &param);
 
-template <typename T>
-void fromInt(T &t, int i)
-{
-    t = (T)i;
-}
-
-template <typename T>
-void fromSimObject(T &t, SimObject *s)
-{
-    t = dynamic_cast<T>(s);
-}
-
 //
 // These macros are streamlined to use in serialize/unserialize
 // functions.  It's assumed that serialize() has a parameter 'os' for
@@ -160,12 +148,12 @@
 // ENUMs are like SCALARs, but we cast them to ints on the way out
 #define SERIALIZE_ENUM(scalar)          paramOut(cp, #scalar, (int)scalar)
 
-#define UNSERIALIZE_ENUM(scalar)                \
- do {                                           \
-    int tmp;                                    \
-    paramIn(cp, #scalar, tmp);                  \
-    fromInt(scalar, tmp);                       \
-  } while (0)
+#define UNSERIALIZE_ENUM(scalar)                        \
+    do {                                                \
+        int tmp;                                        \
+        paramIn(cp, #scalar, tmp);                      \
+        scalar = static_cast<decltype(scalar)>(tmp);    \
+    } while (0)
 
 #define SERIALIZE_ARRAY(member, size)           \
         arrayParamOut(cp, #member, member, size)
@@ -193,11 +181,11 @@
 #define SERIALIZE_OBJPTR(objptr)        paramOut(cp, #objptr, (objptr)->name())
 
 #define UNSERIALIZE_OBJPTR(objptr)                      \
-  do {                                                  \
-    SimObject *sptr;                                    \
-    objParamIn(cp, #objptr, sptr);                      \
-    fromSimObject(objptr, sptr);                        \
-  } while (0)
+    do {                                                \
+        SimObject *sptr;                                \
+        objParamIn(cp, #objptr, sptr);                  \
+        objptr = dynamic_cast<decltype(objptr)>(sptr);  \
+    } while (0)
 
 /**
  * Basic support for object serialization.
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to