Compare commits

..

4 Commits

Author SHA1 Message Date
Beman Dawes
4540bea6d5 Release 1.48.0 beta 1
[SVN r75132]
2011-10-27 15:04:52 +00:00
Jan Gaspar
ed237fa058 circular_buffer: fixed when BOOST_NO_STDC_NAMESPACE defined
[SVN r66704]
2010-11-23 19:45:36 +00:00
Jan Gaspar
2bd298dec7 circular_buffer: applied patch to remove workaround for DEC C++ compiler - now all compilers will use this->invalidate_iterators_except
[SVN r61570]
2010-04-26 09:40:08 +00:00
Jan Gaspar
65810242ee circular_buffer: updated documentation
[SVN r60691]
2010-03-18 12:39:52 +00:00
3 changed files with 23 additions and 11 deletions

View File

@@ -65,6 +65,9 @@
<dt>
<a href="#debug">Debug Support</a>
</dt>
<dt>
<a href="#interprocess">Compatibility with Interprocess library</a>
</dt>
<dt>
<a href="#examples">More Examples</a>
</dt>
@@ -594,7 +597,18 @@ template &lt;class T, class Alloc&gt;
</p>
<p>
The debug support is enabled only in the debug mode (when the <code>NDEBUG</code> is not defined). It can also be
explicitly disabled by defining <code>BOOST_CB_DISABLE_DEBUG</code> macro.
explicitly disabled (only for <code>circular_buffer</code>) by defining <code>BOOST_CB_DISABLE_DEBUG</code>
macro.
</p>
<h2>
<a name="intreprocess" id="interprocess">Compatibility with Interprocess library</a>
</h2>
<p>
The <code>circular_buffer</code> is compatible with the <a href="../../../doc/html/interprocess.html">Boost
Interprocess</a> library used for interprocess communication. Considering that the <code>circular_buffer</code>'s
debug support relies on 'raw' pointers - which is not permited by the Interprocess library - the code has to
compiled with <code>-DBOOST_CB_DISABLE_DEBUG</code> or <code>-DNDEBUG</code> (which disables the
<a href="#debug">Debug Support</a>). Not doing that will cause the compilation to fail.
</p>
<h2>
<a name="examples" id="examples">More Examples</a>

View File

@@ -34,6 +34,12 @@
#include <stddef.h>
#endif
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std {
using ::memset;
}
#endif
namespace boost {
/*!
@@ -2081,7 +2087,7 @@ private:
throw_exception(std::length_error("circular_buffer"));
#if BOOST_CB_ENABLE_DEBUG
pointer p = (n == 0) ? 0 : m_alloc.allocate(n, 0);
::memset(p, cb_details::UNINITIALIZED, sizeof(value_type) * n);
std::memset(p, cb_details::UNINITIALIZED, sizeof(value_type) * n);
return p;
#else
return (n == 0) ? 0 : m_alloc.allocate(n, 0);
@@ -2124,7 +2130,7 @@ private:
m_alloc.destroy(p);
#if BOOST_CB_ENABLE_DEBUG
invalidate_iterators(iterator(this, p));
::memset(p, cb_details::UNINITIALIZED, sizeof(value_type));
std::memset(p, cb_details::UNINITIALIZED, sizeof(value_type));
#endif
}

View File

@@ -1260,11 +1260,7 @@ private:
ensure_reserve(new_capacity, new_size));
}
#if BOOST_CB_ENABLE_DEBUG
# if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(70190006))
this->invalidate_iterators_except(end());
# else
invalidate_iterators_except(end());
# endif
#endif
}
@@ -1284,11 +1280,7 @@ private:
circular_buffer<T, Alloc>::set_capacity(
ensure_reserve(new_capacity, size()));
#if BOOST_CB_ENABLE_DEBUG
# if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(70190006))
this->invalidate_iterators_except(end());
# else
invalidate_iterators_except(end());
# endif
#endif
}