GNU Octave  4.4.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
octave_sort< T > Class Template Reference

#include "oct-sort.h"

Collaboration diagram for octave_sort< T >:

Classes

struct  MergeState
 
struct  s_slice
 

Public Types

typedef bool(* compare_fcn_type) (typename ref_param< T >::type, typename ref_param< T >::type)
 

Public Member Functions

 octave_sort (void)
 
 octave_sort (compare_fcn_type)
 
 octave_sort (const octave_sort &)=delete
 
 ~octave_sort (void)
 
bool is_sorted (const T *data, octave_idx_type nel)
 
bool is_sorted_rows (const T *data, octave_idx_type rows, octave_idx_type cols)
 
bool issorted (const T *data, octave_idx_type nel)
 
octave_idx_type lookup (const T *data, octave_idx_type nel, const T &value)
 
void lookup (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx)
 
void lookup_sorted (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx, bool rev=false)
 
void nth_element (T *data, octave_idx_type nel, octave_idx_type lo, octave_idx_type up=-1)
 
octave_sortoperator= (const octave_sort &)=delete
 
void set_compare (compare_fcn_type comp)
 
void set_compare (sortmode mode)
 
template<>
void sort (bool *data, octave_idx_type nel, std::less< bool >)
 
template<>
void sort (bool *data, octave_idx_type nel, std::greater< bool >)
 
template<>
void sort (bool *data, octave_idx_type *idx, octave_idx_type nel, std::less< bool >)
 
template<>
void sort (bool *data, octave_idx_type *idx, octave_idx_type nel, std::greater< bool >)
 
void sort (T *data, octave_idx_type nel)
 
void sort (T *data, octave_idx_type *idx, octave_idx_type nel)
 
void sort_rows (const T *data, octave_idx_type *idx, octave_idx_type rows, octave_idx_type cols)
 

Static Public Member Functions

static bool ascending_compare (typename ref_param< T >::type, typename ref_param< T >::type)
 
static bool descending_compare (typename ref_param< T >::type, typename ref_param< T >::type)
 

Private Member Functions

template<typename Comp >
void binarysort (T *data, octave_idx_type nel, octave_idx_type start, Comp comp)
 
template<typename Comp >
void binarysort (T *data, octave_idx_type *idx, octave_idx_type nel, octave_idx_type start, Comp comp)
 
template<typename Comp >
octave_idx_type count_run (T *lo, octave_idx_type n, bool &descending, Comp comp)
 
template<typename Comp >
octave_idx_type gallop_left (T key, T *a, octave_idx_type n, octave_idx_type hint, Comp comp)
 
template<typename Comp >
octave_idx_type gallop_right (T key, T *a, octave_idx_type n, octave_idx_type hint, Comp comp)
 
template<typename Comp >
bool is_sorted (const T *data, octave_idx_type nel, Comp comp)
 
template<typename Comp >
bool is_sorted_rows (const T *data, octave_idx_type rows, octave_idx_type cols, Comp comp)
 
template<typename Comp >
bool issorted (const T *data, octave_idx_type nel, Comp comp)
 
template<typename Comp >
octave_idx_type lookup (const T *data, octave_idx_type nel, const T &value, Comp comp)
 
template<typename Comp >
void lookup (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx, Comp comp)
 
template<typename Comp >
void lookup_sorted (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx, bool rev, Comp comp)
 
template<typename Comp >
int merge_at (octave_idx_type i, T *data, Comp comp)
 
template<typename Comp >
int merge_at (octave_idx_type i, T *data, octave_idx_type *idx, Comp comp)
 
template<typename Comp >
int merge_collapse (T *data, Comp comp)
 
template<typename Comp >
int merge_collapse (T *data, octave_idx_type *idx, Comp comp)
 
octave_idx_type merge_compute_minrun (octave_idx_type n)
 
template<typename Comp >
int merge_force_collapse (T *data, Comp comp)
 
template<typename Comp >
int merge_force_collapse (T *data, octave_idx_type *idx, Comp comp)
 
template<typename Comp >
int merge_hi (T *pa, octave_idx_type na, T *pb, octave_idx_type nb, Comp comp)
 
template<typename Comp >
int merge_hi (T *pa, octave_idx_type *ipa, octave_idx_type na, T *pb, octave_idx_type *ipb, octave_idx_type nb, Comp comp)
 
template<typename Comp >
int merge_lo (T *pa, octave_idx_type na, T *pb, octave_idx_type nb, Comp comp)
 
template<typename Comp >
int merge_lo (T *pa, octave_idx_type *ipa, octave_idx_type na, T *pb, octave_idx_type *ipb, octave_idx_type nb, Comp comp)
 
template<typename Comp >
void nth_element (T *data, octave_idx_type nel, octave_idx_type lo, octave_idx_type up, Comp comp)
 
template<typename Comp >
void sort (T *data, octave_idx_type nel, Comp comp)
 
template<typename Comp >
void sort (T *data, octave_idx_type *idx, octave_idx_type nel, Comp comp)
 
template<typename Comp >
void sort_rows (const T *data, octave_idx_type *idx, octave_idx_type rows, octave_idx_type cols, Comp comp)
 

Private Attributes

compare_fcn_type compare
 
MergeStatems
 

Detailed Description

template<typename T>
class octave_sort< T >

Definition at line 108 of file oct-sort.h.

Member Typedef Documentation

◆ compare_fcn_type

template<typename T>
typedef bool(* octave_sort< T >::compare_fcn_type) (typename ref_param< T >::type, typename ref_param< T >::type)

Definition at line 113 of file oct-sort.h.

Constructor & Destructor Documentation

◆ octave_sort() [1/3]

template<typename T >
octave_sort< T >::octave_sort ( void  )

Definition at line 120 of file oct-sort.cc.

◆ octave_sort() [2/3]

template<typename T >
octave_sort< T >::octave_sort ( compare_fcn_type  comp)

Definition at line 125 of file oct-sort.cc.

◆ octave_sort() [3/3]

template<typename T>
octave_sort< T >::octave_sort ( const octave_sort< T > &  )
delete

◆ ~octave_sort()

template<typename T >
octave_sort< T >::~octave_sort ( void  )

Definition at line 130 of file oct-sort.cc.

Member Function Documentation

◆ ascending_compare()

template<typename T >
bool octave_sort< T >::ascending_compare ( typename ref_param< T >::type  x,
typename ref_param< T >::type  y 
)
static

◆ binarysort() [1/2]

template<typename T >
template<typename Comp >
void octave_sort< T >::binarysort ( T *  data,
octave_idx_type  nel,
octave_idx_type  start,
Comp  comp 
)
private

Definition at line 150 of file oct-sort.cc.

References p, start, and swap.

Referenced by octave_sort< T >::sort().

◆ binarysort() [2/2]

template<typename T >
template<typename Comp >
void octave_sort< T >::binarysort ( T *  data,
octave_idx_type idx,
octave_idx_type  nel,
octave_idx_type  start,
Comp  comp 
)
private

Definition at line 195 of file oct-sort.cc.

References p, start, and swap.

◆ count_run()

template<typename T >
template<typename Comp >
octave_idx_type octave_sort< T >::count_run ( T *  lo,
octave_idx_type  n,
bool descending,
Comp  comp 
)
private

Definition at line 262 of file oct-sort.cc.

Referenced by octave_sort< T >::sort().

◆ descending_compare()

◆ gallop_left()

template<typename T >
template<typename Comp >
octave_idx_type octave_sort< T >::gallop_left ( key,
T *  a,
octave_idx_type  n,
octave_idx_type  hint,
Comp  comp 
)
private

Definition at line 322 of file oct-sort.cc.

References a, and k.

Referenced by octave_sort< T >::merge_at(), octave_sort< T >::merge_hi(), and octave_sort< T >::merge_lo().

◆ gallop_right()

template<typename T >
template<typename Comp >
octave_idx_type octave_sort< T >::gallop_right ( key,
T *  a,
octave_idx_type  n,
octave_idx_type  hint,
Comp  comp 
)
private

Definition at line 417 of file oct-sort.cc.

References a, and k.

Referenced by octave_sort< T >::merge_at(), octave_sort< T >::merge_hi(), and octave_sort< T >::merge_lo().

◆ is_sorted() [1/2]

template<typename T>
bool octave_sort< T >::is_sorted ( const T *  data,
octave_idx_type  nel 
)
inline

Definition at line 142 of file oct-sort.h.

◆ is_sorted() [2/2]

template<typename T>
template<typename Comp >
bool octave_sort< T >::is_sorted ( const T *  data,
octave_idx_type  nel,
Comp  comp 
)
inlineprivate

Definition at line 316 of file oct-sort.h.

◆ is_sorted_rows() [1/2]

template<typename T >
bool octave_sort< T >::is_sorted_rows ( const T *  data,
octave_idx_type  rows,
octave_idx_type  cols 
)

◆ is_sorted_rows() [2/2]

template<typename T >
template<typename Comp >
bool octave_sort< T >::is_sorted_rows ( const T *  data,
octave_idx_type  rows,
octave_idx_type  cols,
Comp  comp 
)
private

Definition at line 1670 of file oct-sort.cc.

References octave_sort< T >::issorted().

◆ issorted() [1/2]

template<typename T >
bool octave_sort< T >::issorted ( const T *  data,
octave_idx_type  nel 
)

◆ issorted() [2/2]

template<typename T >
template<typename Comp >
bool octave_sort< T >::issorted ( const T *  data,
octave_idx_type  nel,
Comp  comp 
)
private

Definition at line 1543 of file oct-sort.cc.

References next.

◆ lookup() [1/4]

template<typename T >
octave_idx_type octave_sort< T >::lookup ( const T *  data,
octave_idx_type  nel,
const T &  value 
)

◆ lookup() [2/4]

template<typename T >
void octave_sort< T >::lookup ( const T *  data,
octave_idx_type  nel,
const T *  values,
octave_idx_type  nvalues,
octave_idx_type idx 
)

◆ lookup() [3/4]

template<typename T >
template<typename Comp >
octave_idx_type octave_sort< T >::lookup ( const T *  data,
octave_idx_type  nel,
const T &  value,
Comp  comp 
)
private

Definition at line 1753 of file oct-sort.cc.

References value.

◆ lookup() [4/4]

template<typename T >
template<typename Comp >
void octave_sort< T >::lookup ( const T *  data,
octave_idx_type  nel,
const T *  values,
octave_idx_type  nvalues,
octave_idx_type idx,
Comp  comp 
)
private

Definition at line 1797 of file oct-sort.cc.

References octave_sort< T >::lookup(), and values.

◆ lookup_sorted() [1/2]

template<typename T >
void octave_sort< T >::lookup_sorted ( const T *  data,
octave_idx_type  nel,
const T *  values,
octave_idx_type  nvalues,
octave_idx_type idx,
bool  rev = false 
)

◆ lookup_sorted() [2/2]

template<typename T >
template<typename Comp >
void octave_sort< T >::lookup_sorted ( const T *  data,
octave_idx_type  nel,
const T *  values,
octave_idx_type  nvalues,
octave_idx_type idx,
bool  rev,
Comp  comp 
)
private

Definition at line 1831 of file oct-sort.cc.

References i, and values.

◆ merge_at() [1/2]

◆ merge_at() [2/2]

◆ merge_collapse() [1/2]

template<typename T >
template<typename Comp >
int octave_sort< T >::merge_collapse ( T *  data,
Comp  comp 
)
private

◆ merge_collapse() [2/2]

template<typename T >
template<typename Comp >
int octave_sort< T >::merge_collapse ( T *  data,
octave_idx_type idx,
Comp  comp 
)
private

◆ merge_compute_minrun()

template<typename T >
octave_idx_type octave_sort< T >::merge_compute_minrun ( octave_idx_type  n)
private

Definition at line 1375 of file oct-sort.cc.

Referenced by octave_sort< T >::sort().

◆ merge_force_collapse() [1/2]

template<typename T >
template<typename Comp >
int octave_sort< T >::merge_force_collapse ( T *  data,
Comp  comp 
)
private

◆ merge_force_collapse() [2/2]

template<typename T >
template<typename Comp >
int octave_sort< T >::merge_force_collapse ( T *  data,
octave_idx_type idx,
Comp  comp 
)
private

◆ merge_hi() [1/2]

template<typename T >
template<typename Comp >
int octave_sort< T >::merge_hi ( T *  pa,
octave_idx_type  na,
T *  pb,
octave_idx_type  nb,
Comp  comp 
)
private

◆ merge_hi() [2/2]

◆ merge_lo() [1/2]

template<typename T >
template<typename Comp >
int octave_sort< T >::merge_lo ( T *  pa,
octave_idx_type  na,
T *  pb,
octave_idx_type  nb,
Comp  comp 
)
private

◆ merge_lo() [2/2]

◆ nth_element() [1/2]

template<typename T >
void octave_sort< T >::nth_element ( T *  data,
octave_idx_type  nel,
octave_idx_type  lo,
octave_idx_type  up = -1 
)

◆ nth_element() [2/2]

template<typename T >
template<typename Comp >
void octave_sort< T >::nth_element ( T *  data,
octave_idx_type  nel,
octave_idx_type  lo,
octave_idx_type  up,
Comp  comp 
)
private

Definition at line 1907 of file oct-sort.cc.

References swap.

◆ operator=()

template<typename T>
octave_sort& octave_sort< T >::operator= ( const octave_sort< T > &  )
delete

◆ set_compare() [1/2]

◆ set_compare() [2/2]

template<typename T >
void octave_sort< T >::set_compare ( sortmode  mode)

Definition at line 137 of file oct-sort.cc.

References ASCENDING, DESCENDING, and mode.

◆ sort() [1/8]

template<>
void octave_sort< bool >::sort ( bool data,
octave_idx_type  nel,
std::less< bool  
)

Definition at line 85 of file Array-b.cc.

◆ sort() [2/8]

template<>
void octave_sort< bool >::sort ( bool data,
octave_idx_type  nel,
std::greater< bool  
)

Definition at line 94 of file Array-b.cc.

◆ sort() [3/8]

template<>
void octave_sort< bool >::sort ( bool data,
octave_idx_type idx,
octave_idx_type  nel,
std::less< bool  
)

Definition at line 103 of file Array-b.cc.

◆ sort() [4/8]

template<>
void octave_sort< bool >::sort ( bool data,
octave_idx_type idx,
octave_idx_type  nel,
std::greater< bool  
)

Definition at line 112 of file Array-b.cc.

◆ sort() [5/8]

◆ sort() [6/8]

template<typename T >
void octave_sort< T >::sort ( T *  data,
octave_idx_type idx,
octave_idx_type  nel 
)

◆ sort() [7/8]

◆ sort() [8/8]

◆ sort_rows() [1/2]

template<typename T >
void octave_sort< T >::sort_rows ( const T *  data,
octave_idx_type idx,
octave_idx_type  rows,
octave_idx_type  cols 
)

◆ sort_rows() [2/2]

template<typename T >
template<typename Comp >
void octave_sort< T >::sort_rows ( const T *  data,
octave_idx_type idx,
octave_idx_type  rows,
octave_idx_type  cols,
Comp  comp 
)
private

Definition at line 1593 of file oct-sort.cc.

References i, OCTAVE_LOCAL_BUFFER, and octave_sort< T >::sort().

Member Data Documentation

◆ compare

◆ ms


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