sc::Ref< T >(3)

NAME
sc::Ref< T > -

A template class that maintains references counts'.

SYNOPSIS

#include <ref.h>

Inherits sc::RefBase'.

  Public Member Functions
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 ()
Create a reference to the object a'.
T * operator-> () const
Returns the reference counted object'.
T * pointer () const
Returns a pointer the reference counted object'.
RefCount * parentpointer () 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'.
int null () const
Return 1 if this is a reference to a null object'.
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'.
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'.
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]

Create a reference to the object a'. Do a dynamic_cast to convert a to the appropiate type'. Create a reference to the object a'. Do a dynamic_cast to convert a to the appropiate type'. 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'.

Reimplemented in sc::RefSCDimension'.

  template<class T> template<class A > int sc::Ref< T >::operator== (const Ref< A > &a) const [inline]

A variety of ordering and equivalence operators are provided using the Identity class'.

Author

Generated automatically by Doxygen for MPQC from the source code'.