Gyoto::SmartPointer< T > Class Template Reference

Pointers performing reference counting. More...

`#include <GyotoSmartPointer.h>`

## Public Member Functions

| SmartPointer (T *orig=NULL)
| Constructor from a standard pointer-to-class.
| SmartPointer (const SmartPointer< T > &orig)
| Copy constructor from same type.
template<class U>
| SmartPointer (const SmartPointer< U > &orig)
| Copy constructor from compatible type (used for casting).
T & | operator* ()
| Dereference operator "*".
const T & | operator* () const
| Dereference operator "*".
T * | operator-> ()
| Dereference operator "->".
T * | operator-> () const
| Dereference operator "->" (const).
bool | operator== (const SmartPointer< T > &right)
| Comparison operator between two SmartPointer of same kind.
bool | operator!= (const SmartPointer< T > &right)
| Comparison operator between two SmartPointer of same kind.
SmartPointer< T > & | operator= (SmartPointer< T > &right)
| Copy a SmartPointer to another (already defined) SmartPointer of same kind.
SmartPointer< T > & | operator= (T *right)
| Copy a normal pointer to an (already defined) SmartPointer of same kind.
| operator T* () const
| Cast SmartPointer to normal pointer.
const T * | operator() () const
| Get standard, non-smart pointer to object. Use with care.

## Private Member Functions

void | decRef ()
| Decrement the reference counter. Warning: don't mess with it.

## Private Attributes

T * | obj
| Real pointer, don't mess with it.

## Detailed Description

template<class T>
class Gyoto::SmartPointer< T >

Pointers performing reference counting.

Pointee must inherit from class SmartPointee.

To create an object and a SmartPointer pointing to it:

SmartPointer<Gyoto::Metric::Generic> ObjPtr (new Gyoto::Metric(...));
Gyoto::SmartPointer::SmartPointer
SmartPointer(T *orig=NULL)
Constructor from a standard pointer-to-class.
Definition GyotoSmartPointer.h:169
Gyoto::Metric
Access to metrics.
Definition GyotoAstrobj.h:47

Template Parameters

  T | Sub-class of Gyoto::SmartPointee.

## Constructor & Destructor Documentation

## SmartPointer() [1/3]

template<class T>

Gyoto::SmartPointer< T >::SmartPointer | ( | T * | orig = NULL | ) |

inline

Constructor from a standard pointer-to-class.

Parameters

  orig | : a pointer to an instance of class T, created using new T().

Example:

SmartPointer<Gyoto::Metric::Generic> ObjPtr (new Gyoto::Metric(...)); // create SmartPointer ObjPtr

## SmartPointer() [2/3]

template<class T>

Gyoto::SmartPointer< T >::SmartPointer | ( | const SmartPointer< T > & | orig | ) |

inline

Copy constructor from same type.

Parameters

  orig | : a SmartPointer to an instance of class T

Example:

SmartPointer<Gyoto::Metric::Generic> ObjPtr (new Gyoto::Metric(...)); // create SmartPointer ObjPtr
SmartPointer<Gyoto::Metric::Generic> ObjPtr2 = ObjPtr; // create SmartPointer ObjPtr2

ObjPtr and ObjPtr2 point to the same instance of class T. Copying increments the reference counter.

## SmartPointer() [3/3]

template<class T>
template<class U>

Gyoto::SmartPointer< T >::SmartPointer | ( | const SmartPointer< U > & | orig | ) |

inline

Copy constructor from compatible type (used for casting).

Parameters

  orig | : a SmartPointer to an instance of another class U

Example: MetricPtr is a SmartPoiter<Metric>, but really points to an instance of the child class Gyoto::Kerr:

SmartPointer<Gyoto::Kerr> KerrPtr (MetricPtr);

MetricPtr and KerrPtr point to the same instance of class Kerr. The methods specific to class Kerr are available only to KerrPtr.

## Member Function Documentation

## operator()()

template<class T>

const T * Gyoto::SmartPointer< T >::operator() | ( |  | ) | const

inline

Get standard, non-smart pointer to object. Use with care.

This public method is needed to cast from a SmartPointer flavor to another. It should almost certainly never be used in user code, except perhaps for debugging purposes.

Returns
  usual pointer to object, T*.

## operator*() [1/2]

template<class T>

T & Gyoto::SmartPointer< T >::operator* | ( |  | ) |

inline

Dereference operator "*".

Returns
  address of the pointed-to-object

## operator*() [2/2]

template<class T>

const T & Gyoto::SmartPointer< T >::operator* | ( |  | ) | const

inline

Dereference operator "*".

Returns
  address of the pointed-to-object

## operator->() [1/2]

template<class T>

T * Gyoto::SmartPointer< T >::operator-> | ( |  | ) |

inline

Dereference operator "->".

Access to the pointed-to-object's members.

## operator->() [2/2]

template<class T>

T * Gyoto::SmartPointer< T >::operator-> | ( |  | ) | const

inline

Dereference operator "->" (const).

Access to the pointed-to-object's members.

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

- GyotoProperty.h
- GyotoSmartPointer.h