Revert "Merge pull request #1209 from Kelimion/append_error"

This reverts commit c9468adcfd, reversing
changes made to 879a4d49ae.
This commit is contained in:
Jeroen van Rijn
2021-10-06 19:09:28 +02:00
parent c9468adcfd
commit 2e9eec156c
+14 -17
View File
@@ -301,17 +301,17 @@ delete_key :: proc(m: ^$T/map[$K]$V, key: K) -> (deleted_key: K, deleted_value:
return return
} }
@builtin @builtin
append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) -> Allocator_Error { append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) {
if array == nil { if array == nil {
return .None return
} }
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)
if ok := reserve(array, cap, loc); !ok { _ = reserve(array, cap, loc)
return .Out_Of_Memory
}
} }
if cap(array)-len(array) > 0 { if cap(array)-len(array) > 0 {
a := (^Raw_Dynamic_Array)(array) a := (^Raw_Dynamic_Array)(array)
@@ -322,25 +322,23 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) ->
} }
a.len += 1 a.len += 1
} }
return .None
} }
@builtin @builtin
append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) -> Allocator_Error { append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) {
if array == nil { if array == nil {
return .None return
} }
arg_len := len(args) arg_len := len(args)
if arg_len <= 0 { if arg_len <= 0 {
return .Invalid_Argument return
} }
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)
if ok := reserve(array, cap, loc); !ok { _ = reserve(array, cap, loc)
return .Out_Of_Memory
}
} }
arg_len = min(cap(array)-len(array), arg_len) arg_len = min(cap(array)-len(array), arg_len)
if arg_len > 0 { if arg_len > 0 {
@@ -352,22 +350,21 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location)
} }
a.len += arg_len a.len += arg_len
} }
return .None
} }
// 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
append_elem_string :: proc(array: ^$T/[dynamic]$E/u8, arg: $A/string, loc := #caller_location) -> Allocator_Error { append_elem_string :: proc(array: ^$T/[dynamic]$E/u8, arg: $A/string, loc := #caller_location) {
args := transmute([]E)arg args := transmute([]E)arg
return append_elems(array=array, args=args, loc=loc) append_elems(array=array, args=args, loc=loc)
} }
// The append_string built-in procedure appends multiple strings to the end of a [dynamic]u8 like type // The append_string built-in procedure appends multiple strings to the end of a [dynamic]u8 like type
@builtin @builtin
append_string :: proc(array: ^$T/[dynamic]$E/u8, args: ..string, loc := #caller_location) -> Allocator_Error { append_string :: proc(array: ^$T/[dynamic]$E/u8, args: ..string, loc := #caller_location) {
for arg in args { for arg in args {
append(array = array, args = transmute([]E)(arg), loc = loc) or_return append(array = array, args = transmute([]E)(arg), loc = loc)
} }
} }