Edinburgh Speech Tools  2.1-release
EST_THandle< BoxT, ObjectT > Class Template Reference

#include <include/EST_THandle.h>

Public Member Functions

 EST_THandle (void)
 
 EST_THandle (BoxT *p)
 
 EST_THandle (const EST_THandle &cp)
 
 ~EST_THandle (void)
 
bool null () const
 
int shareing (void) const
 
EST_THandleoperator= (EST_THandle h)
 
EST_THandleoperator= (BoxT *t_ptr)
 
 operator ObjectT * ()
 
 operator const ObjectT * () const
 
int operator== (const BoxT *p) const
 
int operator!= (const BoxT *p) const
 
const ObjectT & operator* () const
 
ObjectT & operator* ()
 
const ObjectT * operator-> () const
 
ObjectT * operator-> ()
 

Friends

int operator== (const EST_THandle< BoxT, ObjectT > &a, const EST_THandle< BoxT, ObjectT > &b)
 
int operator!= (const EST_THandle< BoxT, ObjectT > &a, const EST_THandle< BoxT, ObjectT > &b)
 
std::ostream & operator<< (std::ostream &s, const EST_THandle< BoxT, ObjectT > &a)
 

Detailed Description

template<class BoxT, class ObjectT>
class EST_THandle< BoxT, ObjectT >

A `smart' pointer which does reference counting.

Behaves almost like a pointer as far as naive code is concerned, but keeps count of how many handles are holding on to the contents and deletes it when there are none.

You need to be careful there are no dumb C++ pointers to things which are being handled this way.

Things to be handled should implement the same interface as EST_Handleable (either by taking that as a superclass or by reimplementing it) and in addition define object_ptr(). See EST_TBox for an example.

There are two parameter types. In most cases the thing which contains the reference count and the data it represents will be the same object, but in the case of boxed values it may not be, so you can specify the type of both independently.

See also
EST_Handleable
EST_TBox
EST_THandle:example
Author
Richard Caley rjc@c.nosp@m.str..nosp@m.ed.ac.nosp@m..uk
Version
Id
EST_THandle.h,v 1.5 2006/07/19 21:52:12 awb Exp

Definition at line 70 of file EST_THandle.h.

Constructor & Destructor Documentation

template<class BoxT, class ObjectT>
EST_THandle< BoxT, ObjectT >::EST_THandle ( void  )
inline

Definition at line 77 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle< BoxT, ObjectT >::EST_THandle ( BoxT *  p)
inline

Definition at line 79 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle< BoxT, ObjectT >::EST_THandle ( const EST_THandle< BoxT, ObjectT > &  cp)
inline

Definition at line 81 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle< BoxT, ObjectT >::~EST_THandle ( void  )
inline

Definition at line 87 of file EST_THandle.h.

Member Function Documentation

template<class BoxT, class ObjectT>
bool EST_THandle< BoxT, ObjectT >::null ( ) const
inline

Definition at line 94 of file EST_THandle.h.

template<class BoxT, class ObjectT>
int EST_THandle< BoxT, ObjectT >::shareing ( void  ) const
inline

Definition at line 96 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle& EST_THandle< BoxT, ObjectT >::operator= ( EST_THandle< BoxT, ObjectT >  h)
inline

Definition at line 98 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle& EST_THandle< BoxT, ObjectT >::operator= ( BoxT *  t_ptr)
inline

Definition at line 113 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle< BoxT, ObjectT >::operator ObjectT * ( )
inline

Definition at line 125 of file EST_THandle.h.

template<class BoxT, class ObjectT>
EST_THandle< BoxT, ObjectT >::operator const ObjectT * ( ) const
inline

Definition at line 129 of file EST_THandle.h.

template<class BoxT, class ObjectT>
int EST_THandle< BoxT, ObjectT >::operator== ( const BoxT *  p) const
inline

Definition at line 134 of file EST_THandle.h.

template<class BoxT, class ObjectT>
int EST_THandle< BoxT, ObjectT >::operator!= ( const BoxT *  p) const
inline

Definition at line 135 of file EST_THandle.h.

template<class BoxT, class ObjectT>
const ObjectT& EST_THandle< BoxT, ObjectT >::operator* ( ) const
inline

Definition at line 137 of file EST_THandle.h.

template<class BoxT, class ObjectT>
ObjectT& EST_THandle< BoxT, ObjectT >::operator* ( )
inline

Definition at line 138 of file EST_THandle.h.

template<class BoxT, class ObjectT>
const ObjectT* EST_THandle< BoxT, ObjectT >::operator-> ( ) const
inline

Definition at line 139 of file EST_THandle.h.

template<class BoxT, class ObjectT>
ObjectT* EST_THandle< BoxT, ObjectT >::operator-> ( )
inline

Definition at line 140 of file EST_THandle.h.

Friends And Related Function Documentation

template<class BoxT, class ObjectT>
int operator== ( const EST_THandle< BoxT, ObjectT > &  a,
const EST_THandle< BoxT, ObjectT > &  b 
)
friend

Definition at line 142 of file EST_THandle.h.

template<class BoxT, class ObjectT>
int operator!= ( const EST_THandle< BoxT, ObjectT > &  a,
const EST_THandle< BoxT, ObjectT > &  b 
)
friend

Definition at line 144 of file EST_THandle.h.

template<class BoxT, class ObjectT>
std::ostream& operator<< ( std::ostream &  s,
const EST_THandle< BoxT, ObjectT > &  a 
)
friend

Definition at line 147 of file EST_THandle.h.


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