Edinburgh Speech Tools  2.4-release
 All Classes Functions Variables Typedefs Enumerations Enumerator Friends Pages
EST_THandle< BoxT, ObjectT > Class Template Reference

#include <include/EST_THandle.h>

Public Member Functions

 EST_THandle (BoxT *p)
 
 EST_THandle (const EST_THandle &cp)
 
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)
 
ostream & operator<< (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 71 of file EST_THandle.h.


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