2 class comparator_default;
4 template<
typename t_comparator = comparator_default>
8 template<
typename t_container,
typename t_param>
9 static bool run(
const t_container & p_container,
t_size p_base,
t_size p_count,
const t_param & p_param,
t_size & p_result) {
10 t_size max = p_base + p_count;
13 t_size ptr = min + ( (max-min) >> 1);
15 if (state > 0) min = ptr + 1;
16 else if (state < 0) max = ptr;
27 template<
typename t_container,
typename t_param>
29 t_size max = p_base + p_count;
33 t_size ptr = min + ( (max-min) >> 1);
35 if (state > 0) min = ptr + 1;
36 else if (state < 0) max = ptr;
38 found =
true; max = ptr;
45 template<
typename t_container,
typename t_param>
47 t_size max = p_base + p_count;
51 t_size ptr = min + ( (max-min) >> 1);
53 if (state > 0) min = ptr + 1;
54 else if (state < 0) max = ptr;
56 found =
true; min = ptr + 1;
63 template<
typename t_container,
typename t_param>
65 if (!
runGroupBegin(p_container,p_base,p_count,p_param,p_result)) {
70 if (!
runGroupEnd(p_container,p_result,p_count - p_result,p_param,groupEnd)) {
76 PFC_ASSERT(groupEnd > p_result);
77 p_resultCount = groupEnd - p_result;
int compare(t1 const &p1, t2 const &p2)
static bool runGroupBegin(const t_container &p_container, t_size p_base, t_size p_count, const t_param &p_param, t_size &p_result)
static bool run(const t_container &p_container, t_size p_base, t_size p_count, const t_param &p_param, t_size &p_result)
static bool runGroupEnd(const t_container &p_container, t_size p_base, t_size p_count, const t_param &p_param, t_size &p_result)
static bool runGroup(const t_container &p_container, t_size p_base, t_size p_count, const t_param &p_param, t_size &p_result, t_size &p_resultCount)