Simplify logic of append of zero sized elements

This commit is contained in:
gingerBill
2022-08-02 11:13:53 +01:00
parent 5168cf03a9
commit e0ecdd4b24
+8 -2
View File
@@ -339,7 +339,9 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) {
if array == nil { if array == nil {
return return
} }
when size_of(E) == 0 {
a.len += 1
} else {
if cap(array) < len(array)+1 { if cap(array) < len(array)+1 {
cap := 2 * cap(array) + max(8, 1) cap := 2 * cap(array) + max(8, 1)
_ = reserve(array, cap, loc) _ = reserve(array, cap, loc)
@@ -354,6 +356,7 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) {
a.len += 1 a.len += 1
} }
} }
}
@builtin @builtin
append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) { append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) {
@@ -366,7 +369,9 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location)
return return
} }
when size_of(E) == 0 {
a.len += arg_len
} else {
if cap(array) < len(array)+arg_len { if cap(array) < len(array)+arg_len {
cap := 2 * cap(array) + max(8, arg_len) cap := 2 * cap(array) + max(8, arg_len)
_ = reserve(array, cap, loc) _ = reserve(array, cap, loc)
@@ -382,6 +387,7 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location)
a.len += arg_len a.len += arg_len
} }
} }
}
// The append_string built-in procedure appends a string to the end of a [dynamic]u8 like type // The append_string built-in procedure appends a string to the end of a [dynamic]u8 like type
@builtin @builtin