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::_LoserTreePointerBase< _Tp, _Compare > Class Template Reference

Base class of _Loser Tree implementation using pointers. More...

#include <parallel/losertree.h>

Inheritance diagram for __gnu_parallel::_LoserTreePointerBase< _Tp, _Compare >:
__gnu_parallel::_LoserTreePointer< __stable, _Tp, _Compare > __gnu_parallel::_LoserTreePointer< false, _Tp, _Compare >

Classes

struct  _Loser
 Internal representation of _LoserTree __elements. More...
 

Public Member Functions

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

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::_LoserTreePointerBase< _Tp, _Compare >

Base class of _Loser Tree implementation using pointers.

Constructor & Destructor Documentation

template<typename _Tp , typename _Compare >
__gnu_parallel::_LoserTreePointerBase< _Tp, _Compare >::_LoserTreePointerBase ( unsigned int  __k,
_Compare  __comp = std::less<_Tp>() 
)
inline
375  : _M_comp(__comp)
376  {
377  _M_ik = __k;
378 
379  // Next greater power of 2.
380  _M_k = 1 << (__rd_log2(_M_ik - 1) + 1);
381  _M_offset = _M_k;
382  _M_losers = new _Loser[_M_k * 2];
383  for (unsigned int __i = _M_ik - 1; __i < _M_k; __i++)
384  _M_losers[__i + _M_k]._M_sup = true;
385  }
_Compare _M_comp
Definition: losertree.h:370
unsigned int _M_offset
Definition: losertree.h:368
unsigned int _M_k
Definition: losertree.h:368
_Size __rd_log2(_Size __n)
Calculates the rounded-down logarithm of __n for base 2.
Definition: base.h:102
_Loser * _M_losers
Definition: losertree.h:369
unsigned int _M_ik
Definition: losertree.h:368
template<typename _Tp , typename _Compare >
__gnu_parallel::_LoserTreePointerBase< _Tp, _Compare >::~_LoserTreePointerBase ( )
inline
388  { delete[] _M_losers; }
_Loser * _M_losers
Definition: losertree.h:369

Member Function Documentation

template<typename _Tp , typename _Compare >
int __gnu_parallel::_LoserTreePointerBase< _Tp, _Compare >::__get_min_source ( )
inline
391  { return _M_losers[0]._M_source; }
int _M_source
Definition: losertree.h:364
_Loser * _M_losers
Definition: losertree.h:369
template<typename _Tp , typename _Compare >
void __gnu_parallel::_LoserTreePointerBase< _Tp, _Compare >::__insert_start ( const _Tp &  __key,
int  __source,
bool  __sup 
)
inline
394  {
395  unsigned int __pos = _M_k + __source;
396 
397  _M_losers[__pos]._M_sup = __sup;
398  _M_losers[__pos]._M_source = __source;
399  _M_losers[__pos]._M_keyp = &__key;
400  }
const _Tp * _M_keyp
Definition: losertree.h:365
unsigned int _M_k
Definition: losertree.h:368
int _M_source
Definition: losertree.h:364
_Loser * _M_losers
Definition: losertree.h:369
bool _M_sup
Definition: losertree.h:363

Member Data Documentation

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

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