mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 05:08:14 +00:00
Merge branch 'master' of https://github.com/odin-lang/Odin
This commit is contained in:
@@ -140,3 +140,18 @@ remove :: proc(pq: ^$Q/Priority_Queue($T), i: int) -> (value: T, ok: bool) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
peek_safe :: proc(pq: $Q/Priority_Queue($T), loc := #caller_location) -> (res: T, ok: bool) {
|
||||||
|
if builtin.len(pq.queue) > 0 {
|
||||||
|
return pq.queue[0], true
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
peek :: proc(pq: $Q/Priority_Queue($T), loc := #caller_location) -> (res: T) {
|
||||||
|
assert(condition=builtin.len(pq.queue)>0, loc=loc)
|
||||||
|
|
||||||
|
if builtin.len(pq.queue) > 0 {
|
||||||
|
return pq.queue[0]
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -62,7 +62,7 @@ _sort_by_indices :: proc(data, sorted: $T/[]$E, indices: []int) {
|
|||||||
|
|
||||||
sort_by_indices_overwrite :: proc(data: $T/[]$E, indices: []int) {
|
sort_by_indices_overwrite :: proc(data: $T/[]$E, indices: []int) {
|
||||||
assert(len(data) == len(indices))
|
assert(len(data) == len(indices))
|
||||||
temp := make([]int, len(data), context.allocator)
|
temp := make([]E, len(data), context.allocator)
|
||||||
defer delete(temp)
|
defer delete(temp)
|
||||||
for v, i in indices {
|
for v, i in indices {
|
||||||
temp[i] = data[v]
|
temp[i] = data[v]
|
||||||
|
|||||||
@@ -1792,7 +1792,8 @@ last_index_any :: proc(s, chars: string) -> (res: int) {
|
|||||||
if r >= utf8.RUNE_SELF {
|
if r >= utf8.RUNE_SELF {
|
||||||
r = utf8.RUNE_ERROR
|
r = utf8.RUNE_ERROR
|
||||||
}
|
}
|
||||||
return index_rune(chars, r)
|
i := index_rune(chars, r)
|
||||||
|
return i if i < 0 else 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(s) > 8 {
|
if len(s) > 8 {
|
||||||
|
|||||||
@@ -67,6 +67,18 @@ test_index_any_larger_string_found :: proc(t: ^testing.T) {
|
|||||||
expect(t, index == 8, "index_any should be 8")
|
expect(t, index == 8, "index_any should be 8")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test
|
||||||
|
test_last_index_any_small_string_found :: proc(t: ^testing.T) {
|
||||||
|
index := strings.last_index_any(".", "/:.\"")
|
||||||
|
expect(t, index == 0, "last_index_any should be 0")
|
||||||
|
}
|
||||||
|
|
||||||
|
@test
|
||||||
|
test_last_index_any_small_string_not_found :: proc(t: ^testing.T) {
|
||||||
|
index := strings.last_index_any(".", "/:\"")
|
||||||
|
expect(t, index == -1, "last_index_any should be -1")
|
||||||
|
}
|
||||||
|
|
||||||
Cut_Test :: struct {
|
Cut_Test :: struct {
|
||||||
input: string,
|
input: string,
|
||||||
offset: int,
|
offset: int,
|
||||||
|
|||||||
Reference in New Issue
Block a user