Update of /cvsroot/boost/boost/boost/circular_buffer
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2956/boost/circular_buffer
Modified Files:
details.hpp space_optimized.hpp
Log Message:
circular_buffer: fixed capacity_control member access
Index: details.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/circular_buffer/details.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- details.hpp 18 May 2007 11:18:00 -0000 1.1
+++ details.hpp 25 May 2007 12:39:58 -0000 1.2
@@ -135,11 +135,7 @@
\struct capacity_control
\brief Capacity controller of the space optimized circular buffer.
*/
-#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
-template <class Size, class T, class Alloc>
-#else
template <class Size>
-#endif
class capacity_control {
//! The capacity of the space optimized circular buffer.
@@ -148,12 +144,6 @@
//! The lowest guaranteed capacity of the adapted circular buffer.
Size m_min_capacity;
-#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
- friend circular_buffer_space_optimized<T, Alloc>;
-#else
- template <class T, class Alloc> friend class
circular_buffer_space_optimized;
-#endif
-
public:
//! Constructor.
Index: space_optimized.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/circular_buffer/space_optimized.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- space_optimized.hpp 23 May 2007 22:09:45 -0000 1.2
+++ space_optimized.hpp 25 May 2007 12:39:58 -0000 1.3
@@ -52,7 +52,6 @@
typedef typename circular_buffer<T, Alloc>::param_value_type
param_value_type;
typedef typename circular_buffer<T, Alloc>::return_value_type
return_value_type;
-#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
//! Capacity controller of the space optimized circular buffer.
/*!
<p><pre>
@@ -75,12 +74,7 @@
<code>size_type</code> which allows to treat the capacity of the
<code>circular_buffer_space_optimized</code>
the same way as in the <code><a
href="circular_buffer.html">circular_buffer</a></code>.</p>
*/
- typedef cb_details::capacity_control<size_type, T, Alloc> capacity_type;
-#else
- /*! \cond */
typedef cb_details::capacity_control<size_type> capacity_type;
- /*! \endcond */
-#endif // #if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
// Inherited
@@ -234,7 +228,7 @@
void resize(size_type new_size, param_value_type item = value_type()) {
if (new_size > size()) {
if (new_size > m_capacity_ctrl)
- m_capacity_ctrl.m_capacity = new_size;
+ m_capacity_ctrl = capacity_type(new_size,
m_capacity_ctrl.min_capacity());
insert(end(), new_size - size(), item);
} else {
erase(end() - (size() - new_size), end());
@@ -300,7 +294,7 @@
void rresize(size_type new_size, param_value_type item = value_type()) {
if (new_size > size()) {
if (new_size > m_capacity_ctrl)
- m_capacity_ctrl.m_capacity = new_size;
+ m_capacity_ctrl = capacity_type(new_size,
m_capacity_ctrl.min_capacity());
rinsert(begin(), new_size - size(), item);
} else {
rerase(begin(), end() - new_size);
@@ -337,7 +331,7 @@
explicit circular_buffer_space_optimized(
capacity_type capacity_ctrl,
const allocator_type& alloc = allocator_type())
- : circular_buffer<T, Alloc>(capacity_ctrl.m_min_capacity, alloc)
+ : circular_buffer<T, Alloc>(capacity_ctrl.min_capacity(), alloc)
, m_capacity_ctrl(capacity_ctrl) {}
/*! \brief Create a full space optimized circular buffer with the
specified capacity filled with
@@ -360,7 +354,7 @@
capacity_type capacity_ctrl,
param_value_type item,
const allocator_type& alloc = allocator_type())
- : circular_buffer<T, Alloc>(capacity_ctrl.m_capacity, item, alloc)
+ : circular_buffer<T, Alloc>(capacity_ctrl.capacity(), item, alloc)
, m_capacity_ctrl(capacity_ctrl) {}
/*! \brief Create a space optimized circular buffer with the specified
capacity filled with <code>n</code> copies
@@ -579,8 +573,7 @@
*/
void assign(size_type n, param_value_type item) {
circular_buffer<T, Alloc>::assign(n, item);
- m_capacity_ctrl.m_capacity = n;
- m_capacity_ctrl.m_min_capacity = 0;
+ m_capacity_ctrl = capacity_type(n);
}
//! Assign <code>n</code> items into the space optimized circular buffer
specifying the capacity.
@@ -610,8 +603,8 @@
<code>assign(capacity_type, InputIterator, InputIterator)</code>
*/
void assign(capacity_type capacity_ctrl, size_type n, param_value_type
item) {
- BOOST_CB_ASSERT(capacity_ctrl.m_capacity >= n); // check for new
capacity lower than n
- circular_buffer<T,
Alloc>::assign(std::max(capacity_ctrl.m_min_capacity, n), n, item);
+ BOOST_CB_ASSERT(capacity_ctrl.capacity() >= n); // check for new
capacity lower than n
+ circular_buffer<T,
Alloc>::assign(std::max(capacity_ctrl.min_capacity(), n), n, item);
m_capacity_ctrl = capacity_ctrl;
}
@@ -647,8 +640,7 @@
template <class InputIterator>
void assign(InputIterator first, InputIterator last) {
circular_buffer<T, Alloc>::assign(first, last);
- m_capacity_ctrl.m_capacity = circular_buffer<T, Alloc>::capacity();
- m_capacity_ctrl.m_min_capacity = 0;
+ m_capacity_ctrl = capacity_type(circular_buffer<T, Alloc>::capacity());
}
//! Assign a copy of the range into the space optimized circular buffer
specifying the capacity.
@@ -1264,8 +1256,8 @@
size_type new_capacity = circular_buffer<T, Alloc>::capacity();
while (new_capacity / 3 >= size()) { // (new_capacity / 3) -> avoid
oscillations
new_capacity /= 2;
- if (new_capacity <= m_capacity_ctrl.m_min_capacity) {
- new_capacity = m_capacity_ctrl.m_min_capacity;
+ if (new_capacity <= m_capacity_ctrl.min_capacity()) {
+ new_capacity = m_capacity_ctrl.min_capacity();
break;
}
}
@@ -1278,7 +1270,7 @@
//! Specialized method for reducing the capacity.
void reduce_capacity(const true_type&) {
- circular_buffer<T,
Alloc>::set_capacity(std::max(m_capacity_ctrl.m_min_capacity, size()));
+ circular_buffer<T,
Alloc>::set_capacity(std::max(m_capacity_ctrl.min_capacity(), size()));
}
//! Specialized method for reducing the capacity.
@@ -1286,8 +1278,8 @@
//! Determine the initial capacity.
static size_type init_capacity(const capacity_type& capacity_ctrl,
size_type n) {
- BOOST_CB_ASSERT(capacity_ctrl.m_capacity >= n); // check for capacity
lower than n
- return std::max(capacity_ctrl.m_min_capacity, n);
+ BOOST_CB_ASSERT(capacity_ctrl.capacity() >= n); // check for capacity
lower than n
+ return std::max(capacity_ctrl.min_capacity(), n);
}
//! Specialized method for determining the initial capacity.
@@ -1310,14 +1302,14 @@
//! Specialized method for determining the initial capacity.
template <class InputIterator>
static size_type init_capacity(const capacity_type& capacity_ctrl,
InputIterator first, InputIterator last, const std::input_iterator_tag&) {
- return capacity_ctrl.m_capacity;
+ return capacity_ctrl.capacity();
}
//! Specialized method for determining the initial capacity.
template <class ForwardIterator>
static size_type init_capacity(const capacity_type& capacity_ctrl,
ForwardIterator first, ForwardIterator last, const std::forward_iterator_tag&) {
BOOST_CB_ASSERT(std::distance(first, last) >= 0); // check for wrong
range
- return std::max(capacity_ctrl.m_min_capacity,
std::min(capacity_ctrl.m_capacity, static_cast<size_type>(std::distance(first,
last))));
+ return std::max(capacity_ctrl.min_capacity(),
std::min(capacity_ctrl.capacity(), static_cast<size_type>(std::distance(first,
last))));
}
//! Specialized insert method.
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs