From: Brendan Hansen Date: Tue, 2 Mar 2021 17:56:54 +0000 (-0600) Subject: added alternate way to do varargs X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=f44003ca4cab356aa2dc7b1a5cd30c6b4bc3b7a8;p=onyx.git added alternate way to do varargs --- diff --git a/bin/onyx b/bin/onyx index d29c4069..9cf22eb9 100755 Binary files a/bin/onyx and b/bin/onyx differ diff --git a/core/builtin.onyx b/core/builtin.onyx index e2ca1eb6..a0733bab 100644 --- a/core/builtin.onyx +++ b/core/builtin.onyx @@ -16,12 +16,22 @@ vararg :: #type ^struct { count: i32; } -vararg_get :: (va: vararg, ret: ^$T) -> bool { - if va.count <= 0 do return false; - *ret = *cast(^T) va.data; - va.data = cast(rawptr) (cast(^u8) va.data + sizeof T); - va.count -= 1; - return true; +vararg_get :: proc { + (va: vararg, ret: ^$T) -> bool { + if va.count <= 0 do return false; + *ret = *cast(^T) va.data; + va.data = cast(rawptr) (cast(^u8) va.data + sizeof T); + va.count -= 1; + return true; + }, + + (va: vararg, $T: type_expr, default: T = 0) -> T { + if va.count <= 0 do return false; + ret := *cast(^T) va.data; + va.data = cast(rawptR) (cast(^u8) va.data + sizeof T); + va.count -= 1; + return res; + } } // HACK: NullProcHack