csWeakRef< T > Class Template Reference (Crystal Space 2.0 Public API Reference)

| ## Public API Reference

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Friends
csWeakRef< T > Class Template Reference

A weak reference. More...

`#include <csutil/weakref.h>`

List of all members.

## Public Member Functions
| csWeakRef ()
| Construct an empty weak reference.
| csWeakRef (T *newobj)
| Construct a weak reference from a normal pointer.
| csWeakRef (csRef< T > const &newobj)
| Construct a weak reference from a csRef<>.
| csWeakRef (csWeakRef const &other)
| Weak pointer copy constructor.
| csWeakRef (const csPtr< T > &newobj)
| Construct a weak reference from a csPtr.
uint | GetHash () const
| Return a hash value for this smart pointer.
bool | IsValid () const
| Weak pointer validity check.
| operator T * () const
| Cast weak reference to a pointer to the underlying object.
T & | operator* () const
| Dereference underlying object.
T * | operator-> () const
| Dereference underlying object.
csWeakRef & | operator= (T *newobj)
| Assign a raw object reference to this weak reference.
csWeakRef & | operator= (csRef< T > const &newobj)
| Assign a csRef<> to this weak reference.
csWeakRef & | operator= (csPtr< T > newobj)
| Assign a csPtr reference to this weak reference.
csWeakRef & | operator= (csWeakRef const &other)
| Assign another object to this weak reference.
| ~csWeakRef ()
| Weak pointer destructor.
## Friends
bool | operator!= (const csWeakRef &r1, const csWeakRef &r2)
| Test if the two references point to different object.
bool | operator!= (const csWeakRef &r1, T *obj)
| Test if object pointed to by reference is different from obj.
bool | operator!= (T *obj, const csWeakRef &r1)
| Test if object pointed to by reference is different from obj.
bool | operator== (const csWeakRef &r1, const csWeakRef &r2)
| Test if the two references point to same object.
bool | operator== (const csWeakRef &r1, T *obj)
| Test if object pointed to by reference is same as obj.
bool | operator== (T *obj, const csWeakRef &r1)
| Test if object pointed to by reference is same as obj.

## Detailed Description

### template<class T>
class csWeakRef< T >

A weak reference.

This is a reference to a reference counted object but in itself it doesn't increment the ref counter. As soon as the object is destroyed (i.e. the last REAL reference to it is removed) all weak references pointing to that object are cleared. This kind of reference is useful if you want to maintain some kind of cached objects that can safely be removed as soon as the last reference to it is gone.

Note: this class assumes that the T type implements at least the following functions:

- AddRefOwner()
- RemoveRefOwner()

Remarks:
  An extended explanation on smart pointers - how they work and what type to use in what scenario - is contained in the User's manual, section "Correctly Using Smart Pointers".

Definition at line 50 of file weakref.h.

## Constructor & Destructor Documentation

template<class T>

csWeakRef< T >::csWeakRef | ( |  | ) | `[inline]`

Construct an empty weak reference.

Definition at line 84 of file weakref.h.

template<class T>

csWeakRef< T >::csWeakRef | ( | T * | newobj | ) | `[inline]`

Construct a weak reference from a normal pointer.

Definition at line 94 of file weakref.h.

template<class T>

csWeakRef< T >::csWeakRef | ( | csRef< T > const & | newobj | ) | `[inline]`

Construct a weak reference from a csRef<>.

Definition at line 106 of file weakref.h.

template<class T>

csWeakRef< T >::csWeakRef | ( | csWeakRef< T > const & | other | ) | `[inline]`

Weak pointer copy constructor.

Definition at line 118 of file weakref.h.

template<class T>

csWeakRef< T >::csWeakRef | ( | const csPtr< T > & | newobj | ) | `[inline]`

Construct a weak reference from a csPtr.

This will put the object in the weak reference and then it will release the reference.

Definition at line 130 of file weakref.h.

template<class T>

csWeakRef< T >::~csWeakRef | ( |  | ) | `[inline]`

Weak pointer destructor.

Definition at line 143 of file weakref.h.

## Member Function Documentation

template<class T>

uint csWeakRef< T >::GetHash | ( |  | ) | const`[inline]`

Return a hash value for this smart pointer.

Definition at line 256 of file weakref.h.

template<class T>

bool csWeakRef< T >::IsValid | ( |  | ) | const`[inline]`

Weak pointer validity check.

Returns true if weak reference is pointing at an actual object, otherwise returns false.

Definition at line 252 of file weakref.h.

template<class T>

csWeakRef< T >::operator T * | ( |  | ) | const`[inline]`

Cast weak reference to a pointer to the underlying object.

Definition at line 241 of file weakref.h.

template<class T>

T& csWeakRef< T >::operator* | ( |  | ) | const`[inline]`

Dereference underlying object.

Definition at line 245 of file weakref.h.

template<class T>

T* csWeakRef< T >::operator-> | ( |  | ) | const`[inline]`

Dereference underlying object.

Definition at line 237 of file weakref.h.

template<class T>

csWeakRef& csWeakRef< T >::operator= | ( | T * | newobj | ) | `[inline]`

Assign a raw object reference to this weak reference.

Definition at line 155 of file weakref.h.

template<class T>

csWeakRef& csWeakRef< T >::operator= | ( | csRef< T > const & | newobj | ) | `[inline]`

Assign a csRef<> to this weak reference.

Definition at line 169 of file weakref.h.

template<class T>

csWeakRef& csWeakRef< T >::operator= | ( | csPtr< T > | newobj | ) | `[inline]`

Assign a csPtr reference to this weak reference.

This will cause a DecRef() on the pointer.

Definition at line 184 of file weakref.h.

template<class T>

csWeakRef& csWeakRef< T >::operator= | ( | csWeakRef< T > const & | other | ) | `[inline]`

Assign another object to this weak reference.

Definition at line 199 of file weakref.h.

## Friends And Related Function Documentation

template<class T>

bool operator!= | ( | const csWeakRef< T > & | r1,
|  | const csWeakRef< T > & | r2
| ) |  | `[friend]`

Test if the two references point to different object.

Definition at line 211 of file weakref.h.

template<class T>

bool operator!= | ( | const csWeakRef< T > & | r1,
|  | T * | obj
| ) |  | `[friend]`

Test if object pointed to by reference is different from obj.

Definition at line 221 of file weakref.h.

template<class T>

bool operator!= | ( | T * | obj,
|  | const csWeakRef< T > & | r1
| ) |  | `[friend]`

Test if object pointed to by reference is different from obj.

Definition at line 231 of file weakref.h.

template<class T>

bool operator== | ( | const csWeakRef< T > & | r1,
|  | const csWeakRef< T > & | r2
| ) |  | `[friend]`

Test if the two references point to same object.

Definition at line 206 of file weakref.h.

template<class T>

bool operator== | ( | const csWeakRef< T > & | r1,
|  | T * | obj
| ) |  | `[friend]`

Test if object pointed to by reference is same as obj.

Definition at line 216 of file weakref.h.

template<class T>

bool operator== | ( | T * | obj,
|  | const csWeakRef< T > & | r1
| ) |  | `[friend]`

Test if object pointed to by reference is same as obj.

Definition at line 226 of file weakref.h.

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

- csutil/weakref.h