STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | Protected Attributes | List of all members
__gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare > Class Template Reference

Unguarded loser tree, keeping only pointers to the elements in the tree structure. More...

#include <parallel/losertree.h>

Inheritance diagram for __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >:
__gnu_parallel::_LoserTreePointerUnguarded< __stable, _Tp, _Compare > __gnu_parallel::_LoserTreePointerUnguarded< false, _Tp, _Compare >

Classes

struct  _Loser
 

Public Member Functions

 _LoserTreePointerUnguardedBase (unsigned int __k, const _Tp &__sentinel, _Compare __comp=std::less< _Tp >())
 
 ~_LoserTreePointerUnguardedBase ()
 
int __get_min_source ()
 
void __insert_start (const _Tp &__key, int __source, bool)
 

Protected Attributes

unsigned int _M_ik
 
unsigned int _M_k
 
unsigned int _M_offset
 
_Loser_M_losers
 
_Compare _M_comp
 

Detailed Description

template<typename _Tp, typename _Compare>
class __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >

Unguarded loser tree, keeping only pointers to the elements in the tree structure.

No guarding is done, therefore not a single input sequence must run empty. This is a very fast variant.

Constructor & Destructor Documentation

template<typename _Tp , typename _Compare >
__gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::_LoserTreePointerUnguardedBase ( unsigned int  __k,
const _Tp &  __sentinel,
_Compare  __comp = std::less<_Tp>() 
)
inline
845  : _M_comp(__comp)
846  {
847  _M_ik = __k;
848 
849  // Next greater power of 2.
850  _M_k = 1 << (__rd_log2(_M_ik - 1) + 1);
851  _M_offset = _M_k;
852  // Avoid default-constructing _M_losers[]._M_key
853  _M_losers = new _Loser[2 * _M_k];
854 
855  for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i)
856  {
857  _M_losers[__i]._M_keyp = &__sentinel;
858  _M_losers[__i]._M_source = -1;
859  }
860  }
_Loser * _M_losers
Definition: losertree.h:838
const _Tp * _M_keyp
Definition: losertree.h:834
_Compare _M_comp
Definition: losertree.h:839
_Size __rd_log2(_Size __n)
Calculates the rounded-down logarithm of __n for base 2.
Definition: base.h:102
unsigned int _M_offset
Definition: losertree.h:837
unsigned int _M_k
Definition: losertree.h:837
unsigned int _M_ik
Definition: losertree.h:837
template<typename _Tp , typename _Compare >
__gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::~_LoserTreePointerUnguardedBase ( )
inline
863  { delete[] _M_losers; }
_Loser * _M_losers
Definition: losertree.h:838

Member Function Documentation

template<typename _Tp , typename _Compare >
int __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::__get_min_source ( )
inline
867  {
868 #if _GLIBCXX_ASSERTIONS
869  // no dummy sequence can ever be at the top!
870  _GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
871 #endif
872  return _M_losers[0]._M_source;
873  }
_Loser * _M_losers
Definition: losertree.h:838
#define _GLIBCXX_PARALLEL_ASSERT(_Condition)
Definition: base.h:422
template<typename _Tp , typename _Compare >
void __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::__insert_start ( const _Tp &  __key,
int  __source,
bool   
)
inline
877  {
878  unsigned int __pos = _M_k + __source;
879 
880  _M_losers[__pos]._M_keyp = &__key;
881  _M_losers[__pos]._M_source = __source;
882  }
_Loser * _M_losers
Definition: losertree.h:838
const _Tp * _M_keyp
Definition: losertree.h:834
unsigned int _M_k
Definition: losertree.h:837

Member Data Documentation

template<typename _Tp , typename _Compare >
_Compare __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::_M_comp
protected
template<typename _Tp , typename _Compare >
unsigned int __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::_M_ik
protected
template<typename _Tp , typename _Compare >
unsigned int __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::_M_k
protected
template<typename _Tp , typename _Compare >
_Loser* __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::_M_losers
protected
template<typename _Tp , typename _Compare >
unsigned int __gnu_parallel::_LoserTreePointerUnguardedBase< _Tp, _Compare >::_M_offset
protected

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