Source code repo: http://github.com/khizmax/libcds/
Download: http://sourceforge.net/projects/libcds/files/
-
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef CDSSTRESS_PQUEUE_TYPES_H
bool pop( value_type& dest )
{
scoped_lock l( m_Lock );
- if ( !m_PQueue.empty() ) {
+ if ( !m_PQueue.empty()) {
dest = m_PQueue.top();
m_PQueue.pop();
return true;
bool pop_with( Q& dest, MoveFunc f )
{
scoped_lock l( m_Lock );
- if ( !m_PQueue.empty() ) {
- f( dest, m_PQueue.top() );
+ if ( !m_PQueue.empty()) {
+ f( dest, m_PQueue.top());
m_PQueue.pop();
return true;
}
void clear()
{
scoped_lock l( m_Lock );
- while ( !m_PQueue.empty() )
+ while ( !m_PQueue.empty())
m_PQueue.pop();
}
void clear_with( Func f )
{
scoped_lock l( m_Lock );
- while ( !m_PQueue.empty() ) {
- f( m_PQueue.top() );
+ while ( !m_PQueue.empty()) {
+ f( m_PQueue.top());
m_PQueue.pop();
}
}
template <typename T, typename Tree>
bool operator()( T& dest, Tree& container ) const
{
- typename Tree::guarded_ptr gp( container.extract_max() );
+ typename Tree::guarded_ptr gp( container.extract_max());
if ( gp )
dest = *gp;
return !gp.empty();
template <typename T, typename Tree>
bool operator()( T& dest, Tree& container ) const
{
- typename Tree::exempt_ptr ep( container.extract_max() );
+ typename Tree::exempt_ptr ep( container.extract_max());
if ( ep )
dest = *ep;
return !ep.empty();
template <typename T, typename Tree>
bool operator()( T& dest, Tree& container ) const
{
- typename Tree::guarded_ptr gp( container.extract_min() );
+ typename Tree::guarded_ptr gp( container.extract_min());
if ( gp )
dest = *gp;
return !gp.empty();
template <typename T, typename Tree>
bool operator()( T& dest, Tree& container ) const
{
- typename Tree::exempt_ptr ep( container.extract_min() );
+ typename Tree::exempt_ptr ep( container.extract_min());
if ( ep )
dest = *ep;
return !ep.empty();
template <typename T, typename Set>
bool operator()( T& dest, Set& container ) const
{
- typename Set::guarded_ptr gp( container.extract_max() );
+ typename Set::guarded_ptr gp( container.extract_max());
if ( gp )
dest = *gp;
return !gp.empty();
template <typename T, typename Set>
bool operator()( T& dest, Set& container ) const
{
- typename Set::exempt_ptr ep( container.extract_max() );
+ typename Set::exempt_ptr ep( container.extract_max());
if ( ep )
dest = *ep;
return !ep.empty();
template <typename T, typename Set>
bool operator()( T& dest, Set& container ) const
{
- typename Set::guarded_ptr gp( container.extract_min() );
+ typename Set::guarded_ptr gp( container.extract_min());
if ( gp )
dest = *gp;
return !gp.empty();
template <typename T, typename Set>
bool operator()( T& dest, Set& container ) const
{
- typename Set::exempt_ptr ep( container.extract_min() );
+ typename Set::exempt_ptr ep( container.extract_min());
if ( ep )
dest = *ep;
return !ep.empty();
{};
typedef cc::MSPriorityQueue< Value, traits_MSPriorityQueue_static_mutex > MSPriorityQueue_static_mutex;
- struct traits_MSPriorityQueue_dyn_less : public
- cc::mspriority_queue::make_traits<
- co::buffer< co::v::initialized_dynamic_buffer< char > >
- >::type
- {};
- typedef cc::MSPriorityQueue< Value, traits_MSPriorityQueue_dyn_less > MSPriorityQueue_dyn_less;
+ struct traits_MSPriorityQueue_dyn: public cc::mspriority_queue::traits
+ {
+ typedef co::v::initialized_dynamic_buffer< char > buffer;
+ };
+ typedef cc::MSPriorityQueue< Value, traits_MSPriorityQueue_dyn > MSPriorityQueue_dyn_less;
- struct traits_MSPriorityQueue_dyn_less_stat : public
- cc::mspriority_queue::make_traits <
- co::buffer< co::v::initialized_dynamic_buffer< char > >
- , co::stat < cc::mspriority_queue::stat<> >
- > ::type
- {};
+ struct traits_MSPriorityQueue_dyn_less_stat: public traits_MSPriorityQueue_dyn
+ {
+ typedef cc::mspriority_queue::stat<> stat;
+ };
typedef cc::MSPriorityQueue< Value, traits_MSPriorityQueue_dyn_less_stat > MSPriorityQueue_dyn_less_stat;
+
struct traits_MSPriorityQueue_dyn_cmp : public
cc::mspriority_queue::make_traits <
co::buffer< co::v::initialized_dynamic_buffer< char > >
static inline property_stream& operator <<( property_stream& o, cds::container::fcpqueue::stat<> const& s )
{
- return o
+ return o
<< CDSSTRESS_STAT_OUT( s, m_nPush )
<< CDSSTRESS_STAT_OUT( s, m_nPushMove )
<< CDSSTRESS_STAT_OUT( s, m_nPop )
<< CDSSTRESS_STAT_OUT( s, m_nPushFailCount )
<< CDSSTRESS_STAT_OUT( s, m_nPopFailCount )
<< CDSSTRESS_STAT_OUT( s, m_nPushHeapifySwapCount )
- << CDSSTRESS_STAT_OUT( s, m_nPopHeapifySwapCount );
+ << CDSSTRESS_STAT_OUT( s, m_nPopHeapifySwapCount )
+ << CDSSTRESS_STAT_OUT( s, m_nItemMovedTop )
+ << CDSSTRESS_STAT_OUT( s, m_nItemMovedUp )
+ << CDSSTRESS_STAT_OUT( s, m_nPushEmptyPass );
}
} // namespace cds_test