Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

CTBsharedBuffer Class Template Reference

Buffer with share semantics. **. More...

#include "CTBsharedBuffer.hxx"

Inheritance diagram for CTBsharedBuffer:

Inheritance graph
[legend]
Collaboration diagram for CTBsharedBuffer:

Collaboration graph
[legend]
List of all members.

Public Methods

 CTBsharedBuffer ()
 CTBsharedBuffer (CTBint i_size)
 CTBsharedBuffer (const CTBsharedBuffer< T > &rhs)
 CTBsharedBuffer (CTBsharedBuffer< T > &rhs, bool b_grab)
 ~CTBsharedBuffer ()
TData () const
CTBint Size () const
const TAt (CTBint i_ind) const
TAt (CTBint i_ind)
void Release ()
void Unshare ()
void Resize (CTBint i_size, bool b_keep=true)
void Grab (CTBsharedBuffer< T > &rhs)
void SharedCopy (const CTBsharedBuffer< T > &rhs)
void PrivateCopy (const CTBsharedBuffer< T > &rhs)
bool IsNull () const
bool IsUnique () const
bool IsShared () const
void Dump (int i_indent=0, ostream &os=cout, const char *p_text=0) const
CTBsharedBuffer< T > & operator= (const CTBsharedBuffer< T > &rhs)
const Toperator[] (CTBint i_ind) const
Toperator[] (CTBint i_ind)
bool operator== (const CTBsharedBuffer< T > &rhs) const
bool operator! () const
 operator bool () const

Private Methods

void CreateBuffer (CTBint i_size)
void CopyData (const T rhs[], CTBint i_size)

Private Attributes

Tmp_data
CTBint mi_size
CTBreferenceCountermp_refcount

Detailed Description

template<class T>
class CTBsharedBuffer< T >

Buffer with share semantics. **.

Requirements:

Definition at line 20 of file CTBsharedBuffer.hxx.


Constructor & Destructor Documentation

template<class T>
CTBsharedBuffer< T >::CTBsharedBuffer [inline]
 

Construct empty.

Definition at line 18 of file CTBsharedBuffer.icc.

template<class T>
CTBsharedBuffer< T >::CTBsharedBuffer CTBint i_size [inline, explicit]
 

Construct with size i_size.

Definition at line 28 of file CTBsharedBuffer.icc.

template<class T>
CTBsharedBuffer< T >::CTBsharedBuffer const CTBsharedBuffer< T > & rhs [inline]
 

Copy constructor.

Definition at line 37 of file CTBsharedBuffer.icc.

template<class T>
CTBsharedBuffer< T >::CTBsharedBuffer CTBsharedBuffer< T > & rhs,
bool b_grab
 

Grab contructor.

Definition at line 49 of file CTBsharedBuffer.icc.

template<class T>
CTBsharedBuffer< T >::~CTBsharedBuffer [inline]
 

Destructor.

Definition at line 63 of file CTBsharedBuffer.icc.


Member Function Documentation

template<class T>
T * CTBsharedBuffer< T >::Data const [inline]
 

Returns pointer to buffer.

Definition at line 72 of file CTBsharedBuffer.icc.

Referenced by PrivateCopy(), Resize(), and Unshare().

template<class T>
CTBint CTBsharedBuffer< T >::Size const [inline]
 

Returns size of buffer.

Definition at line 81 of file CTBsharedBuffer.icc.

Referenced by CTBstring::Append(), CTBstring::AppendData(), CopyData(), CTBstring::EnsureUnsharedCapacity(), PrivateCopy(), Resize(), and Unshare().

template<class T>
const T & CTBsharedBuffer< T >::At CTBint i_ind const
 

Constant access buffer element.

Definition at line 36 of file CTBsharedBuffer.cxx.

Referenced by operator[]().

template<class T>
T & CTBsharedBuffer< T >::At CTBint i_ind
 

Access buffer element.

Definition at line 49 of file CTBsharedBuffer.cxx.

template<class T>
void CTBsharedBuffer< T >::Release
 

Release buffer.

Definition at line 62 of file CTBsharedBuffer.cxx.

Referenced by CTBstring::Clear(), Grab(), CTBstring::NewString(), PrivateCopy(), SharedCopy(), and ~CTBsharedBuffer().

template<class T>
void CTBsharedBuffer< T >::Unshare
 

Ensure that buffer isn't shared.

Definition at line 82 of file CTBsharedBuffer.cxx.

Referenced by PrivateCopy().

template<class T>
void CTBsharedBuffer< T >::Resize CTBint i_size,
bool b_keep = true
 

Change size of buffer.

Definition at line 98 of file CTBsharedBuffer.cxx.

Referenced by CTBstring::EnsureUnsharedCapacity().

template<class T>
void CTBsharedBuffer< T >::Grab CTBsharedBuffer< T > & rhs
 

Grab resources.

The context of rhs is transfered to this. rhs is afterward in IsNull() state.

Definition at line 122 of file CTBsharedBuffer.cxx.

Referenced by CTBstring::Grab().

template<class T>
void CTBsharedBuffer< T >::SharedCopy const CTBsharedBuffer< T > & rhs
 

Get a shared copy of rhs.

Definition at line 142 of file CTBsharedBuffer.cxx.

Referenced by operator=().

template<class T>
void CTBsharedBuffer< T >::PrivateCopy const CTBsharedBuffer< T > & rhs
 

Get a private (non-shared) copy of rhs.

Definition at line 160 of file CTBsharedBuffer.cxx.

template<class T>
bool CTBsharedBuffer< T >::IsNull const [inline]
 

Returns true if size = 0.

Definition at line 90 of file CTBsharedBuffer.icc.

Referenced by CTBstring::IsEmpty(), CTBstring::IsNull(), Resize(), CTBstring::Terminate(), and CTBstring::operator const char *().

template<class T>
bool CTBsharedBuffer< T >::IsUnique const [inline]
 

Returns true if size > 0 and not shared.

Definition at line 99 of file CTBsharedBuffer.icc.

Referenced by CTBstring::Append(), CTBstring::AppendData(), and CTBstring::Terminate().

template<class T>
bool CTBsharedBuffer< T >::IsShared const [inline]
 

Returns true if size > 0 and shared.

Definition at line 108 of file CTBsharedBuffer.icc.

Referenced by CTBstring::Clear(), CTBstring::EnsureUnsharedCapacity(), Resize(), CTBstring::Unshare(), and Unshare().

template<class T>
void CTBsharedBuffer< T >::Dump int i_indent = 0,
ostream & os = cout,
const char * p_text = 0
const
 

Dump.

Definition at line 178 of file CTBsharedBuffer.cxx.

Referenced by CTBstring::Dump().

template<class T>
CTBsharedBuffer< T > & CTBsharedBuffer< T >::operator= const CTBsharedBuffer< T > & rhs [inline]
 

Obtain a shared copy.

Definition at line 117 of file CTBsharedBuffer.icc.

template<class T>
const T & CTBsharedBuffer< T >::operator[] CTBint i_ind const [inline]
 

Constant access element (index checked if CTB__IndexCheck defined).

Definition at line 128 of file CTBsharedBuffer.icc.

template<class T>
T & CTBsharedBuffer< T >::operator[] CTBint i_ind [inline]
 

Access element (index checked if CTB__IndexCheck defined).

Definition at line 141 of file CTBsharedBuffer.icc.

template<class T>
bool CTBsharedBuffer< T >::operator== const CTBsharedBuffer< T > & rhs const [inline]
 

Returns true if same buffer.

Definition at line 154 of file CTBsharedBuffer.icc.

template<class T>
bool CTBsharedBuffer< T >::operator! const [inline]
 

Returns true size=0 (equivalent to IsNull() ).

Definition at line 163 of file CTBsharedBuffer.icc.

template<class T>
CTBsharedBuffer< T >::operator bool const [inline]
 

Returns true size!=0 and a buffer is allocated.

Definition at line 172 of file CTBsharedBuffer.icc.

template<class T>
void CTBsharedBuffer< T >::CreateBuffer CTBint i_size [private]
 

Create new buffer.

Definition at line 200 of file CTBsharedBuffer.cxx.

Referenced by CTBsharedBuffer(), PrivateCopy(), Resize(), and Unshare().

template<class T>
void CTBsharedBuffer< T >::CopyData const T rhs[],
CTBint i_size
[private]
 

Copy data elements.

Definition at line 219 of file CTBsharedBuffer.cxx.

Referenced by PrivateCopy(), Resize(), and Unshare().


Member Data Documentation

template<class T>
T* CTBsharedBuffer::mp_data [private]
 

buffer area.

Definition at line 69 of file CTBsharedBuffer.hxx.

template<class T>
CTBint CTBsharedBuffer::mi_size [private]
 

size of buffer.

Definition at line 70 of file CTBsharedBuffer.hxx.

template<class T>
CTBreferenceCounter* CTBsharedBuffer::mp_refcount [private]
 

pointer to reference count.

Definition at line 71 of file CTBsharedBuffer.hxx.


The documentation for this class was generated from the following files:
Generated at Fri Oct 24 18:14:05 2003 for CTBbase by doxygen1.2.9-20010812 written by Dimitri van Heesch, © 1997-2001