refcnt: Change things around so that we handle constness correctly.
authorNathan Binkert <nate@binkert.org>
Sun, 23 Jan 2011 05:48:06 +0000 (21:48 -0800)
committerNathan Binkert <nate@binkert.org>
Sun, 23 Jan 2011 05:48:06 +0000 (21:48 -0800)
To use a non const pointer:
typedef RefCountingPtr<Foo> FooPtr;

To use a const pointer:
typedef RefCountingPtr<const Foo> ConstFooPtr;

src/base/refcnt.hh

index b73183a1a199266ef1a139db841a58b0680edd62..1c10cc0eaf3d915ada457db727f4825c61c6f4ce 100644 (file)
@@ -34,7 +34,7 @@
 class RefCounted
 {
   private:
-    int count;
+    mutable int count;
 
   private:
     // Don't allow a default copy constructor or copy operator on
@@ -84,13 +84,9 @@ class RefCountingPtr
     RefCountingPtr(const RefCountingPtr &r) { copy(r.data); }
     ~RefCountingPtr() { del(); }
 
-    T *operator->() { return data; }
-    T &operator*() { return *data; }
-    T *get() { return data; }
-
-    const T *operator->() const { return data; }
-    const T &operator*() const { return *data; }
-    const T *get() const { return data; }
+    T *operator->() const { return data; }
+    T &operator*() const { return *data; }
+    T *get() const { return data; }
 
     const RefCountingPtr &operator=(T *p) { set(p); return *this; }
     const RefCountingPtr &operator=(const RefCountingPtr &r)