annotate foosdk/sdk/pfc/sort.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "array.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 namespace pfc {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 void swap_void(void * item1,void * item2,t_size width);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 void reorder_void(void * data,t_size width,const t_size * order,t_size num,void (*swapfunc)(void * item1,void * item2,t_size width) = swap_void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 class NOVTABLE reorder_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 virtual void swap(t_size p_index1,t_size p_index2) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 void reorder(reorder_callback & p_callback,const t_size * p_order,t_size p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 template<typename t_container>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 class reorder_callback_impl_t : public reorder_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 reorder_callback_impl_t(t_container & p_data) : m_data(p_data) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 void swap(t_size p_index1,t_size p_index2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 pfc::swap_t(m_data[p_index1],m_data[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 t_container & m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 class reorder_callback_impl_delta : public reorder_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 reorder_callback_impl_delta(reorder_callback & p_data,t_size p_delta) : m_data(p_data), m_delta(p_delta) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 void swap(t_size p_index1,t_size p_index2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 m_data.swap(p_index1+m_delta,p_index2+m_delta);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 reorder_callback & m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 t_size m_delta;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 template<typename t_container>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 void reorder_t(t_container & p_data,const t_size * p_order,t_size p_count)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 reorder_callback_impl_t<t_container> cb(p_data);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 reorder(cb,p_order,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 template<typename t_container>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 void reorder_partial_t(t_container & p_data,t_size p_base,const t_size * p_order,t_size p_count)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 reorder_callback_impl_t<t_container> cb1(p_data);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 reorder_callback_impl_delta cb2( cb1, p_base );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 reorder(cb2,p_order,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 // reorder(reorder_callback_impl_delta(reorder_callback_impl_t<t_container>(p_data),p_base),p_order,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 template<typename T>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 class reorder_callback_impl_ptr_t : public reorder_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 reorder_callback_impl_ptr_t(T * p_data) : m_data(p_data) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 void swap(t_size p_index1,t_size p_index2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 pfc::swap_t(m_data[p_index1],m_data[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 T* m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 template<typename T>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 void reorder_ptr_t(T* p_data,const t_size * p_order,t_size p_count)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 reorder_callback_impl_ptr_t<T> cb(p_data);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 reorder(cb,p_order,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 class NOVTABLE sort_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 virtual int compare(t_size p_index1, t_size p_index2) const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 virtual void swap(t_size p_index1, t_size p_index2) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 void swap_check(t_size p_index1, t_size p_index2) {if (compare(p_index1,p_index2) > 0) swap(p_index1,p_index2);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 class sort_callback_stabilizer : public sort_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 sort_callback_stabilizer(sort_callback & p_chain,t_size p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 virtual int compare(t_size p_index1, t_size p_index2) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 virtual void swap(t_size p_index1, t_size p_index2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 sort_callback & m_chain;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 array_t<t_size> m_order;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 void sort(sort_callback & p_callback,t_size p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 void sort_stable(sort_callback & p_callback,t_size p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 void sort_void_ex(void *base,t_size num,t_size width, int (*comp)(const void *, const void *),void (*swap)(void *, void *, t_size) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 void sort_void(void * base,t_size num,t_size width,int (*comp)(const void *, const void *) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 template<typename t_container,typename t_compare>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 class sort_callback_impl_simple_wrap_t : public sort_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 sort_callback_impl_simple_wrap_t(t_container & p_data, t_compare p_compare) : m_data(p_data), m_compare(p_compare) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 int compare(t_size p_index1, t_size p_index2) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 return m_compare(m_data[p_index1],m_data[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 void swap(t_size p_index1, t_size p_index2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 swap_t(m_data[p_index1],m_data[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 t_container & m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 t_compare m_compare;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 template<typename t_container>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 class sort_callback_impl_auto_wrap_t : public sort_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 sort_callback_impl_auto_wrap_t(t_container & p_data) : m_data(p_data) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 int compare(t_size p_index1, t_size p_index2) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 return compare_t(m_data[p_index1],m_data[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 void swap(t_size p_index1, t_size p_index2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 swap_t(m_data[p_index1],m_data[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 t_container & m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 template<typename t_container,typename t_compare,typename t_permutation>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 class sort_callback_impl_permutation_wrap_t : public sort_callback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 sort_callback_impl_permutation_wrap_t(const t_container & p_data, t_compare p_compare,t_permutation const & p_permutation) : m_data(p_data), m_compare(p_compare), m_permutation(p_permutation) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 int compare(t_size p_index1, t_size p_index2) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 return m_compare(m_data[m_permutation[p_index1]],m_data[m_permutation[p_index2]]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 void swap(t_size p_index1, t_size p_index2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 swap_t(m_permutation[p_index1],m_permutation[p_index2]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 const t_container & m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 t_compare m_compare;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 t_permutation const & m_permutation;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 template<typename t_container,typename t_compare>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 static void sort_t(t_container & p_data,t_compare p_compare,t_size p_count)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 sort_callback_impl_simple_wrap_t<t_container,t_compare> cb(p_data,p_compare);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 sort(cb,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 template<typename t_container,typename t_compare>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 static void sort_stable_t(t_container & p_data,t_compare p_compare,t_size p_count)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 sort_callback_impl_simple_wrap_t<t_container,t_compare> cb(p_data,p_compare);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 sort_stable(cb,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 template<typename t_container,typename t_compare,typename t_permutation>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 static void sort_get_permutation_t(const t_container & p_data,t_compare p_compare,t_size p_count,t_permutation const & p_permutation)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 sort_callback_impl_permutation_wrap_t<t_container,t_compare,t_permutation> cb(p_data,p_compare,p_permutation);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 sort(cb,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 template<typename t_container,typename t_compare,typename t_permutation>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 static void sort_stable_get_permutation_t(const t_container & p_data,t_compare p_compare,t_size p_count,t_permutation const & p_permutation)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 sort_callback_impl_permutation_wrap_t<t_container,t_compare,t_permutation> cb(p_data,p_compare,p_permutation);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 sort_stable(cb,p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 }