Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SharedPool< T, RefcounterTraits >::Reference Class Reference

#include <SharedPool.h>

Public Member Functions

 Reference ()
 
 Reference (const T &s)
 
 Reference (ReferenceCounter *pool)
 
 Reference (ReferenceCounter *pool, const T &s)
 
 Reference (const Reference &other)
 
 ~Reference ()
 
const T & get () const
 
Referenceset (const T &s)
 
 operator const T & () const
 
Referenceoperator= (const T &s)
 
Referenceoperator= (const Reference &s)
 
bool operator== (const T &s) const
 
bool operator== (const Reference &r) const
 
bool operator< (const T &s) const
 
bool operator< (const Reference &r) const
 
bool operator!= (const T &s) const
 
bool operator!= (const Reference &r) const
 

Detailed Description

template<class T, class RefcounterTraits = vsHashComp< T >>
class SharedPool< T, RefcounterTraits >::Reference

Definition at line 41 of file SharedPool.h.

Constructor & Destructor Documentation

template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::Reference ( )
inline

Definition at line 61 of file SharedPool.h.

61  : Reference() :
62  _it( SharedPool::getSingleton().referenceCounter.end() )
63  , _rc( &SharedPool::getSingleton().referenceCounter )
64  {}
template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::Reference ( const T &  s)
inlineexplicit

Definition at line 66 of file SharedPool.h.

References SharedPool< T, RefcounterTraits >::Reference::set().

66  :
67  _it( SharedPool::getSingleton().referenceCounter.end() )
68  , _rc( &SharedPool::getSingleton().referenceCounter )
69  {
70  set( s );
71  }
template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::Reference ( ReferenceCounter pool)
inlineexplicit

Definition at line 73 of file SharedPool.h.

73  :
74  _it( pool->end() )
75  , _rc( pool )
76  {}
template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::Reference ( ReferenceCounter pool,
const T &  s 
)
inline

Definition at line 78 of file SharedPool.h.

References SharedPool< T, RefcounterTraits >::Reference::set().

78  :
79  _it( pool->end() )
80  , _rc( pool )
81  {
82  set( s );
83  }
template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::Reference ( const Reference other)
inline

Definition at line 85 of file SharedPool.h.

85  :
86  _it( other._it )
87  , _rc( other._rc )
88  {
89  ref();
90  }
template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::~Reference ( )
inline

Definition at line 92 of file SharedPool.h.

93  {
94  unref();
95  }

Member Function Documentation

template<class T, class RefcounterTraits = vsHashComp< T >>
const T& SharedPool< T, RefcounterTraits >::Reference::get ( ) const
inline

Definition at line 97 of file SharedPool.h.

Referenced by SharedPool< T, RefcounterTraits >::Reference::operator<(), SharedPool< T, RefcounterTraits >::Reference::operator=(), SharedPool< T, RefcounterTraits >::Reference::operator==(), and operator==().

98  {
99  static T empty_value;
100  return ( _rc && ( _it != _rc->end() ) ) ? _it->first : empty_value;
101  }
template<class T, class RefcounterTraits = vsHashComp< T >>
SharedPool< T, RefcounterTraits >::Reference::operator const T & ( ) const
inline

Definition at line 113 of file SharedPool.h.

114  {
115  return get();
116  }
template<class T, class RefcounterTraits = vsHashComp< T >>
bool SharedPool< T, RefcounterTraits >::Reference::operator!= ( const T &  s) const
inline

Definition at line 161 of file SharedPool.h.

162  {
163  return get() != s;
164  }
template<class T, class RefcounterTraits = vsHashComp< T >>
bool SharedPool< T, RefcounterTraits >::Reference::operator!= ( const Reference r) const
inline

Definition at line 166 of file SharedPool.h.

167  {
168  return !(*this == r);
169  }
template<class T, class RefcounterTraits = vsHashComp< T >>
bool SharedPool< T, RefcounterTraits >::Reference::operator< ( const T &  s) const
inline

Definition at line 151 of file SharedPool.h.

152  {
153  return get() < s;
154  }
template<class T, class RefcounterTraits = vsHashComp< T >>
bool SharedPool< T, RefcounterTraits >::Reference::operator< ( const Reference r) const
inline

Definition at line 156 of file SharedPool.h.

References SharedPool< T, RefcounterTraits >::Reference::get().

157  {
158  return get() < r.get();
159  }
template<class T, class RefcounterTraits = vsHashComp< T >>
Reference& SharedPool< T, RefcounterTraits >::Reference::operator= ( const T &  s)
inline

Definition at line 118 of file SharedPool.h.

References SharedPool< T, RefcounterTraits >::Reference::set().

119  {
120  return set( s );
121  }
template<class T, class RefcounterTraits = vsHashComp< T >>
Reference& SharedPool< T, RefcounterTraits >::Reference::operator= ( const Reference s)
inline

Definition at line 123 of file SharedPool.h.

References SharedPool< T, RefcounterTraits >::Reference::get(), and SharedPool< T, RefcounterTraits >::Reference::set().

124  {
125  if (this == &s)
126  return *this;
127  if (s._rc == _rc) {
128  unref();
129  _it = s._it;
130  ref();
131  } else {
132  set( s.get() );
133  }
134  return *this;
135  }
template<class T, class RefcounterTraits = vsHashComp< T >>
bool SharedPool< T, RefcounterTraits >::Reference::operator== ( const T &  s) const
inline

Definition at line 137 of file SharedPool.h.

138  {
139  return get() == s;
140  }
template<class T, class RefcounterTraits = vsHashComp< T >>
bool SharedPool< T, RefcounterTraits >::Reference::operator== ( const Reference r) const
inline

Definition at line 142 of file SharedPool.h.

References SharedPool< T, RefcounterTraits >::Reference::get().

143  {
144  if ( _rc && (_rc == r._rc) )
145  return _it == r._it;
146 
147  else
148  return get() == r.get();
149  }
template<class T, class RefcounterTraits = vsHashComp< T >>
Reference& SharedPool< T, RefcounterTraits >::Reference::set ( const T &  s)
inline

Definition at line 103 of file SharedPool.h.

Referenced by SharedPool< T, RefcounterTraits >::Reference::operator=(), and SharedPool< T, RefcounterTraits >::Reference::Reference().

104  {
105  unref();
106  if (_rc) {
107  _it = _rc->insert( std::pair< T, unsigned int > ( s, 0 ) ).first;
108  ref();
109  }
110  return *this;
111  }

The documentation for this class was generated from the following file: