|
@@ -13,7 +13,7 @@ Sort_Kind :: enum {
|
|
}
|
|
}
|
|
|
|
|
|
_quick_sort_general :: proc(data: $T/[]$E, a, b, max_depth: int, call: $P, $KIND: Sort_Kind) where (ORD(E) && KIND == .Ordered) || (KIND != .Ordered) #no_bounds_check {
|
|
_quick_sort_general :: proc(data: $T/[]$E, a, b, max_depth: int, call: $P, $KIND: Sort_Kind) where (ORD(E) && KIND == .Ordered) || (KIND != .Ordered) #no_bounds_check {
|
|
- less :: #force_inline proc(a, b: $E, call: $P) -> bool {
|
|
|
|
|
|
+ less :: #force_inline proc(a, b: E, call: P) -> bool {
|
|
when KIND == .Ordered {
|
|
when KIND == .Ordered {
|
|
return a < b
|
|
return a < b
|
|
} else when KIND == .Less {
|
|
} else when KIND == .Less {
|
|
@@ -179,7 +179,7 @@ _quick_sort_general :: proc(data: $T/[]$E, a, b, max_depth: int, call: $P, $KIND
|
|
|
|
|
|
// merge sort
|
|
// merge sort
|
|
_stable_sort_general :: proc(data: $T/[]$E, call: $P, $KIND: Sort_Kind) where (ORD(E) && KIND == .Ordered) || (KIND != .Ordered) #no_bounds_check {
|
|
_stable_sort_general :: proc(data: $T/[]$E, call: $P, $KIND: Sort_Kind) where (ORD(E) && KIND == .Ordered) || (KIND != .Ordered) #no_bounds_check {
|
|
- less :: #force_inline proc(a, b: $E, call: $P) -> bool {
|
|
|
|
|
|
+ less :: #force_inline proc(a, b: E, call: P) -> bool {
|
|
when KIND == .Ordered {
|
|
when KIND == .Ordered {
|
|
return a < b
|
|
return a < b
|
|
} else when KIND == .Less {
|
|
} else when KIND == .Less {
|