Boost.Sort
Classes | Enumerations | Functions
boost::sort::detail Namespace Reference

Classes

struct  offset_char_less_than
 
struct  offset_greater_than
 
struct  offset_less_than
 

Enumerations

enum  {
  max_splits = 11, max_finishing_splits = max_splits + 1, int_log_mean_bin_size = 2, int_log_min_split_count = 9,
  int_log_finishing_count = 31, float_log_mean_bin_size = 2, float_log_min_split_count = 8, float_log_finishing_count = 4,
  min_sort_size = 1000
}
 

Functions

template<class Cast_type , class RandomAccessIter >
Cast_type cast_float_iter (const RandomAccessIter &floatiter)
 
template<class RandomAccessIter , class Div_type , class Right_shift >
bool is_sorted_or_find_extremes (RandomAccessIter current, RandomAccessIter last, Div_type &max, Div_type &min, Right_shift rshift)
 
template<class RandomAccessIter , class Div_type >
void inner_float_swap_loop (RandomAccessIter *bins, const RandomAccessIter &nextbinstart, unsigned ii, const unsigned log_divisor, const Div_type div_min)
 
template<class RandomAccessIter , class Div_type >
void float_swap_loop (RandomAccessIter *bins, RandomAccessIter &nextbinstart, unsigned ii, const size_t *bin_sizes, const unsigned log_divisor, const Div_type div_min)
 
template<class RandomAccessIter , class Cast_type >
bool is_sorted_or_find_extremes (RandomAccessIter current, RandomAccessIter last, Cast_type &max, Cast_type &min)
 
template<class RandomAccessIter , class Div_type , class Size_type >
void positive_float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)
 
template<class RandomAccessIter , class Div_type , class Size_type >
void negative_float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)
 
template<class RandomAccessIter , class Div_type , class Right_shift , class Size_type >
void negative_float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift)
 
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare , class Size_type >
void negative_float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift, Compare comp)
 
template<class RandomAccessIter , class Div_type , class Size_type >
void float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)
 
template<class RandomAccessIter , class Div_type , class Right_shift , class Size_type >
void float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift)
 
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare , class Size_type >
void float_sort_rec (RandomAccessIter first, RandomAccessIter last, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift, Compare comp)
 
template<class RandomAccessIter >
boost::enable_if_c< sizeof(boost::uint32_t)==sizeof(typename std::iterator_traits< RandomAccessIter >::value_type)&&std::numeric_limits< typename std::iterator_traits< RandomAccessIter >::value_type >::is_iec559, void >::type float_sort (RandomAccessIter first, RandomAccessIter last)
 
template<class RandomAccessIter >
boost::enable_if_c< sizeof(boost::uint64_t)==sizeof(typename std::iterator_traits< RandomAccessIter >::value_type)&&std::numeric_limits< typename std::iterator_traits< RandomAccessIter >::value_type >::is_iec559, void >::type float_sort (RandomAccessIter first, RandomAccessIter last)
 
template<class RandomAccessIter >
boost::disable_if_c< (sizeof(boost::uint64_t)==sizeof(typename std::iterator_traits< RandomAccessIter >::value_type)||sizeof(boost::uint32_t)==sizeof(typename std::iterator_traits< RandomAccessIter >::value_type))&&std::numeric_limits< typename std::iterator_traits< RandomAccessIter >::value_type >::is_iec559, void >::type float_sort (RandomAccessIter first, RandomAccessIter last)
 
template<class RandomAccessIter , class Div_type , class Right_shift >
void::type float_sort (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift)
 
template<class RandomAccessIter , class Div_type , class Right_shift >
boost::enable_if_c< sizeof(size_t)< sizeof(Div_type)&&sizeof(boost::uintmax_t) >=sizeof(Div_type), void >::type float_sort (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift)
 
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare >
void::type float_sort (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift, Compare comp)
 
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare >
boost::enable_if_c< sizeof(size_t)< sizeof(Div_type)&&sizeof(boost::uintmax_t) >=sizeof(Div_type), void >::type float_sort (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift, Compare comp)
 
template<typename T >
unsigned rough_log_2_size (const T &input)
 
template<unsigned log_mean_bin_size, unsigned log_min_split_count, unsigned log_finishing_count>
size_t get_min_count (unsigned log_range)
 
template<class RandomAccessIter >
RandomAccessIter * size_bins (size_t *bin_sizes, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, unsigned &cache_end, unsigned bin_count)
 
template<class RandomAccessIter , class Unsigned_char_type >
void update_offset (RandomAccessIter first, RandomAccessIter finish, size_t &char_offset)
 
template<class RandomAccessIter , class Get_char , class Get_length >
void update_offset (RandomAccessIter first, RandomAccessIter finish, size_t &char_offset, Get_char getchar, Get_length length)
 
template<class RandomAccessIter , class Unsigned_char_type >
void string_sort_rec (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)
 
template<class RandomAccessIter , class Unsigned_char_type >
void reverse_string_sort_rec (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)
 
template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length >
void string_sort_rec (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char getchar, Get_length length)
 
template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare >
void string_sort_rec (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char getchar, Get_length length, Compare comp)
 
template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare >
void reverse_string_sort_rec (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char getchar, Get_length length, Compare comp)
 

Enumeration Type Documentation

anonymous enum
Enumerator
max_splits 
max_finishing_splits 
int_log_mean_bin_size 
int_log_min_split_count 
int_log_finishing_count 
float_log_mean_bin_size 
float_log_min_split_count 
float_log_finishing_count 
min_sort_size 

Function Documentation

template<class Cast_type , class RandomAccessIter >
Cast_type boost::sort::detail::cast_float_iter ( const RandomAccessIter &  floatiter)
inline
template<class RandomAccessIter >
boost::enable_if_c< sizeof(boost::uint32_t) == sizeof(typename std::iterator_traits<RandomAccessIter>::value_type) && std::numeric_limits<typename std::iterator_traits<RandomAccessIter>::value_type>::is_iec559, void >::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last 
)
inline
template<class RandomAccessIter >
boost::enable_if_c< sizeof(boost::uint64_t) == sizeof(typename std::iterator_traits<RandomAccessIter>::value_type) && std::numeric_limits<typename std::iterator_traits<RandomAccessIter>::value_type>::is_iec559, void >::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last 
)
inline
template<class RandomAccessIter >
boost::disable_if_c< (sizeof(boost::uint64_t) == sizeof(typename std::iterator_traits<RandomAccessIter>::value_type) || sizeof(boost::uint32_t) == sizeof(typename std::iterator_traits<RandomAccessIter>::value_type)) && std::numeric_limits<typename std::iterator_traits<RandomAccessIter>::value_type>::is_iec559, void >::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift >
void::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last,
Div_type  ,
Right_shift  rshift 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift >
boost::enable_if_c< sizeof(size_t) < sizeof(Div_type) && sizeof(boost::uintmax_t) >= sizeof(Div_type), void >::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last,
Div_type  ,
Right_shift  rshift 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare >
void::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last,
Div_type  ,
Right_shift  rshift,
Compare  comp 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare >
boost::enable_if_c< sizeof(size_t) < sizeof(Div_type) && sizeof(boost::uintmax_t) >= sizeof(Div_type), void >::type boost::sort::detail::float_sort ( RandomAccessIter  first,
RandomAccessIter  last,
Div_type  ,
Right_shift  rshift,
Compare  comp 
)
inline
template<class RandomAccessIter , class Div_type , class Size_type >
void boost::sort::detail::float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift , class Size_type >
void boost::sort::detail::float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Right_shift  rshift 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare , class Size_type >
void boost::sort::detail::float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Right_shift  rshift,
Compare  comp 
)
inline
template<class RandomAccessIter , class Div_type >
void boost::sort::detail::float_swap_loop ( RandomAccessIter *  bins,
RandomAccessIter &  nextbinstart,
unsigned  ii,
const size_t *  bin_sizes,
const unsigned  log_divisor,
const Div_type  div_min 
)
inline
template<unsigned log_mean_bin_size, unsigned log_min_split_count, unsigned log_finishing_count>
size_t boost::sort::detail::get_min_count ( unsigned  log_range)
inline
template<class RandomAccessIter , class Div_type >
void boost::sort::detail::inner_float_swap_loop ( RandomAccessIter *  bins,
const RandomAccessIter &  nextbinstart,
unsigned  ii,
const unsigned  log_divisor,
const Div_type  div_min 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift >
bool boost::sort::detail::is_sorted_or_find_extremes ( RandomAccessIter  current,
RandomAccessIter  last,
Div_type &  max,
Div_type &  min,
Right_shift  rshift 
)
inline
template<class RandomAccessIter , class Cast_type >
bool boost::sort::detail::is_sorted_or_find_extremes ( RandomAccessIter  current,
RandomAccessIter  last,
Cast_type &  max,
Cast_type &  min 
)
inline
template<class RandomAccessIter , class Div_type , class Size_type >
void boost::sort::detail::negative_float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift , class Size_type >
void boost::sort::detail::negative_float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Right_shift  rshift 
)
inline
template<class RandomAccessIter , class Div_type , class Right_shift , class Compare , class Size_type >
void boost::sort::detail::negative_float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Right_shift  rshift,
Compare  comp 
)
inline
template<class RandomAccessIter , class Div_type , class Size_type >
void boost::sort::detail::positive_float_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes 
)
inline
template<class RandomAccessIter , class Unsigned_char_type >
void boost::sort::detail::reverse_string_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
size_t  char_offset,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes 
)
inline
template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare >
void boost::sort::detail::reverse_string_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
size_t  char_offset,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Get_char  getchar,
Get_length  length,
Compare  comp 
)
inline
template<typename T >
unsigned boost::sort::detail::rough_log_2_size ( const T &  input)
inline
template<class RandomAccessIter >
RandomAccessIter* boost::sort::detail::size_bins ( size_t *  bin_sizes,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
unsigned &  cache_end,
unsigned  bin_count 
)
inline
template<class RandomAccessIter , class Unsigned_char_type >
void boost::sort::detail::string_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
size_t  char_offset,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes 
)
inline
template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length >
void boost::sort::detail::string_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
size_t  char_offset,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Get_char  getchar,
Get_length  length 
)
inline
template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare >
void boost::sort::detail::string_sort_rec ( RandomAccessIter  first,
RandomAccessIter  last,
size_t  char_offset,
std::vector< RandomAccessIter > &  bin_cache,
unsigned  cache_offset,
size_t *  bin_sizes,
Get_char  getchar,
Get_length  length,
Compare  comp 
)
inline
template<class RandomAccessIter , class Unsigned_char_type >
void boost::sort::detail::update_offset ( RandomAccessIter  first,
RandomAccessIter  finish,
size_t &  char_offset 
)
inline
template<class RandomAccessIter , class Get_char , class Get_length >
void boost::sort::detail::update_offset ( RandomAccessIter  first,
RandomAccessIter  finish,
size_t &  char_offset,
Get_char  getchar,
Get_length  length 
)
inline