Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members   Related Pages  

sc::Ref Class Template Reference

A template class that maintains references counts. More...

#include <ref.h>

Inheritance diagram for sc::Ref:

Inheritance graph
[legend]
Collaboration diagram for sc::Ref:

Collaboration graph
[legend]
List of all members.

Public Methods

 Ref ()
 Create a reference to a null object.

 Ref (T *a)
 Create a reference to the object a.

 Ref (const Ref< T > &a)
 Create a reference to the object referred to by a.

template<class A>  Ref (const Ref< A > &a)
 Create a reference to the object referred to by a.

 ~Ref ()
 Delete this reference to the object. More...

T * operator-> () const
 Returns the reference counted object. More...

T * pointer () const
 Returns a pointer the reference counted object.

RefCountparentpointer () const
 Implements the parentpointer pure virtual in the base class.

 operator T * () const
T & operator * () const
 Returns a C++ reference to the reference counted object. More...

int null () const
 Return 1 if this is a reference to a null object. More...

int nonnull () const
 Return !null().

template<class A> int operator== (const Ref< A > &a) const
 A variety of ordering and equivalence operators are provided using the Identity class.

template<class A> int operator>= (const Ref< A > &a) const
template<class A> int operator<= (const Ref< A > &a) const
template<class A> int operator> (const Ref< A > &a) const
template<class A> int operator< (const Ref< A > &a) const
template<class A> int operator!= (const Ref< A > &a) const
int compare (const Ref< T > &a) const
 Compare two objects returning -1, 0, or 1. More...

void clear ()
 Refer to the null object.

Ref< T > & operator= (const Ref< T > &c)
 Assignment to c.

template<class A> Ref< T > & operator= (const Ref< A > &c)
 Assignment to c.

Ref< T > & operator<< (const RefBase &a)
 Assignment to the object that a references using dynamic_cast.

Ref< T > & operator<< (RefCount *a)
 Assigns to the given base class pointer using dynamic_cast. More...

Ref< T > & operator= (T *cr)
 Assignment to cr.

void assign_pointer (T *cr)
 Assignment to cr.

void check_pointer () const
 Check the validity of the pointer.

void ref_info (std::ostream &os) const
 Print information about the reference to os.

void warn (const char *s) const
 Print a warning concerning the reference.


Detailed Description

template<class T>
class sc::Ref< T >

A template class that maintains references counts.

Several of these operations can cause a reference to an object to be replaced by a reference to a different object. If a reference to a nonnull object is eliminated, the object's reference count is decremented and the object is deleted if the reference count becomes zero.

There also may be a to convert to T*, where T is the type of the object which Ref references. Some compilers have bugs that prevent the use of operator T *(). The pointer() member should be used instead.


Constructor & Destructor Documentation

template<class T>
sc::Ref< T >::~Ref   [inline]
 

Delete this reference to the object.

Decrement the object's reference count and delete the object if the count is zero.


Member Function Documentation

template<class T>
int sc::Ref< T >::compare const Ref< T > &    a const [inline]
 

Compare two objects returning -1, 0, or 1.

Similar to the C library routine strcmp.

template<class T>
int sc::Ref< T >::null   const [inline]
 

Return 1 if this is a reference to a null object.

Otherwise return 0.

template<class T>
T& sc::Ref< T >::operator *   const [inline]
 

Returns a C++ reference to the reference counted object.

The behaviour is undefined if the object is null.

template<class T>
T* sc::Ref< T >::operator->   const [inline]
 

Returns the reference counted object.

The behaviour is undefined if the object is null.

template<class T>
Ref<T>& sc::Ref< T >::operator<< RefCount   a [inline]
 

Assigns to the given base class pointer using dynamic_cast.

If the dynamic_cast fails and the argument is nonnull and has a reference count of zero, then it is deleted.


The documentation for this class was generated from the following file:
Generated at Fri Jan 10 08:16:31 2003 for MPQC 2.1.3 using the documentation package Doxygen 1.2.14.