1#ifndef VARLEN_SORT_INCLUDED
2#define VARLEN_SORT_INCLUDED
56 if (other.mem !=
nullptr) {
57 mem = std::move(other.mem);
59 mem.reset(
new unsigned char[other.elem_size]);
72 std::unique_ptr<unsigned char[]>
mem;
73 unsigned char *
ptr =
nullptr;
103 return !(*
this == other);
179 unsigned char *
ptr =
nullptr;
196template <
class T,
class Compare>
197inline void varlen_sort(T *first, T *last,
size_t elem_size, Compare comp) {
198 std::sort(
varlen_iterator(pointer_cast<unsigned char *>(first), elem_size),
201 return comp(pointer_cast<T *>(a.
ptr), pointer_cast<T *>(b.
ptr));
Definition: varlen_sort.h:84
bool operator!=(const varlen_iterator &other) const
Definition: varlen_sort.h:102
varlen_iterator(unsigned char *ptr_arg, size_t elem_size_arg)
Definition: varlen_sort.h:86
bool operator==(const varlen_iterator &other) const
Definition: varlen_sort.h:97
bool operator>(varlen_iterator &other) const
Definition: varlen_sort.h:163
unsigned char * ptr
Definition: varlen_sort.h:179
ptrdiff_t operator-(const varlen_iterator &other) const
Definition: varlen_sort.h:148
varlen_iterator & operator+=(size_t n)
Definition: varlen_sort.h:130
varlen_iterator()=default
varlen_iterator operator++(int)
Definition: varlen_sort.h:112
bool operator<=(varlen_iterator &other) const
Definition: varlen_sort.h:173
varlen_iterator operator-(size_t n) const
Definition: varlen_sort.h:144
varlen_iterator operator+(size_t n) const
Definition: varlen_sort.h:140
varlen_iterator & operator--()
Definition: varlen_sort.h:119
varlen_element operator*() const
Definition: varlen_sort.h:90
varlen_element operator[](size_t i) const
Definition: varlen_sort.h:154
varlen_iterator operator--(int)
Definition: varlen_sort.h:123
size_t elem_size
Definition: varlen_sort.h:180
bool operator<(varlen_iterator &other) const
Definition: varlen_sort.h:158
varlen_element operator->() const
Definition: varlen_sort.h:106
varlen_iterator & operator-=(size_t n)
Definition: varlen_sort.h:135
varlen_iterator & operator++()
Definition: varlen_sort.h:91
bool operator>=(varlen_iterator &other) const
Definition: varlen_sort.h:168
void copy(Shards< COUNT > &dst, const Shards< COUNT > &src) noexcept
Copy the counters, overwrite destination.
Definition: ut0counter.h:353
Definition: varlen_sort.h:183
A RandomAccessIterator that splits up a char/uchar array into fixed-length elements,...
Definition: varlen_sort.h:45
std::unique_ptr< unsigned char[]> mem
Definition: varlen_sort.h:72
varlen_element(varlen_element &&other)
Definition: varlen_sort.h:55
varlen_element & operator=(const varlen_element &other)=delete
varlen_element(varlen_element &other)=delete
size_t elem_size
Definition: varlen_sort.h:74
varlen_element & operator=(varlen_element &&other)
Definition: varlen_sort.h:66
varlen_element(unsigned char *ptr_arg, size_t elem_size_arg)
Definition: varlen_sort.h:46
unsigned char * ptr
Definition: varlen_sort.h:73
static void swap(const varlen_element &a, const varlen_element &b)
Definition: varlen_sort.h:78
void varlen_sort(T *first, T *last, size_t elem_size, Compare comp)
Definition: varlen_sort.h:197
int n
Definition: xcom_base.cc:508