Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/45559 )

Change subject: base: Deprecate the UNIT_* macros.
......................................................................

base: Deprecate the UNIT_* macros.

When setting up a Stats::Group or its subclasses, you can use Unit::*
statif functions which provide an equally brief way to get at the same
thing as the macros, but without all the downsides of macros like
defeating the namespace system. After all, why have a Stats::Units
namespace and then effectively export those names with an
un-namespace-able UNIT_* macro?

Change-Id: I098a7d6951ccc334ae03a3a2e4da6a0f7c1e2263
---
M src/base/stats/group.hh
M src/base/stats/units.hh
2 files changed, 64 insertions(+), 13 deletions(-)



diff --git a/src/base/stats/group.hh b/src/base/stats/group.hh
index 85a77a1..4994ee2 100644
--- a/src/base/stats/group.hh
+++ b/src/base/stats/group.hh
@@ -96,6 +96,40 @@
     Group &operator=(const Group &) = delete;
     /** @}*/ //end of api_stats

+    class Unit
+    {
+
+      public:
+        static inline Units::Cycle *cycle() { return Units::Cycle::get(); }
+        static inline Units::Tick *tick() { return Units::Tick::get(); }
+ static inline Units::Second *second() { return Units::Second::get(); }
+        static inline Units::Bit *bit() { return Units::Bit::get(); }
+        static inline Units::Byte *byte() { return Units::Byte::get(); }
+        static inline Units::Joule *joule() { return Units::Joule::get(); }
+        static inline Units::Volt *volt() { return Units::Volt::get(); }
+        static inline Units::DegreeCelsius *
+        celsius()
+        {
+            return Units::DegreeCelsius::get();
+        }
+
+        template <typename T1, typename T2>
+        static Units::Rate<T1, T2> *
+        rate()
+        {
+            return Units::Rate<T1, T2>::get();
+        }
+
+        static inline Units::Ratio *ratio() { return Units::Ratio::get(); }
+        static inline Units::Count *count() { return Units::Count::get(); }
+        static inline Units::Watt *watt() { return Units::Watt::get(); }
+        static inline Units::Unspecified *
+        unspecified()
+        {
+            return Units::Unspecified::get();
+        }
+    };
+
     /**
      * Construct a new statistics group.
      *
diff --git a/src/base/stats/units.hh b/src/base/stats/units.hh
index 87e6025..88f93ec 100644
--- a/src/base/stats/units.hh
+++ b/src/base/stats/units.hh
@@ -31,24 +31,41 @@

 #include <type_traits>

+#include "base/compiler.hh"
 #include "base/cprintf.hh"

 /**
  * Convenience macros to declare the unit of a stat.
  */
-#define UNIT_CYCLE Stats::Units::Cycle::get()
-#define UNIT_TICK Stats::Units::Tick::get()
-#define UNIT_SECOND Stats::Units::Second::get()
-#define UNIT_BIT Stats::Units::Bit::get()
-#define UNIT_BYTE Stats::Units::Byte::get()
-#define UNIT_JOULE Stats::Units::Joule::get()
-#define UNIT_VOLT Stats::Units::Volt::get()
-#define UNIT_CELSIUS Stats::Units::DegreeCelsius::get()
-#define UNIT_RATE(T1, T2) Stats::Units::Rate<T1, T2>::get()
-#define UNIT_RATIO Stats::Units::Ratio::get()
-#define UNIT_COUNT Stats::Units::Count::get()
-#define UNIT_WATT Stats::Units::Watt::get()
-#define UNIT_UNSPECIFIED Stats::Units::Unspecified::get()
+#define UNIT_CYCLE GEM5_DEPRECATED_MACRO( \
+        UNIT_CYCLE, Stats::Units::Cycle::get(), "Use Unit::cycle()")
+#define UNIT_TICK GEM5_DEPRECATED_MACRO( \
+        UNIT_TICK, Stats::Units::Tick::get(), "Use Unit::tick()")
+#define UNIT_SECOND GEM5_DEPRECATED_MACRO( \
+        UNIT_SECOND, Stats::Units::Second::get(), "Use Unit::second()")
+#define UNIT_BIT GEM5_DEPRECATED_MACRO( \
+        UNIT_BIT, Stats::Units::Bit::get(), "Use Unit::bit()")
+#define UNIT_BYTE GEM5_DEPRECATED_MACRO( \
+        UNIT_BYTE, Stats::Units::Byte::get(), "Use Unit::byte()")
+#define UNIT_JOULE GEM5_DEPRECATED_MACRO( \
+        UNIT_JOULE, Stats::Units::Joule::get(), "Use Unit::joule()")
+#define UNIT_VOLT GEM5_DEPRECATED_MACRO( \
+        UNIT_VOLD, Stats::Units::Volt::get(), "Use Unit::volt()")
+#define UNIT_CELSIUS GEM5_DEPRECATED_MACRO( \
+        UNIT_CELSIUS, Stats::Units::DegreeCelsius::get(), \
+        "Use Unit::celsius()")
+#define UNIT_RATE(T1, T2) GEM5_DEPRECATED_MACRO( \
+        UNIT_RATE(T1, T2), Stats::Units::Rate<T1, T2>::get(), \
+        "Unit::rate<T1, T2>()")
+#define UNIT_RATIO GEM5_DEPRECATED_MACRO( \
+        UNIT_RATIO, Stats::Units::Ratio::get(), "Use Unit::ratio()")
+#define UNIT_COUNT GEM5_DEPRECATED_MACRO( \
+        UNIT_COUNT, Stats::Units::Count::get(), "Use Unit::count()")
+#define UNIT_WATT GEM5_DEPRECATED_MACRO( \
+        UNIT_WATT, Stats::Units::Watt::get(), "Use Unit::watt()")
+#define UNIT_UNSPECIFIED GEM5_DEPRECATED_MACRO( \
+        UNIT_UNSPECIFIED, Stats::Units::Unspecified::get(), \
+        "Use Unit::unspecified()")

 namespace Stats {


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/45559
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I098a7d6951ccc334ae03a3a2e4da6a0f7c1e2263
Gerrit-Change-Number: 45559
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to