Added operator methods to the Statistic class; some LLVM projects depend
authorJohn Criswell <criswell@uiuc.edu>
Tue, 19 Dec 2006 22:55:57 +0000 (22:55 +0000)
committerJohn Criswell <criswell@uiuc.edu>
Tue, 19 Dec 2006 22:55:57 +0000 (22:55 +0000)
on these.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32701 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/Statistic.h

index 4bf47640eeed73bbab5f4ef55ebbee9ef0bdd442..82d27acb360ef2927831c9bdd3144dd44ecddb79 100644 (file)
@@ -51,7 +51,7 @@ public:
   const StatisticBase &operator*=(const unsigned &V) {Value *= V;return init();}
   const StatisticBase &operator/=(const unsigned &V) {Value /= V;return init();}
   
-private:
+protected:
   StatisticBase &init() {
     if (!Initialized) RegisterStatistic();
     return *this;
@@ -63,6 +63,18 @@ struct Statistic : public StatisticBase {
   Statistic(const char *name, const char *desc) {
     Name = name; Desc = desc; Value = 0; Initialized = 0;
   }
+
+  // Allow use of this class as the value itself.
+  operator unsigned() const { return Value; }
+  const Statistic &operator=(unsigned Val) { Value = Val; init(); return *this;}
+  const Statistic &operator++() { ++Value; init(); return *this;}
+  unsigned operator++(int) { init(); return Value++; }
+  const Statistic &operator--() { --Value; init(); return *this;}
+  unsigned operator--(int) { init(); return Value--; }
+  const Statistic &operator+=(const unsigned &V) {Value += V;init();return *this;}
+  const Statistic &operator-=(const unsigned &V) {Value -= V;init();return *this;}
+  const Statistic &operator*=(const unsigned &V) {Value *= V;init();return *this;}
+  const Statistic &operator/=(const unsigned &V) {Value /= V;init();return *this;}
 };