Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

temporary_buffer Class Template Reference

#include <stl_tempbuf.h>

Collaboration diagram for temporary_buffer:

Collaboration graph
[legend]
List of all members.

Public Methods

ptrdiff_t size () const
ptrdiff_t requested_size () const
T * begin ()
T * end ()
 temporary_buffer (ForwardIterator first, ForwardIterator last)
 ~temporary_buffer ()

Private Methods

void allocate_buffer ()
void initialize_buffer (const T &, __true_type)
void initialize_buffer (const T &val, __false_type)
 temporary_buffer (const temporary_buffer &)
void operator= (const temporary_buffer &)

Private Attributes

ptrdiff_t original_len
ptrdiff_t len
T * buffer

template<class ForwardIterator, class T>
class temporary_buffer< ForwardIterator, T >


Constructor & Destructor Documentation

template<class ForwardIterator, class T>
temporary_buffer< ForwardIterator, T >::temporary_buffer ForwardIterator    first,
ForwardIterator    last
[inline]
 

Definition at line 95 of file stl_tempbuf.h.

References __STL_TRY, __STL_UNWIND, allocate_buffer, buffer, distance, initialize_buffer, and len.

00095                                                                 {
00096     __STL_TRY {
00097       len = 0;
00098       distance(first, last, len);
00099       allocate_buffer();
00100       if (len > 0)
00101         initialize_buffer(*first,
00102                           typename __type_traits<T>::has_trivial_default_constructor());
00103     }
00104     __STL_UNWIND(free(buffer); buffer = 0; len = 0);
00105   }

template<class ForwardIterator, class T>
temporary_buffer< ForwardIterator, T >::~temporary_buffer   [inline]
 

Definition at line 107 of file stl_tempbuf.h.

References buffer, destroy, and len.

00107                       {  
00108     destroy(buffer, buffer + len);
00109     free(buffer);
00110   }

template<class ForwardIterator, class T>
temporary_buffer< ForwardIterator, T >::temporary_buffer const temporary_buffer< ForwardIterator, T > &    [inline, private]
 

Definition at line 113 of file stl_tempbuf.h.

00113 {}


Member Function Documentation

template<class ForwardIterator, class T>
void temporary_buffer< ForwardIterator, T >::allocate_buffer   [inline, private]
 

Definition at line 69 of file stl_tempbuf.h.

References buffer, len, and original_len.

Referenced by temporary_buffer.

00069                          {
00070     original_len = len;
00071     buffer = 0;
00072 
00073     if (len > (ptrdiff_t)(INT_MAX / sizeof(T)))
00074       len = INT_MAX / sizeof(T);
00075 
00076     while (len > 0) {
00077       buffer = (T*) malloc(len * sizeof(T));
00078       if (buffer)
00079         break;
00080       len /= 2;
00081     }
00082   }

template<class ForwardIterator, class T>
T* temporary_buffer< ForwardIterator, T >::begin   [inline]
 

Definition at line 92 of file stl_tempbuf.h.

References buffer.

Referenced by __inplace_merge_aux, __stable_partition_aux, and __stable_sort_aux.

00092 { return buffer; }

template<class ForwardIterator, class T>
T* temporary_buffer< ForwardIterator, T >::end   [inline]
 

Definition at line 93 of file stl_tempbuf.h.

References buffer, and len.

00093 { return buffer + len; }

template<class ForwardIterator, class T>
void temporary_buffer< ForwardIterator, T >::initialize_buffer const T &    val,
__false_type   
[inline, private]
 

Definition at line 85 of file stl_tempbuf.h.

References buffer, len, and uninitialized_fill_n.

00085                                                      {
00086     uninitialized_fill_n(buffer, len, val);
00087   }

template<class ForwardIterator, class T>
void temporary_buffer< ForwardIterator, T >::initialize_buffer const T &   ,
__true_type   
[inline, private]
 

Definition at line 84 of file stl_tempbuf.h.

Referenced by temporary_buffer.

00084 {}

template<class ForwardIterator, class T>
void temporary_buffer< ForwardIterator, T >::operator= const temporary_buffer< ForwardIterator, T > &    [inline, private]
 

Definition at line 114 of file stl_tempbuf.h.

00114 {}

template<class ForwardIterator, class T>
ptrdiff_t temporary_buffer< ForwardIterator, T >::requested_size   const [inline]
 

Definition at line 91 of file stl_tempbuf.h.

References original_len.

Referenced by __stable_partition_aux.

00091 { return original_len; }

template<class ForwardIterator, class T>
ptrdiff_t temporary_buffer< ForwardIterator, T >::size   const [inline]
 

Definition at line 90 of file stl_tempbuf.h.

References len.

Referenced by __inplace_merge_aux, __stable_partition_aux, and __stable_sort_aux.

00090 { return len; }


Member Data Documentation

template<class ForwardIterator, class T>
T* temporary_buffer::buffer [private]
 

Definition at line 67 of file stl_tempbuf.h.

Referenced by allocate_buffer, begin, end, initialize_buffer, temporary_buffer, and ~temporary_buffer.

template<class ForwardIterator, class T>
ptrdiff_t temporary_buffer::len [private]
 

Definition at line 66 of file stl_tempbuf.h.

Referenced by allocate_buffer, end, initialize_buffer, size, temporary_buffer, and ~temporary_buffer.

template<class ForwardIterator, class T>
ptrdiff_t temporary_buffer::original_len [private]
 

Definition at line 65 of file stl_tempbuf.h.

Referenced by allocate_buffer, and requested_size.


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

Documentation generated on Thu May 2 15:03:46 2002

Generated with doxygen 1.2.12 by Dimitri van Heesch ,   1997-2001