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