mirror of
https://github.com/boostorg/circular_buffer.git
synced 2026-01-29 07:22:16 +00:00
433 lines
46 KiB
HTML
433 lines
46 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||
<title>adaptor.hpp Source File</title>
|
||
<link href="stylesheet.css" rel="stylesheet" type="text/css">
|
||
</head>
|
||
<body>
|
||
<table ID="Table Header" border="1" bgcolor="#007F7F" cellpadding="2">
|
||
<tr>
|
||
<td bgcolor="#FFFFFF"><img src="../../../../c++boost.gif" width="277" height="86"></td>
|
||
<td><a href="http://boost.org"><font face="Arial" color="FFFFFF"><big>Home</big></font></a></td>
|
||
<td><a href="http://boost.org/libs/libraries.htm"><font face="Arial" color="FFFFFF"><big>Libraries</big></font></a></td>
|
||
<td><a href="http://boost.org/people/people.htm"><font face="Arial" color="FFFFFF"><big>People</big></font></a></td>
|
||
<td><a href="http://boost.org/more/faq.htm"><font face="Arial" color="FFFFFF"><big>FAQ</big></font></a></td>
|
||
<td><a href="http://boost.org/more/index.htm"><font face="Arial" color="FFFFFF"><big>More</big></font></a></td>
|
||
</tr>
|
||
</table>
|
||
<br>
|
||
<!-- Generated by Doxygen 1.3.5 -->
|
||
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div>
|
||
<h1>adaptor.hpp</h1><div class="fragment"><pre>00001 <span class="comment">// Implementation of the circular buffer adaptor.</span>
|
||
00002
|
||
00003 <span class="comment">// Copyright (c) 2003-2004 Jan Gaspar</span>
|
||
00004
|
||
00005 <span class="comment">// Use, modification, and distribution is subject to the Boost Software</span>
|
||
00006 <span class="comment">// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
|
||
00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
|
||
00008
|
||
00009 <span class="preprocessor">#if !defined(BOOST_CIRCULAR_BUFFER_ADAPTOR_HPP)</span>
|
||
00010 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_CIRCULAR_BUFFER_ADAPTOR_HPP</span>
|
||
00011 <span class="preprocessor"></span>
|
||
00012 <span class="preprocessor">#if defined(_MSC_VER) && _MSC_VER >= 1200</span>
|
||
00013 <span class="preprocessor"></span><span class="preprocessor"> #pragma once</span>
|
||
00014 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
|
||
00015 <span class="preprocessor"></span>
|
||
00016 <span class="keyword">namespace </span>boost {
|
||
00017
|
||
00031 <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
<a name="l00032"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html">00032</a> <span class="keyword">class </span><a class="code" href="classboost_1_1circular__buffer__space__optimized.html">circular_buffer_space_optimized</a> : <span class="keyword">private</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer</a><T, Alloc> {
|
||
00033 <span class="keyword">public</span>:
|
||
00034 <span class="comment">// Typedefs</span>
|
||
00035
|
||
<a name="l00036"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w0">00036</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::value_type</a> <a class="code" href="classboost_1_1circular__buffer.html">value_type</a>;
|
||
<a name="l00037"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w1">00037</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::pointer</a> <a class="code" href="classboost_1_1circular__buffer.html">pointer</a>;
|
||
<a name="l00038"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w2">00038</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::const_pointer</a> <a class="code" href="classboost_1_1circular__buffer.html">const_pointer</a>;
|
||
<a name="l00039"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w3">00039</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::reference</a> <a class="code" href="classboost_1_1circular__buffer.html">reference</a>;
|
||
<a name="l00040"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w4">00040</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::const_reference</a> <a class="code" href="classboost_1_1circular__buffer.html">const_reference</a>;
|
||
<a name="l00041"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w5">00041</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::size_type</a> <a class="code" href="classboost_1_1circular__buffer.html">size_type</a>;
|
||
<a name="l00042"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w6">00042</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::difference_type</a> <a class="code" href="classboost_1_1circular__buffer.html">difference_type</a>;
|
||
<a name="l00043"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w7">00043</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::allocator_type</a> <a class="code" href="classboost_1_1circular__buffer.html">allocator_type</a>;
|
||
00044 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::param_value_type</a> <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a>;
|
||
<a name="l00045"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w9">00045</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::const_iterator</a> <a class="code" href="classboost_1_1circular__buffer.html">const_iterator</a>;
|
||
<a name="l00046"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w10">00046</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::iterator</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a>;
|
||
<a name="l00047"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w11">00047</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::const_reverse_iterator</a> <a class="code" href="classboost_1_1circular__buffer.html">const_reverse_iterator</a>;
|
||
<a name="l00048"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w12">00048</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a><a class="code" href="classboost_1_1circular__buffer.html">::reverse_iterator</a> <a class="code" href="classboost_1_1circular__buffer.html">reverse_iterator</a>;
|
||
00049
|
||
00050 <span class="comment">// Inherited</span>
|
||
00051
|
||
00052 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::get_allocator;
|
||
00053 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::begin;
|
||
00054 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::end;
|
||
00055 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::rbegin;
|
||
00056 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::rend;
|
||
00057 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::at;
|
||
00058 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::front;
|
||
00059 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::back;
|
||
00060 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::data;
|
||
00061 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::size;
|
||
00062 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::max_size;
|
||
00063 <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::empty;
|
||
00064
|
||
00065 <span class="preprocessor">#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))</span>
|
||
<a name="l00066"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a0">00066</a> <span class="preprocessor"></span> <a class="code" href="classboost_1_1circular__buffer.html">reference</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a0">operator [] </a>(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> n) { <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::operator[]</a>(n); }
|
||
<a name="l00067"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a1">00067</a> return_value_type <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a0">operator [] </a>(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::operator[]</a>(n); }
|
||
00068 <span class="preprocessor">#else</span>
|
||
00069 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc></a>::operator[];
|
||
00070 <span class="preprocessor">#endif</span>
|
||
00071 <span class="preprocessor"></span>
|
||
00072 <span class="keyword">private</span>:
|
||
00073 <span class="comment">// Member variables</span>
|
||
00074
|
||
00076 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> m_capacity;
|
||
00077
|
||
00079 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> m_min_capacity;
|
||
00080
|
||
00081 <span class="keyword">public</span>:
|
||
00082 <span class="comment">// Overridden</span>
|
||
00083
|
||
<a name="l00085"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a2">00085</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a2">full</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html#a19">size</a>() == <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">capacity</a>(); }
|
||
00086
|
||
00088
|
||
<a name="l00091"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a3">00091</a> <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a3">min_capacity</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_min_capacity; }
|
||
00092
|
||
00094
|
||
<a name="l00102"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a4">00102</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a4">set_min_capacity</a>(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> new_min_capacity) {
|
||
00103 BOOST_CB_ASSERT(<a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">capacity</a>() >= new_min_capacity); <span class="comment">// check for too large new min_capacity</span>
|
||
00104 m_min_capacity = new_min_capacity;
|
||
00105 <span class="keywordflow">if</span> (new_min_capacity > <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::capacity</a>())
|
||
00106 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::set_capacity</a>(new_min_capacity);
|
||
00107 <span class="keywordflow">else</span>
|
||
00108 check_high_capacity();
|
||
00109 }
|
||
00110
|
||
<a name="l00112"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">00112</a> <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">capacity</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_capacity; }
|
||
00113
|
||
00114 <span class="preprocessor">#if defined(BOOST_CB_TEST)</span>
|
||
00115 <span class="preprocessor"></span>
|
||
00117
|
||
<a name="l00121"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a6">00121</a> <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a6">internal_capacity</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::capacity</a>(); }
|
||
00122
|
||
00123 <span class="preprocessor">#endif // #if defined(BOOST_CB_TEST)</span>
|
||
00124 <span class="preprocessor"></span>
|
||
00126
|
||
<a name="l00132"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a7">00132</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a7">set_capacity</a>(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> new_capacity, <span class="keywordtype">bool</span> remove_front = <span class="keyword">true</span>) {
|
||
00133 BOOST_CB_ASSERT(new_capacity >= <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a3">min_capacity</a>()); <span class="comment">// check for too low new capacity</span>
|
||
00134 <span class="keywordflow">if</span> (new_capacity < circular_buffer<T, Alloc>::capacity())
|
||
00135 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::set_capacity</a>(new_capacity, remove_front);
|
||
00136 m_capacity = new_capacity;
|
||
00137 }
|
||
00138
|
||
<a name="l00140"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a8">00140</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a8">resize</a>(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> new_size, <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item = T(), <span class="keywordtype">bool</span> remove_front = <span class="keyword">true</span>) {
|
||
00141 <span class="keywordflow">if</span> (new_size > <a class="code" href="classboost_1_1circular__buffer.html#a19">size</a>()) {
|
||
00142 <span class="keywordflow">if</span> (new_size > <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">capacity</a>())
|
||
00143 m_capacity = new_size;
|
||
00144 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(<a class="code" href="classboost_1_1circular__buffer.html#a3">end</a>(), new_size - <a class="code" href="classboost_1_1circular__buffer.html#a19">size</a>(), item);
|
||
00145 } <span class="keywordflow">else</span> {
|
||
00146 <span class="keywordflow">if</span> (remove_front)
|
||
00147 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a29">erase</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>(), <a class="code" href="classboost_1_1circular__buffer.html#a3">end</a>() - new_size);
|
||
00148 <span class="keywordflow">else</span>
|
||
00149 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a29">erase</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + new_size, <a class="code" href="classboost_1_1circular__buffer.html#a3">end</a>());
|
||
00150 }
|
||
00151 }
|
||
00152
|
||
00154
|
||
<a name="l00167"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a9">00167</a> <span class="keyword">explicit</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a9">circular_buffer_space_optimized</a>(
|
||
00168 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> capacity,
|
||
00169 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> min_capacity = 0,
|
||
00170 <span class="keyword">const</span> <a class="code" href="classboost_1_1circular__buffer.html">allocator_type</a>& alloc = <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w7">allocator_type</a>())
|
||
00171 : <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer</a><T, Alloc>(min_capacity, alloc)
|
||
00172 , m_capacity(capacity)
|
||
00173 , m_min_capacity(min_capacity) {
|
||
00174 BOOST_CB_ASSERT(capacity >= min_capacity); <span class="comment">// check for capacity lower than min_capacity</span>
|
||
00175 }
|
||
00176
|
||
00178
|
||
<a name="l00192"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a10">00192</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a9">circular_buffer_space_optimized</a>(
|
||
00193 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> capacity,
|
||
00194 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> min_capacity,
|
||
00195 <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item,
|
||
00196 <span class="keyword">const</span> <a class="code" href="classboost_1_1circular__buffer.html">allocator_type</a>& alloc = <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w7">allocator_type</a>())
|
||
00197 : <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer</a><T, Alloc>(capacity, item, alloc)
|
||
00198 , m_capacity(capacity)
|
||
00199 , m_min_capacity(min_capacity) {
|
||
00200 BOOST_CB_ASSERT(capacity >= min_capacity); <span class="comment">// check for capacity lower than min_capacity</span>
|
||
00201 }
|
||
00202
|
||
00203 <span class="comment">// Default copy constructor</span>
|
||
00204
|
||
00206
|
||
00227 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
<a name="l00228"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a11">00228</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a9">circular_buffer_space_optimized</a>(
|
||
00229 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> capacity,
|
||
00230 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> min_capacity,
|
||
00231 InputIterator first,
|
||
00232 InputIterator last,
|
||
00233 <span class="keyword">const</span> <a class="code" href="classboost_1_1circular__buffer.html">allocator_type</a>& alloc = <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w7">allocator_type</a>())
|
||
00234 : <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer</a><T, Alloc>(
|
||
00235 init_capacity(capacity, min_capacity, first, last), first, last, alloc)
|
||
00236 , m_capacity(capacity)
|
||
00237 , m_min_capacity(min_capacity) {
|
||
00238 BOOST_CB_ASSERT(capacity >= min_capacity); <span class="comment">// check for capacity lower than min_capacity</span>
|
||
00239 BOOST_CB_ASSERT(std::distance(first, last) >= 0); <span class="comment">// check for wrong range</span>
|
||
00240 }
|
||
00241
|
||
00242 <span class="comment">// Default destructor</span>
|
||
00243
|
||
00244 <span class="comment">// Default assign operator</span>
|
||
00245
|
||
<a name="l00247"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a12">00247</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a12">assign</a>(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> n, <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00248 <span class="keywordflow">if</span> (n > m_capacity)
|
||
00249 m_capacity = n;
|
||
00250 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::assign</a>(n, item);
|
||
00251 }
|
||
00252
|
||
00254 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
<a name="l00255"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a13">00255</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a12">assign</a>(InputIterator first, InputIterator last) {
|
||
00256 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::assign</a>(first, last);
|
||
00257 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> capacity = <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::capacity</a>();
|
||
00258 <span class="keywordflow">if</span> (capacity > m_capacity)
|
||
00259 m_capacity = capacity;
|
||
00260 }
|
||
00261
|
||
<a name="l00263"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a14">00263</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a14">swap</a>(<a class="code" href="classboost_1_1circular__buffer__space__optimized.html">circular_buffer_space_optimized</a>& cb) {
|
||
00264 std::swap(m_capacity, cb.<a class="code" href="classboost_1_1circular__buffer__space__optimized.html#r0">m_capacity</a>);
|
||
00265 std::swap(m_min_capacity, cb.<a class="code" href="classboost_1_1circular__buffer__space__optimized.html#r1">m_min_capacity</a>);
|
||
00266 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::swap</a>(cb);
|
||
00267 }
|
||
00268
|
||
00270
|
||
<a name="l00275"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a15">00275</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a16">push_back</a>(<a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00276 check_low_capacity();
|
||
00277 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::push_back</a>(item);
|
||
00278 }
|
||
00279
|
||
00281
|
||
<a name="l00286"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a16">00286</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a16">push_back</a>() { <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a16">push_back</a>(<a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w0">value_type</a>()); }
|
||
00287
|
||
00289
|
||
<a name="l00294"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a17">00294</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a18">push_front</a>(<a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00295 check_low_capacity();
|
||
00296 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::push_front</a>(item);
|
||
00297 }
|
||
00298
|
||
00300
|
||
<a name="l00305"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a18">00305</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a18">push_front</a>() { <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a18">push_front</a>(<a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w0">value_type</a>()); }
|
||
00306
|
||
00308
|
||
<a name="l00313"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a19">00313</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a19">pop_back</a>() {
|
||
00314 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::pop_back</a>();
|
||
00315 check_high_capacity();
|
||
00316 }
|
||
00317
|
||
00319
|
||
<a name="l00324"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a20">00324</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a20">pop_front</a>() {
|
||
00325 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::pop_front</a>();
|
||
00326 check_high_capacity();
|
||
00327 }
|
||
00328
|
||
00330
|
||
<a name="l00335"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">00335</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos, <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00336 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> index = pos - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00337 check_low_capacity();
|
||
00338 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::insert</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index, item);
|
||
00339 }
|
||
00340
|
||
00342
|
||
<a name="l00347"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a22">00347</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos) { <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(pos, <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w0">value_type</a>()); }
|
||
00348
|
||
00350
|
||
<a name="l00355"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a23">00355</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos, <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> n, <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00356 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> index = pos - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00357 check_low_capacity(n);
|
||
00358 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::insert</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index, n, item);
|
||
00359 }
|
||
00360
|
||
00362
|
||
00367 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
<a name="l00368"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a24">00368</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos, InputIterator first, InputIterator last) {
|
||
00369 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(pos, first, last, cb_details::cb_iterator_category_traits<InputIterator>::tag());
|
||
00370 }
|
||
00371
|
||
00373
|
||
<a name="l00378"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">00378</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos, <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00379 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> index = pos - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00380 check_low_capacity();
|
||
00381 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::rinsert</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index, item);
|
||
00382 }
|
||
00383
|
||
00385
|
||
<a name="l00390"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a26">00390</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos) { <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(pos, <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w0">value_type</a>()); }
|
||
00391
|
||
00393
|
||
<a name="l00398"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a27">00398</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos, <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> n, <a class="code" href="classboost_1_1circular__buffer.html">param_value_type</a> item) {
|
||
00399 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> index = pos - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00400 check_low_capacity(n);
|
||
00401 <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::rinsert</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index, n, item);
|
||
00402 }
|
||
00403
|
||
00405
|
||
00410 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
<a name="l00411"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a28">00411</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos, InputIterator first, InputIterator last) {
|
||
00412 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(pos, first, last, cb_details::cb_iterator_category_traits<InputIterator>::tag());
|
||
00413 }
|
||
00414
|
||
00416
|
||
<a name="l00421"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a29">00421</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a29">erase</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> pos) {
|
||
00422 <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> it = <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::erase</a>(pos);
|
||
00423 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> index = it - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00424 check_high_capacity();
|
||
00425 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index;
|
||
00426 }
|
||
00427
|
||
00429
|
||
<a name="l00434"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a30">00434</a> <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a29">erase</a>(<a class="code" href="classboost_1_1circular__buffer.html">iterator</a> first, <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> last) {
|
||
00435 <a class="code" href="classboost_1_1circular__buffer.html">iterator</a> it = <a class="code" href="classboost_1_1circular__buffer.html">circular_buffer<T, Alloc>::erase</a>(first, last);
|
||
00436 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> index = it - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00437 check_high_capacity();
|
||
00438 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index;
|
||
00439 }
|
||
00440
|
||
<a name="l00442"></a><a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a31">00442</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a31">clear</a>() { <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a29">erase</a>(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>(), <a class="code" href="classboost_1_1circular__buffer.html#a3">end</a>()); }
|
||
00443
|
||
00444 <span class="keyword">private</span>:
|
||
00445 <span class="comment">// Helper methods</span>
|
||
00446
|
||
00448 <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> ensure_reserve(<a class="code" href="classboost_1_1circular__buffer.html">size_type</a> new_capacity, <a class="code" href="classboost_1_1circular__buffer.html">size_type</a> size)<span class="keyword"> const </span>{
|
||
00449 <span class="keywordflow">if</span> (size + new_capacity / 5 >= new_capacity)
|
||
00450 new_capacity *= 2; <span class="comment">// ensure at least 20% reserve</span>
|
||
00451 <span class="keywordflow">if</span> (new_capacity > <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">capacity</a>())
|
||
00452 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a5">capacity</a>();
|
||
00453 <span class="keywordflow">return</span> new_capacity;
|
||
00454 }
|
||
00455
|
||
00457 <span class="comment">/*</span>
|
||
00458 <span class="comment"> \post If the capacity is low it will be increased.</span>
|
||
00459 <span class="comment"> */</span>
|
||
00460 <span class="keywordtype">void</span> check_low_capacity(size_type n = 1) {
|
||
00461 size_type new_size = <a class="code" href="classboost_1_1circular__buffer.html#a19">size</a>() + n;
|
||
00462 size_type new_capacity = circular_buffer<T, Alloc>::capacity();
|
||
00463 <span class="keywordflow">if</span> (new_size > new_capacity) {
|
||
00464 <span class="keywordflow">if</span> (new_capacity == 0)
|
||
00465 new_capacity = 1;
|
||
00466 <span class="keywordflow">for</span> (; new_size > new_capacity; new_capacity *= 2);
|
||
00467 circular_buffer<T, Alloc>::set_capacity(
|
||
00468 ensure_reserve(new_capacity, new_size));
|
||
00469 }
|
||
00470 }
|
||
00471
|
||
00473 <span class="comment">/*</span>
|
||
00474 <span class="comment"> \post If the capacity is high it will be decreased.</span>
|
||
00475 <span class="comment"> */</span>
|
||
00476 <span class="keywordtype">void</span> check_high_capacity() {
|
||
00477 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w5">size_type</a> new_capacity = circular_buffer<T, Alloc>::capacity();
|
||
00478 <span class="keywordflow">while</span> (new_capacity / 3 >= <a class="code" href="classboost_1_1circular__buffer.html#a19">size</a>()) { <span class="comment">// (new_capacity / 3) -> avoid oscillations</span>
|
||
00479 new_capacity /= 2;
|
||
00480 <span class="keywordflow">if</span> (new_capacity <= <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a3">min_capacity</a>()) {
|
||
00481 new_capacity = <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a3">min_capacity</a>();
|
||
00482 <span class="keywordflow">break</span>;
|
||
00483 }
|
||
00484 }
|
||
00485 circular_buffer<T, Alloc>::set_capacity(
|
||
00486 ensure_reserve(new_capacity, <a class="code" href="classboost_1_1circular__buffer.html#a19">size</a>()));
|
||
00487 }
|
||
00488
|
||
00490 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
00491 <span class="keyword">static</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w5">size_type</a> init_capacity(size_type capacity, size_type min_capacity, InputIterator first, InputIterator last) {
|
||
00492 BOOST_CB_IS_CONVERTIBLE(InputIterator, value_type);
|
||
00493 <span class="keywordflow">return</span> std::min(capacity, std::max(min_capacity,
|
||
00494 static_cast<size_type>(std::distance(first, last))));
|
||
00495 }
|
||
00496
|
||
00498 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
00499 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(iterator pos, InputIterator n, InputIterator item, cb_details::cb_int_iterator_tag) {
|
||
00500 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(pos, (size_type)n, item);
|
||
00501 }
|
||
00502
|
||
00504 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
00505 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a21">insert</a>(iterator pos, InputIterator first, InputIterator last, std::input_iterator_tag) {
|
||
00506 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w5">size_type</a> index = pos - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00507 check_low_capacity(std::distance(first, last));
|
||
00508 circular_buffer<T, Alloc>::insert(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index, first, last);
|
||
00509 }
|
||
00510
|
||
00512 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
00513 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(iterator pos, InputIterator n, InputIterator item, cb_details::cb_int_iterator_tag) {
|
||
00514 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(pos, (size_type)n, item);
|
||
00515 }
|
||
00516
|
||
00518 <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator>
|
||
00519 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#a25">rinsert</a>(iterator pos, InputIterator first, InputIterator last, std::input_iterator_tag) {
|
||
00520 <a class="code" href="classboost_1_1circular__buffer__space__optimized.html#w5">size_type</a> index = pos - <a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>();
|
||
00521 check_low_capacity(std::distance(first, last));
|
||
00522 circular_buffer<T, Alloc>::rinsert(<a class="code" href="classboost_1_1circular__buffer.html#a2">begin</a>() + index, first, last);
|
||
00523 }
|
||
00524 };
|
||
00525
|
||
00526 <span class="comment">// Non-member functions</span>
|
||
00527
|
||
00529 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00530 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00531 <span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00532 <span class="keywordflow">return</span> lhs.size() == rhs.size() &&
|
||
00533 std::equal(lhs.begin(), lhs.end(), rhs.begin());
|
||
00534 }
|
||
00535
|
||
00537 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00538 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator < (const circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00539 <span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00540 <span class="keywordflow">return</span> std::lexicographical_compare(
|
||
00541 lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
|
||
00542 }
|
||
00543
|
||
00544 <span class="preprocessor">#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))</span>
|
||
00545 <span class="preprocessor"></span>
|
||
00547 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00548 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00549 <span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00550 <span class="keywordflow">return</span> !(lhs == rhs);
|
||
00551 }
|
||
00552
|
||
00554 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00555 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator > (<span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00556 <span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00557 <span class="keywordflow">return</span> rhs < lhs;
|
||
00558 }
|
||
00559
|
||
00561 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00562 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator <= (const circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00563 <span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00564 <span class="keywordflow">return</span> !(rhs < lhs);
|
||
00565 }
|
||
00566
|
||
00568 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00569 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator >= (<span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00570 <span class="keyword">const</span> circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00571 <span class="keywordflow">return</span> !(lhs < rhs);
|
||
00572 }
|
||
00573
|
||
00575 <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc>
|
||
00576 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(circular_buffer_space_optimized<T, Alloc>& lhs,
|
||
00577 circular_buffer_space_optimized<T, Alloc>& rhs) {
|
||
00578 lhs.swap(rhs);
|
||
00579 }
|
||
00580
|
||
00581 <span class="preprocessor">#endif // #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))</span>
|
||
00582 <span class="preprocessor"></span>
|
||
00583 } <span class="comment">// namespace boost</span>
|
||
00584
|
||
00585 <span class="preprocessor">#endif // #if !defined(BOOST_CIRCULAR_BUFFER_ADAPTOR_HPP)</span>
|
||
</pre></div><hr>
|
||
<table id="Table Footer" width="100%" border="0">
|
||
<tr>
|
||
<td valign="top"><small>Copyright <20> 2003-2004 <A href="mailto:jano_gaspar[at]yahoo.com">Jan
|
||
Gaspar</A></small></td>
|
||
<td align="center"><img width="277" height="86" src="../../../../c++boost.gif"></td>
|
||
<td align="right" valign="top"><small>Generated by <a href="http://www.doxygen.org">doxygen
|
||
1.3.5</a>.</small></td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html>
|