Add contextless where appropriate

This commit is contained in:
gingerBill
2022-11-11 11:23:59 +00:00
committed by GitHub
parent 79baddc157
commit 035c75d6a9
+17 -17
View File
@@ -8,40 +8,40 @@ Small_Array :: struct($N: int, $T: typeid) where N >= 0 {
} }
len :: proc(a: $A/Small_Array) -> int { len :: proc "contextless" (a: $A/Small_Array) -> int {
return a.len return a.len
} }
cap :: proc(a: $A/Small_Array) -> int { cap :: proc "contextless" (a: $A/Small_Array) -> int {
return builtin.len(a.data) return builtin.len(a.data)
} }
space :: proc(a: $A/Small_Array) -> int { space :: proc "contextless" (a: $A/Small_Array) -> int {
return builtin.len(a.data) - a.len return builtin.len(a.data) - a.len
} }
slice :: proc(a: ^$A/Small_Array($N, $T)) -> []T { slice :: proc "contextless" (a: ^$A/Small_Array($N, $T)) -> []T {
return a.data[:a.len] return a.data[:a.len]
} }
get :: proc(a: $A/Small_Array($N, $T), index: int) -> T { get :: proc "contextless" (a: $A/Small_Array($N, $T), index: int) -> T {
return a.data[index] return a.data[index]
} }
get_ptr :: proc(a: ^$A/Small_Array($N, $T), index: int) -> ^T { get_ptr :: proc "contextless" (a: ^$A/Small_Array($N, $T), index: int) -> ^T {
return &a.data[index] return &a.data[index]
} }
set :: proc(a: ^$A/Small_Array($N, $T), index: int, item: T) { set :: proc "contextless" (a: ^$A/Small_Array($N, $T), index: int, item: T) {
a.data[index] = item a.data[index] = item
} }
resize :: proc(a: ^$A/Small_Array, length: int) { resize :: proc "contextless" (a: ^$A/Small_Array, length: int) {
a.len = min(length, builtin.len(a.data)) a.len = min(length, builtin.len(a.data))
} }
push_back :: proc(a: ^$A/Small_Array($N, $T), item: T) -> bool { push_back :: proc "contextless" (a: ^$A/Small_Array($N, $T), item: T) -> bool {
if a.len < cap(a^) { if a.len < cap(a^) {
a.data[a.len] = item a.data[a.len] = item
a.len += 1 a.len += 1
@@ -50,7 +50,7 @@ push_back :: proc(a: ^$A/Small_Array($N, $T), item: T) -> bool {
return false return false
} }
push_front :: proc(a: ^$A/Small_Array($N, $T), item: T) -> bool { push_front :: proc "contextless" (a: ^$A/Small_Array($N, $T), item: T) -> bool {
if a.len < cap(a^) { if a.len < cap(a^) {
a.len += 1 a.len += 1
data := slice(a) data := slice(a)
@@ -61,14 +61,14 @@ push_front :: proc(a: ^$A/Small_Array($N, $T), item: T) -> bool {
return false return false
} }
pop_back :: proc(a: ^$A/Small_Array($N, $T), loc := #caller_location) -> T { pop_back :: proc "odin" (a: ^$A/Small_Array($N, $T), loc := #caller_location) -> T {
assert(condition=(N > 0 && a.len > 0), loc=loc) assert(condition=(N > 0 && a.len > 0), loc=loc)
item := a.data[a.len-1] item := a.data[a.len-1]
a.len -= 1 a.len -= 1
return item return item
} }
pop_front :: proc(a: ^$A/Small_Array($N, $T), loc := #caller_location) -> T { pop_front :: proc "odin" (a: ^$A/Small_Array($N, $T), loc := #caller_location) -> T {
assert(condition=(N > 0 && a.len > 0), loc=loc) assert(condition=(N > 0 && a.len > 0), loc=loc)
item := a.data[0] item := a.data[0]
s := slice(a) s := slice(a)
@@ -77,7 +77,7 @@ pop_front :: proc(a: ^$A/Small_Array($N, $T), loc := #caller_location) -> T {
return item return item
} }
pop_back_safe :: proc(a: ^$A/Small_Array($N, $T)) -> (item: T, ok: bool) { pop_back_safe :: proc "contextless" (a: ^$A/Small_Array($N, $T)) -> (item: T, ok: bool) {
if N > 0 && a.len > 0 { if N > 0 && a.len > 0 {
item = a.data[a.len-1] item = a.data[a.len-1]
a.len -= 1 a.len -= 1
@@ -86,7 +86,7 @@ pop_back_safe :: proc(a: ^$A/Small_Array($N, $T)) -> (item: T, ok: bool) {
return return
} }
pop_front_safe :: proc(a: ^$A/Small_Array($N, $T)) -> (item: T, ok: bool) { pop_front_safe :: proc "contextless" (a: ^$A/Small_Array($N, $T)) -> (item: T, ok: bool) {
if N > 0 && a.len > 0 { if N > 0 && a.len > 0 {
item = a.data[0] item = a.data[0]
s := slice(a) s := slice(a)
@@ -97,16 +97,16 @@ pop_front_safe :: proc(a: ^$A/Small_Array($N, $T)) -> (item: T, ok: bool) {
return return
} }
consume :: proc(a: ^$A/Small_Array($N, $T), count: int, loc := #caller_location) { consume :: proc "odin" (a: ^$A/Small_Array($N, $T), count: int, loc := #caller_location) {
assert(condition=a.len >= count, loc=loc) assert(condition=a.len >= count, loc=loc)
a.len -= count a.len -= count
} }
clear :: proc(a: ^$A/Small_Array($N, $T)) { clear :: proc "contextless" (a: ^$A/Small_Array($N, $T)) {
resize(a, 0) resize(a, 0)
} }
push_back_elems :: proc(a: ^$A/Small_Array($N, $T), items: ..T) { push_back_elems :: proc "contextless" (a: ^$A/Small_Array($N, $T), items: ..T) {
n := copy(a.data[a.len:], items[:]) n := copy(a.data[a.len:], items[:])
a.len += n a.len += n
} }