mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Add _internal field to context
This commit is contained in:
@@ -332,6 +332,9 @@ Context :: struct {
|
|||||||
user_data: any,
|
user_data: any,
|
||||||
user_ptr: rawptr,
|
user_ptr: rawptr,
|
||||||
user_index: int,
|
user_index: int,
|
||||||
|
|
||||||
|
// Internal use only
|
||||||
|
_internal: rawptr,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,17 +54,17 @@ reverse_sort :: proc(data: $T/[]$E) where ORD(E) {
|
|||||||
|
|
||||||
// TODO(bill): Should `sort_by_key` exist or is `sort_by` more than enough?
|
// TODO(bill): Should `sort_by_key` exist or is `sort_by` more than enough?
|
||||||
sort_by_key :: proc(data: $T/[]$E, key: proc(E) -> $K) where ORD(K) {
|
sort_by_key :: proc(data: $T/[]$E, key: proc(E) -> $K) where ORD(K) {
|
||||||
context.user_ptr = rawptr(key);
|
context._internal = rawptr(key);
|
||||||
sort_by(data, proc(i, j: E) -> bool {
|
sort_by(data, proc(i, j: E) -> bool {
|
||||||
k := (proc(E) -> K)(context.user_ptr);
|
k := (proc(E) -> K)(context._internal);
|
||||||
return k(i) < k(j);
|
return k(i) < k(j);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_sort_by_key :: proc(data: $T/[]$E, key: proc(E) -> $K) where ORD(K) {
|
reverse_sort_by_key :: proc(data: $T/[]$E, key: proc(E) -> $K) where ORD(K) {
|
||||||
context.user_ptr = rawptr(key);
|
context._internal = rawptr(key);
|
||||||
sort_by(data, proc(i, j: E) -> bool {
|
sort_by(data, proc(i, j: E) -> bool {
|
||||||
k := (proc(E) -> K)(context.user_ptr);
|
k := (proc(E) -> K)(context._internal);
|
||||||
return k(j) < k(i);
|
return k(j) < k(i);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user