Commit a7b6b23d authored by JP Dinger's avatar JP Dinger

Skins2: Add (and use) template parameter typedefs so that they might be used,...

Skins2: Add (and use) template parameter typedefs so that they might be used, say, as function return types. The next commit needs this.
parent 316c9f43
...@@ -30,14 +30,17 @@ ...@@ -30,14 +30,17 @@
template <class T> class CountedPtr template <class T> class CountedPtr
{ {
public: public:
explicit CountedPtr( T *pPtr = 0 ): m_pCounter( 0 ) typedef T *pointer;
typedef T &reference;
explicit CountedPtr( pointer pPtr = 0 ): m_pCounter( 0 )
{ {
if( pPtr ) m_pCounter = new Counter( pPtr ); if( pPtr ) m_pCounter = new Counter( pPtr );
} }
~CountedPtr() { release(); } ~CountedPtr() { release(); }
CountedPtr(const CountedPtr &rPtr ) { acquire( rPtr.m_pCounter ); } CountedPtr( const CountedPtr &rPtr ) { acquire( rPtr.m_pCounter ); }
CountedPtr &operator=( const CountedPtr &rPtr ) CountedPtr &operator=( const CountedPtr &rPtr )
{ {
...@@ -49,11 +52,11 @@ public: ...@@ -49,11 +52,11 @@ public:
return *this; return *this;
} }
T &operator*() const { return *m_pCounter->m_pPtr; } // XXX Somebody explain why operator* and operator-> don't use get()
reference operator*() const { return *m_pCounter->m_pPtr; }
T *operator->() const {return m_pCounter->m_pPtr; } pointer operator->() const { return m_pCounter->m_pPtr; }
T *get() const { return m_pCounter ? m_pCounter->m_pPtr : 0; } pointer get() const { return m_pCounter ? m_pCounter->m_pPtr : 0; }
bool unique() const bool unique() const
{ {
...@@ -63,9 +66,9 @@ public: ...@@ -63,9 +66,9 @@ public:
private: private:
struct Counter struct Counter
{ {
Counter( T* pPtr = 0, unsigned int c = 1 ) Counter( pointer pPtr = 0, unsigned int c = 1 )
: m_pPtr( pPtr ), m_count( c ) { } : m_pPtr( pPtr ), m_count( c ) { }
T* m_pPtr; pointer m_pPtr;
unsigned int m_count; unsigned int m_count;
} *m_pCounter; } *m_pCounter;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment